ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何利用vba代码根据相同样式表格的数据采集点坐标整理数据?

如何利用vba代码根据相同样式表格的数据采集点坐标整理数据?

作者:绿色风 分类: 时间:2022-08-17 浏览:114
楼主
kevinchengcw
Q: 如何利用vba代码根据相同样式表格的数据采集点坐标整理数据?
A: 代码如下:
  1. Sub test()
  2. Dim Rng As Range, RngS As Range, Rules, ArrS, Arr, N&, I&, T&
  3. Rules = Array(1, 3, 3, 1, 3, 2, 3, 3, 3, 4, 3, 5, 3, 6, 3, 7, 7, 8, 7, 9, 7, 10, 4, 1, 4, 2, 4, 3, 4, 4, 4, 5, 4, 6, 4, 7, 13, 1, 13, 2, 13, 3, 13, 5, 14, 1, 14, 2, 14, 3, 14, 5, 15, 1, 15, 2, 15, 3, 15, 5)  '设定数据采集点坐标,为相对表格标题单元格位置的偏移量,两个一组,分别为行和列的偏移值
  4. T = Int((UBound(Rules) + 1) / 2)  '取得坐标数组项目数的半数值,即坐标点个数
  5. ReDim Arr(1 To T, 1 To 1)  '定义结果数组与坐标点个数相等
  6. ArrS = Worksheets("数据库").UsedRange.Value  '将数据源的使用区域的数据赋值给数组
  7. For N = LBound(ArrS) To UBound(ArrS)  '循环数据源各行
  8.     If Trim(ArrS(N, 1)) = "已婚育龄妇女卡" Then  '如果当前行A列值与表格标题行一致,则
  9.         If Arr(2, UBound(Arr, 2)) <> "" Then ReDim Preserve Arr(1 To T, 1 To UBound(Arr, 2) + 1)  '判断结果数组是否已满,如果已满,则增加一列
  10.         For I = LBound(Arr) To UBound(Arr)  '循环结果数组各行,将对应位置的数据依坐标点位置提取出后放入
  11.             Arr(I, UBound(Arr, 2)) = ArrS(N + Rules((I - 1) * 2), 1 + Rules((I - 1) * 2 + 1))
  12.         Next I
  13.     End If
  14. Next N
  15. With Worksheets("二维表格")
  16.     .Rows("2:" & .Rows.Count).ClearContents  '清空数据区内容
  17.     .[a2].Resize(UBound(Arr, 2), UBound(Arr)) = Application.Transpose(Arr)   '将结果数组转置到数据区中(因行列互换原因)
  18. End With
  19. End Sub
详见附件及素材源帖.
把有大量合并的单元格变为二维表格并提到一些数据.rar
2楼
亡者天下
K哥,厉害

学习一下

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap