Excel:使用列标题将单元格数据导入另一张表

Excel:使用列标题将单元格数据导入另一张表

我正尝试将信息从同一张工作簿中的一张工作表传输到另一张工作表。

不过,我希望将正单元格及其列名导入到后续工作表中。

例如:

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

所以我想

  • 在 Sheet2 中 -列表一

    • 示例1
    • 例3

  • 在 Sheet3 中 -清单二

    • 示例1
    • 示例2

  • 在 Sheet4 中 -清单三

    • 示例1

希望这对某些人来说有些道理!抱歉,代码写得很糟糕,rusty rusty rusty!

答案1

我假设你的标题在第 1 行,数据在第 2 行开始

在第一列(此处行不重要)在其他工作表中,使用 ++ 输入此公式作为数组=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

相关内容