我想让所有列标题名称在一行中大于零。
到目前为止,我已尝试过此=IF(COUNTA($A2:$E2)=0,"",INDEX($A$1:$E$1,MATCH(TRUE,INDEX($A2:$E2>0,0),0))
它给出了第一列大于零的名称。
a b c d e
0 1 0 1 1 b
1 0 0 1 0 a
我需要这样的东西
a b c d e
0 1 0 1 1 b,d,e
1 0 0 1 0 a,d
我之前从未使用过excel。任何帮助表示赞赏
答案 0 :(得分:2)
我意识到上面的答案是完成工作的,如果你不需要任何更动态的话,我的工作可能有点复杂。
但是,如果您确实需要更动态的解决方案,则可以执行以下操作: 假设您的标题位于单元格A1:E1和下面的数据中,第一步是让函数返回符合您条件的值: = IF(A2:E2大于0,A $ 1:E $ 1"&#34) 您需要将其输入为数组公式(Ctrl + Shift + Enter)
这会返回一个返回大量空白的数组,因此我们还需要处理两件事: 1.从该阵列中删除空白 2.连接数组,使其返回逗号分隔的字符串
不幸的是,Excel没有任何这些功能(真的很遗憾),所以你需要一些VBA魔术:
Public Function joinArray(arr As Variant)
arr = arr
Dim i As Integer
Dim s As String: s = ""
For i = LBound(arr, 1) To UBound(arr, 1)
s = s & arr(i) & ","
Next i
joinArray = Left(s, Len(s) - 1)
End Function
Public Function Strip(arr As Variant)
arr = arr
Dim v() As Variant
Dim k As Integer, i As Integer
For i = LBound(arr, 1) To UBound(arr, 1)
If arr(i) <> "" Then
ReDim Preserve v(0 To k)
v(k) = arr(i)
k = k + 1
End If
Next i
Strip = v
End Function
你现在可以调用= joinarray(strip(IF(A2:E2&gt; 0,A $ 1:E $ 1,&#34;&#34;)))作为数组公式(Ctrl + Shift + Enter)
答案 1 :(得分:1)