如何在Excel中自动检测表
我有一本包含大约40个表格的工作簿。每个文件中的表都非常杂乱无章,因此您永远不知道该表在工作表中的位置。在一些工作表中,您甚至可能有2到3个表。此外,这些表是非常非结构化的,因此您无法知道行索引或列索引始终在哪里。我确实需要在所有表格中循环,首先提取数据,然后计算每个单元格的单元格代码,它是行索引、列索引和表标题的组合 所需输出应如下所示:这意味着,在表04.03.1第005行第010列中,我有数据:132151300如何在Excel中自动检测表,excel,vba,Excel,Vba,我有一本包含大约40个表格的工作簿。每个文件中的表都非常杂乱无章,因此您永远不知道该表在工作表中的位置。在一些工作表中,您甚至可能有2到3个表。此外,这些表是非常非结构化的,因此您无法知道行索引或列索引始终在哪里。我确实需要在所有表格中循环,首先提取数据,然后计算每个单元格的单元格代码,它是行索引、列索引和表标题的组合 所需输出应如下所示:这意味着,在表04.03.1第005行第010列中,我有数据:132151300 {EF04.03.1,r005,c010} 132151300 我使用
{EF04.03.1,r005,c010} 132151300
我使用VBA和命名范围实现了这一点,但问题是每次收到新文件时,我都必须为所有40个表重新定义命名范围。
新文件的结构可能与我已经定义的文件不同,因此我无法简单地将范围从一个工作簿转移到另一个工作簿
关于如何自动识别内容,然后识别列索引/行索引,有什么建议吗?或者其他解决方法 下面是一些代码,用于迭代工作簿中的每个工作表,然后遍历每个表中的每个单元格。messagebox提供工作表名称、表范围、表名称、单元格值、行和列。你没有说明你想把信息放在哪里,但是这会让你得到信息,你只需要决定它放在哪里,并根据你的要求格式化它
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
数据是在实际范围内,还是只是在单元格中挂起数据的随机范围内?这是pb,tha数据不是在实际Excel表格中组织的,而是在单元格中挂起数据的随机范围内组织的。它看起来像一张桌子,但它不是一张桌子。顺便提一下,这是个很棒的问题。我计划制作一个工具来解决这个问题。非常感谢你的回答。首先,我想在另一个工作表中输入一些信息,其中我会有如下内容:{EF04.03.1,r005,c010}{EF04.03.1,r005,c020}132151300