如果下面的列有1,则连接顶行单元格

我正在查看名为列的1和0的大型数据库,如下所示:

red blue green orange purple ────── ────── ────── ────── ────── 0 0 1 0 1 0 1 0 0 0 

我想连接所有标题(按行),行的下方有一个“1”标题。 所以理想情况下,第一个将等于“绿色,紫色”,第二个将只读“蓝色”。 我有大量的数据,所以任何嵌套了一百个“IF”函数的东西都没有意义。

我试过了

= IF(B1:B5 = 1,CONCATENATE(A1:A5),“”)

和一些事情接近,但我没有find一个明显的方式来得到它。 我也没有时间或足够的知识来处理VBA。 感谢所有帮助,谢谢!

甚至在没有设置标准的情况下,多于几个单元格的string连接最好留给VBA 用户定义的函数 (aka UDF )。 你们“嵌套一百个”中频“function”的情况一定会把它放在这个范畴。

点击Alt + F11 ,当VBE打开时,立即使用下拉菜单插入►模块( Alt + IM )。 将以下内容粘贴到标题为Book1 – Module1(Code)的新窗格中。

 Public Function conditional_concat(rSTRs As Range, rCRITs As Range, Optional sDELIM As String = ", ") Dim c As Long, sTMP As String For c = 1 To Application.Min(rSTRs.Cells.Count, rCRITs.Cells.Count) If CBool(rCRITs(c).Value2) Then _ sTMP = sTMP & rSTRs(c).Value & sDELIM Next c conditional_concat = Left(sTMP, Application.Max(Len(sTMP) - Len(sDELIM), 0)) End Function 

点击Alt + Q返回到您的工作表。 像任何本机Excel工作表函数一样使用此UDF。 语法是,

 conditional_concat(<range of strings>, <range of conditions>, [optional] <delimiter as string>) 

条件字符串连接

G2中的公式是,

 =conditional_concat(A$1:E$1, A2:E2) 

根据需要填写。

我会这样做的方法是添加五个额外的列,并明确地input“红色”,“蓝色”,“绿色”,“橙色”,“紫色”,其中相应的列是1,所以你可以这样做:

红色列'r': =IF(col_red=1,"red,","")

蓝色列'b': =IF(col_blue=1,"blue,","")

绿色列'g': =IF(col_green=1,"green,","")

橙色列'o': =IF(col_orange=1,"orange,","")

紫色列'p': =IF(col_purple=1,"purple,","")

=LEFT(F2 & G2 & H2 & I2 & J2,LEN(F2 & G2 & H2 & I2 & J2)-1) (我find了连接string函数由于错误的行而出错

给出这个结果: 以上所列函数的结果在答案中

我已经尝试了一些没有成功的数组函数,这可能是解决这个问题的一种方法。