我有一个包含大约40个表的工作簿。这些表在每个文件中都非常杂乱无章,因此您永远不知道该表在工作表中的位置。在某些工作表中,您可能有2或3个表。此外,这些表非常非结构化,因此您无法知道行索引或列索引的位置。我需要循环遍历所有表格并首先提取数据,然后为每个单元格计算单元格代码,该单元格代码是行索引,col索引和表格标题的组合。
所需的输出应如下所示:表示在表04.03.1中,row005,column010我有数据:132151300
{EF04.03.1,r005,c010} 132151300
我使用VBA和命名范围来做到这一点,但问题是每次收到新文件时,我都要为所有40个表再次定义命名范围。 新文件可能与我已定义的文件具有相同的结构,因此我无法简单地将范围从一个工作簿传输到另一个工作簿。
有关如何自动识别内容然后col索引/行索引的任何建议?还是其他任何解决方法?
答案 0 :(得分:1)
这是一些代码,用于遍历工作簿中的每个工作表,然后遍历每个表中的每个单元格。消息框提供工作表名称,表格范围,表名称,单元格值,行和列。您没有说明您希望信息的去向,但这样可以获取信息,您只需要决定它的去向并根据您的要求进行格式化。
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