导航:首页 > 数据分析 > 怎么用vba汇总三个汇总表数据

怎么用vba汇总三个汇总表数据

发布时间:2024-11-10 16:25:14

Ⅰ Excel濡備綍楂樻晥姹囨诲氫釜宸ヤ綔绨挎暟鎹锛熶竴鏂囩粰浣犺叉竻妤氾紒銆愰檮瀹屾暣鐨刅BA浠g爜銆佷娇鐢ㄨ嗛戙

鍦‥xcel鐨勪笘鐣岄噷锛屾暟鎹鏁村悎鏄涓椤逛笉鍙鎴栫己鐨勬妧鑳姐傚綋浣犻渶瑕侀珮鏁堝湴姹囨诲氫釜宸ヤ綔绨夸腑鐨勬暟鎹锛屽彲鑳戒細閬囧埌鏍煎紡涓嶇粺涓鍜屾爣棰樿屽勭悊鐨勬寫鎴樸傚埆鎷呭績锛岃繖绡囨寚鍗楀皢涓轰綘鎻绀哄備綍閫氳繃VBA缂栫▼瀹炵幇杩欎竴鐩鏍囷紝鍚屾椂闄勪笂瀹炵敤鐨勪唬鐮佺ず渚嬪拰鎿嶄綔瑙嗛戯紝璁╀綘鐨勫伐浣滄洿鍔犲緱蹇冨簲鎵嬨


1. 鏁版嵁鏁村悎鐨勯粍閲戞硶鍒


棣栬佸師鍒欐槸纭淇濇墍鏈夊伐浣滅翱鐨勬牸寮忓拰鏍囬樿屼繚鎸佷竴鑷达紝鍚﹀垯鍙鑳戒細褰卞搷鏁版嵁鐨勫噯纭鎬у拰鍙鐢ㄦс傝繖鏄浣犵殑鏁版嵁闆嗘垚涔嬫梾鐨勮捣璺戠嚎銆


2. VBA缂栫▼澶ф樉韬鎵


璁╂垜浠娣卞叆鎺㈣ㄥ備綍缂栧啓VBA鑴氭湰鏉ヨ嚜鍔ㄥ寲杩欎釜杩囩▼銆傝繖閲屾湁涓ょ嶆柟娉曚緵浣犻夋嫨锛



  1. 涓绛夐毦搴︼細鍚堝苟N涓宸ヤ綔绨胯嚦涓涓姹囨昏〃

    • 鎴戜滑鎻愪緵涓浠借﹀敖鐨刅BA浠g爜绀轰緥锛屽畠鍖呮嫭鑾峰彇鏂囦欢澶硅矾寰勭殑Private Sub銆侀愪釜鎵撳紑宸ヤ綔绨垮苟澶嶅埗鏁版嵁鐨凷ub 鍚堝苟宸ヤ綔绨匡紝浠ュ強澶勭悊鏍囬樿岀殑閫昏緫銆

    • 瑙嗛戞暀绋嬪凡缁忎负浣犲噯澶囧ソ浜嗭紝璁╁︿範杩囩▼鏇村姞鐩磋傛槗鎳傦細[瑙嗛戦摼鎺](https://www.hu.com/video/1655487718032310272)




鎿嶄綔姝ラゅ備笅锛



  1. 鎵撳紑姣忎釜宸ヤ綔绨匡紝灏嗘暟鎹绮惧噯澶嶅埗鍒版眹鎬诲伐浣滆〃鐨勬柊瀛愯〃涓銆

  2. 鍒╃敤VBA鐨勫己澶у姛鑳斤紝閫氳繃Dir鍜孖nputBox鑾峰彇鏂囦欢澶硅矾寰勶紝閫愪竴澶勭悊姣忎釜宸ヤ綔绨匡紝纭淇濇暟鎹鍖哄煙琚澶嶅埗鍒版眹鎬诲伐浣滆〃鐩稿簲浣嶇疆銆

  3. 鏍囬樿岀殑澶勭悊鍒欐牴鎹杈撳叆杩涜岃皟鏁达紝棣栨″寘鍚锛屽悗缁鍒欐牴鎹闇姹傝嚜鍔ㄩ傚簲銆


3. 瀹炴垬搴旂敤涓庨毦搴﹁瘎浼


杩欎釜浠诲姟鐨勯毦搴﹁瘎鍒嗕负⭐️⭐️⭐️锛屾剰鍛崇潃瀹冩棦闇瑕佷竴浜涘熀纭鐨刅BA鐭ヨ瘑锛屼篃鑰冮獙浜嗘暟鎹澶勭悊鍜岄昏緫鎬濈淮銆傚傛灉浣犳e湪澶勭悊10涓鎴栨洿灏戠殑宸ヤ綔绨匡紝杩欏皢鏄涓涓鐞嗘兂鐨勫疄璺甸」鐩銆


4. 姹囨绘垚鏋滀笌瀛︿範璧勬簮


瀹屾垚鏁版嵁鏁村悎鍚庯紝浣犲皢鐪嬪埌涓涓鏁存磥鐨勬眹鎬诲伐浣滆〃锛屾竻鏅板湴灞曠ず浜嗘墍鏈変俊鎭銆傝嗛戞暀绋嬩笉浠呮紨绀轰簡鏁翠釜杩囩▼锛岃繕鎻愪緵浜嗚В绛旂枒闂鍜岃繘闃舵妧宸х殑棰濆栧府鍔┿傝块棶[閾炬帴](瑙嗛戦摼鎺)浠ヨ幏鍙栨洿澶氳︾粏鎸囧煎拰VBA杩涢樁鎶宸э紝濡係QL鍩虹鐭ヨ瘑銆乂BA鍩虹銆丒xcel鎻掍欢鐨勮繍鐢ㄧ瓑銆


娆蹭簡瑙f洿澶氬疄鐢ㄦ暀绋嬪拰鑱屼笟鍙戝睍寤鸿锛屼笉濡ㄥ叧娉ㄦ垜浠鐨勪笓瀹跺崥涓伙細[鑱屽満鑰侀笩涓婚〉](https://www.example.com/yourexpert)锛岄偅閲屾湁涓板瘜鐨勮祫婧愮瓑寰呬綘鍘绘帰绱銆


鐜板湪锛屼綘宸茬粡鎺屾彙浜咵xcel鏁版嵁姹囨荤殑VBA绉樼睄锛屽噯澶囧紑濮嬩綘鐨勯珮鏁堟暣鍚堜箣鏃呭惂锛

Ⅱ 求VBA合并多个excel表格,并且分类汇总求和

合并表格用vba,合并数据再用power query,分了两步,这样比较省事。

VBA代码

Sub hebing()

Dim 行号%, 路径$, 文件$, WB As Workbook, SHT As Worksheet

Application.ScreenUpdating = 0

Worksheets("Sheet1").Cells.Clear

Worksheets("Sheet1").Range("A1:C1") = Array("姓名", "数量", "金额")

路径 = "C: est合并"

ChDir 路径

文件 = Dir("*.xlsx")

行号 = 2

Do Until 文件 = ""

Set WB = GetObject(路径 & 文件)

Set SHT = WB.Worksheets(1)

SHT.Range("A2:C" & SHT.UsedRange.Rows.Count).Copy

ThisWorkbook.Worksheets("Sheet1").Cells(行号, 1).PasteSpecial

行号 = ThisWorkbook.Worksheets("Sheet1").UsedRange.Rows.Count + 1

WB.Close

文件 = Dir

Loop

Set WB = Nothing

Sheet1.Select

Sheet1.UsedRange.Select

Sheet1.ListObjects.Add(xlSrcRange).Name = "合并"

Sheet2.[a1].ListObject.QueryTable.Refresh

Application.ScreenUpdating = 1

End Sub


PowerQuery代码:

let

源 = Excel.CurrentWorkbook(){[Name="合并"]}[Content],

分组的行 = Table.Group(源, {"姓名"}, {{"数量", each List.Sum([数量]), type number}, {"金额", each List.Sum([金额]), type number}})

in

分组的行


操作方法:

Ⅲ VBA汇总统一文件夹下的多个表格的数据

大家好,今天继续讲解《VBA数据库解决方案》,今日讲解的是第37讲,利用ADO,实现同一文件夹下多个EXCEL工作表的数据汇总。最近的内容实用性比较强,如今日的内容,只把需要汇总的EXCEL文件放在同一个文件夹下,而且格式一致,那么利用ADO汇总这几个文件的数据是非常快的,这讲的内容和第32讲的内容是类似的,不过第32讲的内容是要事先知道文件的名称,然后建立一个数组来分别对应每个文件,通过循环来实现从每个文件中提取数据的目的,本讲的内容是事先不知道每个文件的名称。
实例:在一个文件夹下有若干个文件,如下图:
我们现在,需要把上面的文件夹中除了“VBA与数据库操作”之外的各个文件的内容一次性汇总出来,这个VBA程序该如何写呢?代码如下:
Sub mynzexcels_6()
'第37讲,利用ADO,实现同一文件夹下EXCEL工作表数据的汇总
Dim cnADO As Object
Dim strPath, strTable, strSQL, Z As String
Set cnADO = CreateObject("ADODB.Connection")
Range("a:g").ClearContents
Range("a1:e1") = Array("日期", "型号", "批号", "出库数量", "库存数量")
Z = Dir(ThisWorkbook.Path & "\*.*")
strPath = ThisWorkbook.Path & "\" & Z
strTable = "[sheet1$A2:h65536]"
'建立连接,提取数据
x = 2
Do While Z <> ""
If Z <> "VBA与数据库操作.xlsm" Then
cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 8.0;hdr=no;imex=1';data source=" & strPath
strSQL = "select F1,F2,F3,F4,F5 from " & strTable
Range("A" & x).CopyFromRecordset cnADO.Execute(strSQL)
x = Range("b65536").End(xlUp).Row
cnADO.Close
End If
Z = Dir
Loop
Set cnADO = Nothing
End Sub
代码截图:
代码讲解:
1 Z = Dir(ThisWorkbook.Path & "\*.*") 其中DIR函数用来指定文件名的字符串表达式,可能包含目录或文件夹、以及驱动器。如果没有找到 pathname,则会返回零长度字符串 ("")。
2 strPath = ThisWorkbook.Path & "\" & Z
strTable = "[sheet1$A2:h65536]"
上述代码分别给出了文件的路径名称和数据表的范围,数据的范围是sheet1工作表除去表头后的全部$A2:h65536.
3 strSQL = "select F1,F2,F3,F4,F5 from " & strTable
Range("A" & x).CopyFromRecordset cnADO.Execute(strSQL)
建立连接后把需要的数据拷贝出来,需要的数据是第1列,第2列,第3列,第4列 ,第5列
4 x = Range("b65536").End(xlUp).Row 下次复制的位置确定.
5 Z = Dir
特别注意:第一次调用 Dir 函数时,必须指定 pathname,否则会产生错误。如果也指定了文件属性,那么就必须包括 pathname。Dir 会返回匹配 pathname 的第一个文件名。若想得到其它匹配 pathname 的文件名,再一次调用 Dir,且不要使用参数。如果已没有合乎条件的文件,则 Dir 会返回一个零长度字符串 ("")。一旦返回值为零长度字符串,并要再次调用 Dir 时,就必须指定 pathname,否则会产生错误。不必访问到所有匹配当前 pathname 的文件名,就可以改变到一个新的 pathname 上。但是,不能以递归方式来调用 Dir 函数。以 vbDirectory 属性来调用 Dir 不能连续地返回子目录。由于文件名并不会以特别的次序来返回,所以可以将文件名存储在一个数组中,然后再对这个数组排序。
上述的Z=dir 就是实现的下一个文件名的调用。
下面看运行的结果:
点击“ADO实现同文件夹下所有文件数据汇总”按钮:
汇总后再A到E列给出了数据的汇总:
今日内容回向:
1 在不知道文件名和文件个数的前提下,如何汇总文件?
2 DIR函数的意义是否理解?

阅读全文

与怎么用vba汇总三个汇总表数据相关的资料

热点内容
ps入门必备文件 浏览:348
以前的相亲网站怎么没有了 浏览:15
苹果6耳机听歌有滋滋声 浏览:768
怎么彻底删除linux文件 浏览:379
编程中字体的颜色是什么意思 浏览:534
网站关键词多少个字符 浏览:917
汇川am系列用什么编程 浏览:41
笔记本win10我的电脑在哪里打开摄像头 浏览:827
医院单位基本工资去哪个app查询 浏览:18
css源码应该用什么文件 浏览:915
编程ts是什么意思呢 浏览:509
c盘cad占用空间的文件 浏览:89
不锈钢大小头模具如何编程 浏览:972
什么格式的配置文件比较主流 浏览:984
增加目录word 浏览:5
提取不相邻两列数据如何做图表 浏览:45
r9s支持的网络制式 浏览:633
什么是提交事务的编程 浏览:237
win10打字卡住 浏览:774
linux普通用户关机 浏览:114

友情链接