这就是我的困境: 我有颜色的列(红色,蓝色等)。对于每个都有0或1(如果项目中有蓝色则为1,否则为0)。但是项目中可以有2种(或10种)颜色。有没有办法在Excel中制定这个?
我尝试使用IF,但这限制了我的2个条件:如果红色是假的,那么它会变成蓝色,但我似乎找不到同时显示蓝色和红色的方式项目
例如: 我的裙子既绿色又有黄色。我有0为红色,0为蓝色,1为绿色,1为黄色。我只想在1列中浓缩,可以说:绿色,黄色(中间有逗号)。
帮助?
答案 0 :(得分:0)
猜测是什么,即red
在B1中,以下似乎适用于所提供的示例:
=LEFT(IF(B2=1,B$1&", ","")&IF(C2=1,C$1&", ","")&IF(D2=1,D$1&", ","")&IF(E2=1,E$1&", ",""),LEN(IF(B2=1,B$1&", ","")&IF(C2=1,C$1&", ","")&IF(D2=1,D$1&", ","")&IF(E2=1,E$1&", ",""))-2)
(返回所有颜色标志为0
的错误)。大部分都是剥离最后两个字符,所以最好使用辅助列和两个公式(但总体上要短得多)。
这部分:
=IF(B2=1,B$1&", ","")&IF(C2=1,C$1&", ","")&IF(D2=1,D$1&", ","")&IF(E2=1,E$1&", ","")
可以通过进一步的IF语句进行扩展,以涵盖四种以上的颜色。
如果是R2中的后一个版本,那么最后两个字符(逗号空格)可能会被剥离:
=LEFT(R2,LEN(R2)-2)
答案 1 :(得分:0)
VBA版本(复制/粘贴到工作簿中的常规代码模块)
Function Colors(names, flags)
Dim rv, i
rv = ""
For i = 1 To names.Cells.Count
If flags(i) = 1 Then rv = rv & _
IIf(Len(rv) > 0, ", ", "") & names(i)
Next i
Colors = rv
End Function
用法:
=Colors($B$1:$J$1,B2:J2)
假设您的颜色名称位于B1:J1
且第一行1/0位于B2:J2