
No estoy seguro de si esto es posible en una fórmula o si se necesitará VBA, pero tengo el siguiente conjunto de datos:
Quiero tomar valores de A:F, ignorar las celdas vacías y generar el valor en la celda G (incluidos los retornos de carro después de cada par)
Probé una combinación de texto y eso me lleva a una parte del camino, pero convierte todos los valores en una sola cadena. Como puedes ver, necesitan ir A => B B => C C => D
pero ignora los espacios en blanco.
¡Cualquier ayuda apreciada!
Respuesta1
Usar:
=TEXTJOIN(CHAR(10),TRUE,INDEX(FILTER(A1:F1,LEN(A1:F1)>0),SEQUENCE(COUNTA(FILTER(A1:F1,LEN(A1:F1)>0))-1,,1))&" => "&INDEX(FILTER(A1:F1,LEN(A1:F1)>0),SEQUENCE(COUNTA(FILTER(A1:F1,LEN(A1:F1)>0))-1,,2)))
Al usar, INDEX(FILTER(A1:F1,LEN(A1:F1)>0),SEQUENCE(COUNTA(FILTER(A1:F1,LEN(A1:F1)>0))-1,,1))
y INDEX(FILTER(A1:F1,LEN(A1:F1)>0),SEQUENCE(COUNTA(FILTER(A1:F1,LEN(A1:F1)>0))-1,,2))
creamos dos matrices de celdas no vacías, una que comienza con la primera y termina con la penúltima y una segunda que comienza con la segunda y termina con la última.
Luego concatenamos con " => "
y usamos TEXJOIN para agregar el salto de línea.
y copie.
Respuesta2
Yo lo resolvería de la siguiente manera:
Introduzca una línea auxiliar para cada línea de datos que genere el resultado intermedio: T1, T1, T5, T3, T6, T6, T2, T2, T3l, T3, T7.
Regla: "Si la celda está vacía, complete el predecesor" A3: =A1 B3: =if(b1="";a1;b1)
En otra línea auxiliar, puede construir la expresión final de forma acumulativa usando vbCrlf para los saltos de línea: Regla: "si el contenido de la celda cambia, agregue otra subexpresión a la fórmula; si no, repita la fórmula anterior" b4: =if(b3 <>a3;a4 & vbcrlf & a3 & "=>" b3;a4) ...