我有一本工作簿,其中包含大约 40 个表格。每个文件中的表格都非常混乱,因此您永远不知道表格可能位于工作表中的位置。在某些工作表中,您甚至可能有 2 个或 3 个表。此外,这些表非常非结构化,因此您无法知道行索引或列索引总是在哪里。我确实需要循环遍历所有工作表并首先提取数据,然后计算每个单元格的单元格代码,该单元格代码是行索引、列索引和表标题的组合。
所需的输出应如下所示: 这意味着,在表 04.03.1,row005,column010 中,我有数据:132151300
{EF04.03.1,r005,c010} 132151300
我使用 VBA 和命名范围做到了这一点,但问题是每次收到新文件时,我都必须为所有 40 个表再次定义命名范围。
新文件的结构可能与我已经定义的文件不同,因此我无法简单地将范围从一个工作簿转移到另一个工作簿。
关于如何自动识别内容然后列索引/行索引有什么建议吗?或者还有其他解决方法吗?
下面是一些代码,用于迭代工作簿中的每个工作表,然后遍历每个表中的每个单元格。消息框给出工作表名称、表格范围、表格名称、单元格值、行和列。您没有说明您想要信息的去向,但这将为您提供信息,您只需决定信息的去向并根据您的要求格式化它。
Sub FindAllTablesinWB()
Dim oSh As Worksheet
Dim oLo As ListObject
Dim wb As Workbook
Set wb = ActiveWorkbook
For Each oSh In wb.Worksheets
For Each oLo In oSh.ListObjects
For col = 1 To oLo.ListColumns.Count
For rw = 2 To oLo.ListRows.Count
MsgBox "Table: " & oSh.Name & ", " & oLo.Range.address & ", " & oLo.Name & ", " & oLo.Range.Cells(rw, col).Value & ", " & "Row " & rw & " Column " & col
Next rw
Next col
Next oLo
Next oSh
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)