如果以下行中的值非空,则连接列标题

我有以下格式的数据表。

数据
在这里输入图像说明

我想要完成的表有空白的列填充像下面突出显示的一个。

完成表
在这里输入图像说明

所以,我需要一个公式或VBA,将返回并连接每行中非空白单元格的标题。

使用以下¹作为数组公式

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

在这里输入图像说明

Pre-Excel 2016版本

虽然你可以把一系列的IF语句串起来,但一个更干净的替代品可能是编写一个用户定义的函数(又名UDF)。

在一个标准的VBA模块代码表中:

 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在Excel 2016中引入了以下版本: 适用于Android手机的Excel,适用于Mac OS X的Excel 2016,适用于Mac的Excel 2016,适用于Mac的Excel 2016,适用于iPad的Excel,适用于iPhone的Excel和适用于Android平板电脑的Excel。