2017-11-30 12 views
0

約40のテーブルを含むブックがあります。表はすべてのファイルで非常に混乱しているため、表がワークシート内のどこにあるかわかりません。いくつかのワークシートでは、2つまたは3つのテーブルさえあるかもしれません。さらに、表は非常に構造化されていないため、常に行の索引または列の索引を知ることはできません。私はすべてのSheetsをLoopする必要があります。最初にデータを抽出し、行インデックス、colインデックス、テーブルのタイトルの組み合わせであるセルコードをすべてのセルについて計算します。 132151300Excelでテーブルを自動的に検出する方法

{EF04.03.1,r005,c010} 132151300 

私はVBAを使用し、範囲の名前が、しても問題があることでなかったこと:column010私はデータを持っている、テーブル04.03.1、row005で、意味:

所望の出力は次のようになりもの私が新しいファイルを受け取るたびに、名前をつけた範囲をすべての40のテーブルに対して再度定義する必要があります。 新しいファイルは、既に定義したものと同じ構造ではないため、あるブックから別のブックに範囲を単純に転送することはできません。

どのように私は自動的にコンテンツを識別し、colインデックス/行インデックスを識別できますか?または他の回避策ですか?

+0

実際のデータである(https://support.office.com/en-us/article/Overview-of-Excel-tables-7ab0bb7d-3a9e-4b56-a3c9-6c94334e492c)[表をエクセル] 、またはセル内にデータがぶら下がっているランダムな範囲のみ? – JNevill

+0

これはpbです。そのデータは実際のExcelテーブルでは組織化されていませんが、セル内にデータがぶら下がっているランダムな範囲です。それはテーブルのように見えますが、テーブルではありません。 –

答えて

0

ブック内の各シートを繰り返し処理し、各テーブルの各セルに移動するコードです。メッセージボックスには、シート名、表範囲、表名、セルの値、行と列が表示されます。あなたは情報をどこに行きたいのかを明記していませんでしたが、情報が得られます。どこに行くのかを決めるだけで、あなたの要件に合わせてフォーマットする必要があります。

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 
+0

こんにちはmooseman、私はこのような何かを持っている別のワークシートの情報を覚えて、私はあなたの答えを大変ありがとう:{EF04.03.1、r005、c010} {EF04.03.1、r005、c020} 132151300 –

関連する問題