基于单元格值的单元格的条件级联

时间:2017-08-29 21:03:54

标签: excel concatenation

我有一个数据范围来自C24:H28的表格。第23行中每列都有标题(请注意,数据未格式化为表格,只是电子表格格式)。在单元格A1中,我想显示包含由逗号分隔的小于100的数据的任何列的标题名称。我知道EXCEL的CONCATENATE函数是我在这里寻找的,但我不知道如何根据列的内容创建有条件地连接的公式。

下面是一个截断的示例:

Tom     Joe     Bob   ...
125     245     325  ...
60      600     164  ...
305     20      410  ...

我希望单元格A1读取Tom, Joe

我希望尽可能避免使用宏。

2 个答案:

答案 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