答案 0 :(得分:2)
如果您碰巧可以使用TEXTJOIN
功能,则可以使用以下功能:
F2
中的公式:
=TEXTJOIN(",",TRUE,IF(A2:E2>0,$A$1:$E$1,""))
注1:这是一个数组公式,需要通过 Ctrl Shift Enter 进行确认
注意2:如果无法访问TEXTJOIN
,这将变得更加痛苦,但是对于5列,您可以尝试=IF(A2>0,A$1&",","")&IF(B2>0,B$1&",","")&IF(C2>0,C$1&",","")&IF(D2>0,D$1&",","")&IF(E2>0,E$1&",","")
,但是您可以必须扩展以摆脱尾随逗号
如果以上两个选项都不可行,那么最好的选择是编写UDF。对于此练习,您可以编写一个相当简单的练习:
Public Function TextJoin2(rng1 As Range, rng2 As Range) As String
With Application
Dim arr As Variant: arr = .Evaluate("IF(" & rng1.Address & ">0," & rng2.Address & ","" "")")
TextJoin2 = Replace(.Trim(Join(arr, " ")), " ", ",")
End With
End Function
像这样F2
来调用=TEXTJOIN2(A2:E2,A$1:E$1)
并向下拖动。
答案 1 :(得分:0)
您可以使用=CONCAT(IF(A2:E2>0;$A$1:$E$1&",";""))
作为数组公式,并按 Shift Ctrl Enter 确认。
在您的示例中,将此公式放在F2
单元格中。将该公式扩展到整个范围
这里剩下的就是删除结果字符串末尾的逗号。
完整的公式就是这样
=LEFT(CONCAT(IF(A2:E2>0;$A$1:$E$1&",";""));LEN(CONCAT(IF(A2:E2>0;$A$1:$E$1&",";"")))-1)