如何在Excel中自动检测表

如何在Excel中自动检测表,excel,vba,Excel,Vba,我有一本包含大约40个表格的工作簿。每个文件中的表都非常杂乱无章,因此您永远不知道该表在工作表中的位置。在一些工作表中,您甚至可能有2到3个表。此外,这些表是非常非结构化的,因此您无法知道行索引或列索引始终在哪里。我确实需要在所有表格中循环,首先提取数据,然后计算每个单元格的单元格代码,它是行索引、列索引和表标题的组合 所需输出应如下所示:这意味着,在表04.03.1第005行第010列中,我有数据:132151300 {EF04.03.1,r005,c010} 132151300 我使用

我有一本包含大约40个表格的工作簿。每个文件中的表都非常杂乱无章,因此您永远不知道该表在工作表中的位置。在一些工作表中,您甚至可能有2到3个表。此外,这些表是非常非结构化的,因此您无法知道行索引或列索引始终在哪里。我确实需要在所有表格中循环,首先提取数据,然后计算每个单元格的单元格代码,它是行索引、列索引和表标题的组合

所需输出应如下所示:这意味着,在表04.03.1第005行第010列中,我有数据: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