
同じワークブック内の 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)
ますCtrl。ShiftEnter
これを行全体にコピーすると、列名が一覧表示されます。数式でエラーが発生し始めると、終わりに達します#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