ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 提取簿内各表A列不重复值和表名,写入对应B列数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-7-18 12:50 | 显示全部楼层 |阅读模式
提取工作簿内各表A列不重复值到汇总表A列,
提取各工作表名到第一行,
各表B列数据写入汇总表。
附件是样表,实际数据有40多个表,每个表有3000以上的行。
谢谢各位老师!

1980年至2018年4月最新行政区划代码 - 求助.rar

20.25 KB, 下载次数: 31

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-18 12:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
照搬了以前的代码,没有成功。

TA的精华主题

TA的得分主题

发表于 2018-7-18 13:30 | 显示全部楼层
jjmysjg 发表于 2018-7-18 12:52
照搬了以前的代码,没有成功。

黄色的地方搞个双字典,2个字典。

TA的精华主题

TA的得分主题

发表于 2018-7-18 14:24 | 显示全部楼层
自动适应50个表应该没有问题

  1.     Set SHX = Worksheets("汇总")
  2.     Str_coon = "HDR=yes';Data Source =" & ThisWorkbook.FullName     '//OFFICE2003,2007 通用
  3.     StrBT = ""
  4.     StrSH = ""
  5.     For Each SH In Worksheets
  6.         If SH.Name <> SHX.Name Then
  7.             If StrSH <> "" Then StrSH = StrSH & ","
  8.             StrSH = StrSH & SH.Name
  9.             If StrBT <> "" Then StrBT = StrBT & " UNION ALL "
  10.             StrBT = StrBT & "SELECT '" & SH.Name & "' AS 表名"
  11.             StrBT = StrBT & ",行政区划代码,行政区划名称"
  12.             StrBT = StrBT & " FROM [" & SH.Name & "$]"
  13.             StrBT = StrBT & " WHERE NOT 行政区划代码 IS NULL AND LEN(行政区划代码)>0"
  14.         End If
  15.     Next
  16.    
  17.     StrSQL = ""
  18.     StrSQL = StrSQL & "TRANSFORM MAX(行政区划名称)"
  19.     StrSQL = StrSQL & " SELECT 行政区划代码 AS 代码 FROM (" & StrBT & ")"
  20.     StrSQL = StrSQL & " GROUP BY 行政区划代码"
  21.     StrSQL = StrSQL & " PIVOT 表名"
  22.     StrSQL = StrSQL & " IN (" & StrSH & ")"
  23.     SQLARR = GET_SQL_To_Arr(StrSQL, Str_coon, True)
  24.     SHX.Cells.ClearContents
  25.     SHX.Range("A1").Resize(UBound(SQLARR, 1) + 1, UBound(SQLARR, 2) + 1) = SQLARR
复制代码

TA的精华主题

TA的得分主题

发表于 2018-7-18 14:26 | 显示全部楼层
使用的是:SQL的TRANSFORM
现在加了一个表: QQ14885553.rar (30.92 KB, 下载次数: 17)

QQ14885553.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-18 14:47 | 显示全部楼层
opiona 发表于 2018-7-18 14:26
使用的是:SQL的TRANSFORM
现在加了一个表:

谢谢
工作表名为数字与文本混时,RS.Open StrSQL, CN, 1, 3不能运行
比如工作表名为2018年6月,

TA的精华主题

TA的得分主题

发表于 2018-7-18 14:52 | 显示全部楼层
jjmysjg 发表于 2018-7-18 14:47
谢谢
工作表名为数字与文本混时,RS.Open StrSQL, CN, 1, 3不能运行
比如工作表名为2018年6月,

14885553.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-7-18 14:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
jjmysjg 发表于 2018-7-18 14:47
谢谢
工作表名为数字与文本混时,RS.Open StrSQL, CN, 1, 3不能运行
比如工作表名为2018年6月,

字典和数组方法,如图
D1.gif

TA的精华主题

TA的得分主题

发表于 2018-7-18 15:00 | 显示全部楼层
jjmysjg 发表于 2018-7-18 14:47
谢谢
工作表名为数字与文本混时,RS.Open StrSQL, CN, 1, 3不能运行
比如工作表名为2018年6月,

代码
2018-07-18_145820.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-7-18 15:35 | 显示全部楼层
针对你的附件中的表,我试着编了一段代码,因为也是初学,可能会有很多不严谨的地方,仅做参考,不知道能否满足要求。
  1. Sub zz()
  2. Dim m, n, r, i, str As String
  3. Dim ar, br(1 To 1000, 1 To 50)
  4. Dim d1 As Object, d2 As Object
  5. Set d1 = CreateObject("scripting.dictionary")
  6. Set d2 = CreateObject("scripting.dictionary")
  7. For Each sht In Sheets
  8.     If sht.Name <> "汇总" Then
  9.         n = n + 1
  10.         d2(sht.Name) = n
  11.         With sht
  12.             r = .Cells(Rows.Count, 1).End(xlUp).Row
  13.             ar = .Range("a2:b" & r)
  14.         End With
  15.         For i = 1 To UBound(ar)
  16.             If Not d1.exists(ar(i, 1)) Then
  17.                 m = m + 1
  18.                 d1(ar(i, 1)) = m
  19.                 br(m, n) = ar(i, 2)
  20.             Else
  21.                 br(d1(ar(i, 1)), n) = ar(i, 2)
  22.             End If
  23.         Next i
  24.     End If
  25. Next
  26. Sheets("汇总").[a2].Resize(m, 1) = Application.Transpose(d1.keys())
  27. Sheets("汇总").[b1].Resize(1, n) = d2.keys()
  28. Sheets("汇总").[b2].Resize(m, n) = br
  29. End Sub
复制代码


1980年至2018年4月最新行政区划代码 .rar

31.25 KB, 下载次数: 45

评分

3

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 00:47 , Processed in 0.027689 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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