Excel: 列の見出しを使用してセルデータを別のシートにインポートする

Excel: 列の見出しを使用してセルデータを別のシートにインポートする

同じワークブック内の 1 つのシートから別のシートに情報を取得しようとしています。

ただし、陽性セルをその列名とともに後続のシートにインポートしたいと思います。

例えば:

           |  Example1 | Example2 | Example3
-----------+-----------+----------+----------
List One   |     x     |          |   x
List Two   |     x     |    x     |
List Three |     x     |          |

だから私は

  • シート2で -リスト 1

    • 例1
    • 例3

  • シート3では -リスト2

    • 例1
    • 例2

  • シート4では -リスト3

    • 例1

誰かにとって、それが何らかの意味を持つことを願います。ひどいコーディングで申し訳ありません。

答え1

タイトルは1行目にあり、データは2行目から始まると想定しています

1列目(ここでは行は関係ありません)他のシートでは、この数式を配列数式として入力し=OFFSET(Sheet1!$A$1,0,SMALL(IF(2:2="X",COLUMN(2:2)),COLUMN())-1)ますCtrlShiftEnter

これを行全体にコピーすると、列名が一覧表示されます。数式でエラーが発生し始めると、終わりに達します#NUM!

sheet3では、2:2を3:3に変更し、後続のシートも同様に変更します。

答え2

これにより、行と列の数を増やすことができ、単に「x」だけではなく、任意の値を想定できます。常に「x」であることを確認して、これを簡単に変更できます。また、このシートの名前はリスト名に合わせて付けました。シートを追加しない場合は、その部分を削除できます。

Sub columnsToListSheets()
LastCol = Sheets("Sheet1").UsedRange.Columns.Count
For rowNumber = 2 To 4
i = 1
    ListName = Sheets("Sheet1").Cells(rowNumber, 1)
    Sheets.Add
     NewSheet = ActiveSheet.Name
      Worksheets(NewSheet).Cells(1, 1) = ListName
      'You may want to name the worksheet after the list
      Worksheets(NewSheet).Name = ListName

For colNumber = 2 To LastCol
                                                        '"x" may be good enough to test for
    If Worksheets("Sheet1").Cells(rowNumber, colNumber) <> "" Then
        i = i + 1
        'Worksheets(NewSheet).Cells(i, 1) = Worksheets("Sheet1").Cells(1, colNumber)
        Worksheets(ListName).Cells(i, 1) = Worksheets("Sheet1").Cells(1, colNumber)
    End If

Next colNumber
Next rowNumber
End Sub

関連情報