如何根据条件附加到文本

Posted

技术标签:

【中文标题】如何根据条件附加到文本【英文标题】:How to append to text based on condition 【发布时间】:2019-11-27 08:20:25 【问题描述】:

如何根据上一列的值在结果列中创建公式

如果任何先前列(从 c1 到 c5)中的值大于零,我想将其添加到结果中。

【问题讨论】:

如果您碰巧可以访问TEXTJOIN 功能,这非常简单。否则,只需 5 列,您就可以编写堆叠的 IF 条件。如果你有更多的列,最好的办法是编写一个 UDF。 【参考方案1】:

如果您碰巧可以访问TEXTJOIN 功能,您可以使用以下功能:

F2中的公式:

=TEXTJOIN(",",TRUE,IF(A2:E2>0,$A$1:$E$1,""))

注意1:是数组公式,需要通过CtrlShiftEnter确认

注意 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) 并向下拖动。

【讨论】:

@HaroonFuad,这对您有帮助吗?如果是这样,请考虑投票/标记为关闭线程的答案。【参考方案2】:

您可以使用=CONCAT(IF(A2:E2>0;$A$1:$E$1&",";"")) 作为数组公式,按ShiftCtrlEnter 确认。 在您的示例中将此公式放在F2 单元格中。将该公式扩展到整个范围 剩下的就是删除结果字符串末尾的逗号。

完整的公式应该是这样的

=LEFT(CONCAT(IF(A2:E2>0;$A$1:$E$1&",";""));LEN(CONCAT(IF(A2:E2>0;$A$1:$E$1&",";"")))-1)

【讨论】:

如果有人可以访问CONCAT,他们就可以访问TEXTJOIN。这使您的第二次锻炼变得多余。

以上是关于如何根据条件附加到文本的主要内容,如果未能解决你的问题,请参考以下文章

如何根据附加条件计算列中的价格?

将文本附加到文本区域,但将插入符号位置设置为行尾

如何根据条件附加指令

如何根据 Python 中的索引时间序列条件将新数据集附加到现有数据集

如何更改当前系统时间日期并插入到文本文档中

如何将EXCEL表内每行的数据复制到文本文档内,但文本里显示不要分行,以,号隔开就行了