excel vba excel-formula formula textjoin

excel - Concatenar encabezados de columna si el valor en las filas a continuación no está en blanco



vba excel-formula (1)

Tengo una tabla con datos en el formato a continuación.

Data
Data

Quiero que la tabla terminada tenga la columna en blanco para que se rellene como la resaltada a continuación.

Mesa terminada

Por lo tanto, necesito una fórmula o VBA que devuelva y concatene los encabezados de las celdas que no están en blanco en cada fila.


Use¹ lo siguiente como una fórmula de matriz .

=TEXTJOIN("-->", TRUE, IF(LEN(C3:I3), C$2:I$2, ""))

Versiones anteriores a Excel 2016

Si bien podría encadenar una serie de declaraciones IF, una alternativa más limpia podría ser escribir una función definida por el usuario (también conocida como UDF).

En una hoja de códigos del módulo VBA estándar:

Function udf_Stitch_Together(r As Range, _ h As Range, _ Optional d As String = "-->", _ Optional blnks As Boolean = False) As String Dim s As String, c As Long For c = 1 To r.Cells.Count If CBool(Len(r.Cells(c).Text)) Then _ s = s & IIf(Len(s), d, vbNullString) & h.Cells(c).Text Next c udf_Stitch_Together = s End Function

TEXTJOIN se introdujo con Excel 2016 en las siguientes versiones: Excel para teléfonos Android, Excel Mobile, Excel 2016 con Office 365, Excel 2016 para Mac, Excel Online, Excel para iPad, Excel para iPhone y Excel para tableta Android.