Cómo concatenar varios valores de las últimas celdas que no están en blanco de columnas contiguas

Cómo concatenar varios valores de las últimas celdas que no están en blanco de columnas contiguas

Me gusta saber cómo usar la fórmula de Excel para unir múltiples valores de las últimas celdas que no están en blanco de columnas contiguas de manera ordenada, es decir, mis valores esperados están resaltados en verde en las ilustraciones. Ilustración

ingrese la descripción de la imagen aquí

Sé cómo obtener los últimos valores de celda que no están en blanco de una columna aplicando

=IFERROR(LOOKUP(2,1/(INDIRECT("A1:A"&ROW())<>""),INDIRECT("A1:A"&ROW())),"")

También supe cómo unir múltiples valores aplicando

=TEXTJOIN("",TRUE,G4:L4)

Las posibles formas en las que podría pensar son:

  1. transformar los datos de origen de una matriz 2D a una matriz 1D y devolverlos como fórmula matricial; Mi idea es aplicar una fórmula y luego poder completar esos valores de celda en blanco con la última celda que no esté en blanco.

Fórmula fuente ={1,0,0;0,2,0;0,0,3;4,0,0;0,5,0;0,0,6} Retorno de matriz después de aplicar la fórmula ={1,0 ,0;1,2,0;1,2,3;4,0,0;4,5,0;4,5,6}

  1. utilizar matriz si;
  2. bucle por fila en lugar de columnas.

Pero no logro desarrollar una fórmula adecuada.

Cualquier ayuda sería apreciada. Gracias.

La solución para los personajes se indica en el enlace. Solución en caso de personaje.

Respuesta1

Si sus datos son como los muestra, con una sola entrada en cada una de las cuatro columnas de una fila, entonces:

E1: =A1
E2: =TEXTJOIN("",,IF(A2="", E1,""),A2:D2)

y llenar

ingrese la descripción de la imagen aquí

EditarDado su ejemplo actualizado de entrada y salida:
Esto se puede lograr utilizando Power Query, disponible en Windows Excel 2010+ y Excel 365 (Windows o Mac)

Para utilizar Power Query

  • Seleccione alguna celda en su tabla de datos
  • Data => Get&Transform => from Table/Range
  • Cuando se abre el Editor PQ:Home => Advanced Editor
  • Tome nota de la tablaNombreen la línea 2
  • Pega el código M a continuación en lugar de lo que ves
  • Cambie el nombre de la tabla en la línea 2 al que se generó originalmente.
  • Lea los comentarios y explore Applied Stepspara comprender el algoritmo.

El algoritmo básico consiste en llenar las filas; las columnas hacia abajo y luego devolver una lista de las distintas entradas de cada fila.

Código M

let

//Change next line to reflect your actual data source (table name)
    Source = Excel.CurrentWorkbook(){[Name="Table14"]}[Content],

//set the data types to text
    #"Changed Type" = Table.TransformColumnTypes(Source,
        List.Transform(Table.ColumnNames(Source), each {_, type text})),

//Fill across all rows, then down all columns
    #"Transposed Table" = Table.Transpose(#"Changed Type"),
    fillRows = Table.FillDown(#"Transposed Table", Table.ColumnNames(#"Transposed Table")),

    #"Transposed Table1" = Table.Transpose(fillRows),
    fillCols = Table.FillDown(#"Transposed Table1", Table.ColumnNames(#"Transposed Table1")),

//Results column combines the Distinct entries only in each of the four columns
    #"Added Custom" = Table.AddColumn(fillCols, "Output", 
        each Text.Combine(List.Distinct({[Column1],[Column2],[Column3],[Column4]}),""), type text),

//Remove uneeded columns
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Column1", "Column2", "Column3", "Column4"})
in
    #"Removed Columns"

ingrese la descripción de la imagen aquí

información relacionada