Excel 如何根据条件附加到文本
如何基于上一列的值在结果列中创建公式Excel 如何根据条件附加到文本,excel,vba,excel-formula,user-defined-functions,Excel,Vba,Excel Formula,User Defined Functions,如何基于上一列的值在结果列中创建公式 如果前面任何列(从c1到c5)中的值大于零,我想将其添加到结果中。如果您碰巧可以访问TEXTJOIN函数,则可以使用以下选项: F2中的公式: =TEXTJOIN(",",TRUE,IF(A2:E2>0,$A$1:$E$1,"")) 注1:这是一个数组公式,需要通过CtrlShift Center确认 注意2:如果不访问TEXTJOIN这将成为一个痛苦得多的过程,但对于这5列,您可以尝试=IF(A2>0,a$1&“,”,”)&IF(B2>0,B$
如果前面任何列(从c1到c5)中的值大于零,我想将其添加到结果中。如果您碰巧可以访问
TEXTJOIN
函数,则可以使用以下选项:
F2中的公式:
=TEXTJOIN(",",TRUE,IF(A2:E2>0,$A$1:$E$1,""))
注1:这是一个数组公式,需要通过CtrlShift Center确认
注意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)
并向下拖动。您可以使用=CONCAT(如果(A2:E2>0;$A$1:$E$1&>,“;”)
作为数组公式,用移位寄存器确认。
将此公式放入示例中的F2
单元格中。将公式扩展到整个范围
这里剩下的是删除结果字符串末尾的逗号
完整的公式是这样的
=LEFT(CONCAT(IF(A2:E2>0;$A$1:$E$1&“,”;”);LEN(CONCAT(IF(A2:E2>0;$A$1:$E$1&“,”;”))-1)
如果您碰巧可以访问TEXTJOIN
函数,它非常简单。否则,只需5列,就可以编写堆叠的IF
条件。如果你有更多的列,你最好的选择就是写一个UDF。如果有人可以访问CONCAT
他们可以访问TEXTJOIN
。这使得你的第二次锻炼变得多余。@HaroonFuad,这对你有帮助吗?如果是这样,考虑将投票/标记作为关闭线程的答案。