我有一个数据范围来自C24:H28的表格。第23行中每列都有标题(请注意,数据未格式化为表格,只是电子表格格式)。在单元格A1中,我想显示包含由逗号分隔的小于100的数据的任何列的标题名称。我知道EXCEL的CONCATENATE
函数是我在这里寻找的,但我不知道如何根据列的内容创建有条件地连接的公式。
下面是一个截断的示例:
Tom Joe Bob ...
125 245 325 ...
60 600 164 ...
305 20 410 ...
我希望单元格A1读取Tom, Joe
我希望尽可能避免使用宏。
答案 0 :(得分:1)
您可以在连接公式中使用if countif公式。
这样的事情:
= CONCATENATE(IF(COUNTIF(K14:K16,“< 100”)<> 0,K13&“,”,“”),IF(COUNTIF(L14:L16,“< 100”)) <> 0,L13&“,”,“”),IF(COUNTIF(M14:M16,“< 100”)<> 0,M13&“,”,“”))
countif中的范围是您要检查的数字,真正的语句单元格“K13”等是您要连接的标题。我相信这一切都可以变成一个数组公式,但那些让人感到害怕。
希望这会让你朝着正确的方向前进。
大声笑,只是几分钟太晚了,但如果涉及一个宏,我会做宏不同。我使用函数而不是子例程,以便您可以在像= CustomConcat(要检查的范围)的单元格中调用它答案 1 :(得分:0)
这应该可行,但它很丑陋并且不做逗号。但这对你来说是一个好的开始。
=CONCAT(IF(MIN(C24:C28)<100,C23,"")," ",IF(MIN(D24:D28)<100,D23,"")," ",IF(MIN(E24:E28)<100,E23,"")," ",IF(MIN(F24:F28)<100,F23,""),," ",IF(MIN(G24:G28)<100,G23,""),," ",IF(MIN(H24:H28)<100,H23,""))
如果涉及到宏,会更清晰:
Sub lessThan100()
Dim r As Range, aR As Range, i As Integer, j As Integer, less As Boolean
Set r = Range("C23:H28")
Set aR = Range("A1")
aR = ""
For i = 1 To r.columns.Count
less = False
For j = 2 To r.Rows.Count
If r(j, i) < 100 Then
less = True
Exit For
End If
Next j
If less Then aR = aR & r(i) & ", "
Next i
If Right(aR, 2) = ", " Then aR = Left(aR, Len(aR) - 2)
End Sub