使用公式在Excel中循环和连接

我正在寻找一种方法来使用Excel中的公式创build一个计算列。

我想在我的“分数”列中计算行中空列的数量。 并在我的“EmptyLabels”连接空列的名称。

有没有办法做到这一点在Excel中没有VBA和macros?

提前致谢。

Excel工作表

更新尝试IF和ISBLANK多列不能成为一个解决scheme。 它给了我错误:不能处理多层次的重叠“

我实际上有50列,我认为这是不能做到的。 我可以只适用于less量的列,正确的解决scheme是标记在下面。

得分是“行中空列的数量”,这样就可以在第一行使COUNTBLANK函数公式化,

=COUNTBLANK(Table1[@[Col 1]:[Col 7]]) 

条件级联可以由一系列嵌套的IF和ISBLANK函数来处理。 简单string连接由&符号(例如& )提供。

 =TRIM(IF(ISBLANK([@[Col 1]]), Table1[[#Headers],[Col 1]]&" ", " ")& IF(ISBLANK([@[Col 2]]), Table1[[#Headers],[Col 2]]&" ", " ")& IF(ISBLANK([@[Col 3]]), Table1[[#Headers],[Col 3]]&" ", " ")& IF(ISBLANK([@[Col 4]]), Table1[[#Headers],[Col 4]]&" ", " ")& IF(ISBLANK([@[Col 5]]), Table1[[#Headers],[Col 5]]&" ", " ")& IF(ISBLANK([@[Col 6]]), Table1[[#Headers],[Col 6]]&" ", " ")& IF(ISBLANK([@[Col 7]]), Table1[[#Headers],[Col 7]]&" ", " ")) 

如果你更喜欢CONCATENATE函数提供的更正式的string拼接,

 =TRIM(CONCATENATE(IF(ISBLANK([@[Col 1]]), Table1[[#Headers],[Col 1]], ""), CHAR(32), IF(ISBLANK([@[Col 2]]), Table1[[#Headers],[Col 2]], ""), CHAR(32), IF(ISBLANK([@[Col 3]]), Table1[[#Headers],[Col 3]], ""), CHAR(32), IF(ISBLANK([@[Col 4]]), Table1[[#Headers],[Col 4]], ""), CHAR(32), IF(ISBLANK([@[Col 5]]), Table1[[#Headers],[Col 5]], ""), CHAR(32), IF(ISBLANK([@[Col 6]]), Table1[[#Headers],[Col 6]], ""), CHAR(32), IF(ISBLANK([@[Col 7]]), Table1[[#Headers],[Col 7]], ""))) 

isblank_concat

请在H2中尝试:

 =COUNTBLANK(A2:G2) 

在I2中:

 =IF(ISBLANK(A2),A$1,"")&IF(ISBLANK(B2),B$1,"")&IF(ISBLANK(C2),C$1,"")&IF(ISBLANK(D2),D$1,"")&IF(ISBLANK(E2),E$1,"")&IF(ISBLANK(F2),F$1,"")&IF(ISBLANK(G2),G$1,"") 

然后复制下来以适应。

如果列可能是可变的,请尝试类似

 =COUNTA($A$2:OFFSET($H$2,0,-1)) =COLUMN()-$H2-2 

并将$ H更改为您的分数列。