ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 269|回复: 7

求助个数据求和问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-5-11 22:34 | 显示全部楼层 |阅读模式
求助个数据求和问题,各位置老师帮忙看下。。。。

求数量.zip

8.7 KB, 下载次数: 16

TA的精华主题

TA的得分主题

发表于 2024-5-12 06:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-5-12 06:17 | 显示全部楼层
  1. Option Explicit
  2. ' SQL实现比字典更简洁
  3. Sub SqlQuery()
  4.     Dim conn As Object, rst As Object, strSQL$, i&, PathStr$, sht As Worksheet
  5.     Set conn = CreateObject("ADODB.Connection")
  6.     Set rst = CreateObject("ADODB.Recordset")
  7.     PathStr = ThisWorkbook.FullName                                     '路径
  8.     Dim rBlank As Range, rCol As Range
  9.     Set rCol = Sheets("Sheet2").UsedRange.Columns(1)
  10.     On Error Resume Next
  11.     Set rBlank = rCol.SpecialCells(Excel.xlBlanks)
  12.     On Error GoTo 0
  13.     If Not rBlank Is Nothing Then
  14.         rBlank.FormulaR1C1 = "=R[-1]C"
  15.         rCol.Value = rCol.Value
  16.     End If
  17.     Select Case Application.Version * 1
  18.     Case Is <= 11
  19.         conn.Open "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & PathStr & ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=0'"
  20.     Case Is >= 12
  21.         conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathStr & ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=0'"
  22.     End Select
  23.     strSQL = "select e.序号, e.姓名, f.qua as 数量 from [Sheet1$] as e left outer join ( select c.姓名, sum(d.数量) as qua from (select b.姓名, a.序号 & b.产品 as product from [Sheet1$] as a inner join [Sheet2$] as b on a.姓名=b.姓名) as c inner join [Sheet3$] as d on d.产品=c.product group by c.姓名) as f on e.姓名 = f.姓名"
  24.     rst.Open strSQL, conn, 1, 1

  25.     Set sht = Worksheets.Add(ActiveSheet)
  26.     With sht
  27.         For i = 0 To rst.Fields.Count - 1
  28.             .Cells(1, i + 1) = rst.Fields(i).Name
  29.         Next i
  30.         .Range("a2").CopyFromRecordset rst
  31.     End With
  32.     With Sheets("Sheet1").UsedRange.Columns(3)
  33.         .Value = sht.Range(.Address).Value
  34.     End With
  35.     Application.DisplayAlerts = False
  36.     sht.Delete
  37.     Application.DisplayAlerts = True
  38.     rst.Close:    conn.Close:    Set conn = Nothing:    Set rst = Nothing
  39. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2024-5-12 08:34 | 显示全部楼层
本帖最后由 EHGOOD 于 2024-5-12 09:57 编辑

image.png

求数量.7z

22.59 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2024-5-12 08:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
建议你把表格做规范点,1牛1猪的,感觉太随意了。最好能上真实的数据表。

TA的精华主题

TA的得分主题

发表于 2024-5-12 09:26 | 显示全部楼层
  1. Sub test0() '删除 表一 表二 表三 字样,以免干扰数据装入数组
  2.   Dim ar, br, cr, dict As Object
  3.   Dim i As Long, s As String, Flag As Boolean
  4.   Set dict = CreateObject("Scripting.DictionAry")
  5.   ar = Range("B1").CurrentRegion.Value
  6.   For i = 2 To UBound(ar)
  7.     dict.Add ar(i, 2), Array(i, ar(i, 1))
  8.     ar(i, 3) = 0
  9.   Next
  10.   br = Range("M1").CurrentRegion.Value
  11.   For i = 1 To UBound(br)
  12.     dict(br(i, 1)) = dict(br(i, 1)) + Val(br(i, 2))
  13.   Next
  14.   br = Range("H1").CurrentRegion.Value
  15.   For i = 1 To UBound(br)
  16.     If Len(br(i, 1)) Then
  17.       s = br(i, 1)
  18.       Flag = dict.Exists(s)
  19.       If Flag Then cr = dict(s)
  20.     End If
  21.     If Flag Then ar(cr(0), 3) = ar(cr(0), 3) + dict(cr(1) & br(i, 2))
  22.   Next
  23.   Range("B1").CurrentRegion.Value = ar
  24.   Set dict = Nothing
  25.   Beep
  26. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-12 10:47 | 显示全部楼层
谢谢以上几位大佬。。。。。

TA的精华主题

TA的得分主题

发表于 2024-5-12 11:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
感觉这个问题的需求不是很明确,最终的结果是需要绿色区域和蓝色区域吗?还是只需要绿色区域?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 09:53 , Processed in 0.046494 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表