Excel: importar datos de celda a otra hoja usando el encabezado de la columna

Excel: importar datos de celda a otra hoja usando el encabezado de la columna

Estoy intentando llevar información de una hoja a otra en el mismo libro.

Sin embargo, me gustaría que las celdas positivas se importen a las hojas subsecuentes con el nombre de su columna.

Por ejemplo:

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

Entonces me gustaría

  • en Hoja2 -Lista uno

    • Ejemplo 1
    • Ejemplo3

  • En Hoja3 -Lista dos

    • Ejemplo 1
    • Ejemplo2

  • En la Hoja 4 -Lista tres

    • Ejemplo 1

¡Espero que eso tenga algún tipo de sentido para alguien! ¡Perdón por la terrible codificación, oxidado, oxidado, oxidado!

Respuesta1

Supongo que sus títulos están en la fila 1 y los datos comienzan en la fila 2.

En la 1ra columna(la fila no importa aquí)de sus otras hojas, ingrese esta fórmula =OFFSET(Sheet1!$A$1,0,SMALL(IF(2:2="X",COLUMN(2:2)),COLUMN())-1)como una fórmula matricial con Ctrl+ Shift+Enter

Copie esto en la fila y enumerará los nombres de las columnas. El final se alcanza cuando la fórmula empieza a dar #NUM!errores.

Para la hoja 3, cambie 2:2 a 3:3 y así sucesivamente para las hojas siguientes.

Respuesta2

Esto le permite tener una mayor cantidad de filas y columnas y asume cualquier cosa en lugar de solo "x". Puede estar seguro de que siempre es "x" y cambiar esto con bastante facilidad. También hice estas hojas de nombres según el nombre de su lista. Si no se pueden agregar hojas, puede eliminar esa 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

información relacionada