Excel: importando dados de células para outra planilha usando o cabeçalho da coluna

Excel: importando dados de células para outra planilha usando o cabeçalho da coluna

Estou tentando levar informações de uma planilha para outra na mesma pasta de trabalho.

Porém, gostaria que as células positivas fossem importadas para as planilhas subsequenciais com o nome de sua coluna.

Por exemplo:

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

Então eu gostaria

  • na Planilha2 -Lista Um

    • Exemplo 1
    • Exemplo3

  • Na Folha3 -Lista dois

    • Exemplo 1
    • Exemplo2

  • Na Folha4 -Lista três

    • Exemplo 1

Espero que isso faça algum sentido para alguém! Desculpe pela codificação terrível, enferrujado enferrujado!

Responder1

Presumo que seus títulos estejam na linha 1 e os dados comecem na linha 2

Na 1ª coluna(linha não importa aqui)de suas outras planilhas, insira esta fórmula =OFFSET(Sheet1!$A$1,0,SMALL(IF(2:2="X",COLUMN(2:2)),COLUMN())-1)como uma fórmula de matriz com Ctrl+ Shift+Enter

copie isso na linha e ele listará os nomes das colunas. O final é alcançado quando a fórmula começa a apresentar #NUM!erros.

Para a planilha3, altere 2:2 para 3:3 e assim por diante para as planilhas subsequentes

Responder2

Isso permite que você tenha um número maior de linhas e colunas e assume qualquer coisa em vez de apenas "x". Você pode ter certeza de que é sempre "x" e alterar isso facilmente. Também fiz essas folhas de nomes de acordo com o nome da lista. Se a adição de folhas não ocorrer, você poderá remover essa parte.

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

informação relacionada