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

Eli*_*ssa 3 excel vba formula excel-formula textjoin

我有以下格式的数据表.

数据
在此输入图像描述

我希望已完成的表具有要填充的空白列,如下面突出显示的那样.

完成表
在此输入图像描述

因此,我需要一个公式或VBA,它将返回并连接每行中非空单元格的标题.

小智 6

使用¹以下作为数组公式.

=TEXTJOIN("-->", TRUE, IF(LEN(C3:I3), C$2:I$2, ""))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


¹ TEXTJOIN是用Excel 2016中引入了以下版本:Excel的Android手机,Excel Mobile中时,Excel 2016的Office 365时,Excel 2016的Mac,Excel的在线时,Excel的iPad,Excel的iPhone和Excel的Android平板电脑.