在 Excel 中,如何根据 if 函数获取要显示的单元格列表?

在 Excel 中,如何根据 if 函数获取要显示的单元格列表?

我有一份带有描述列的数量列表。它根据大小计算门的数量。我想输出一份包含适用数字的描述数字列表(最好用逗号分隔)。以下是我的示例:

 A | B   | C   | D   | E   | F   |

Apt| 2'0 | 2'6 | 3'0 | 4'0 | 5'0 |

44 | 0   | 1   | 0   | 1   | 1   |

47 | 0   | 1   | 0   | 0   | 2   |

48 | 0   | 1   | 1   | 1   | 1   |

50 | 1   | 0   | 0   | 1   | 1   |

我试图让它生成一个按大小分组的公寓号码列表,因此它应该如下所示:

2'0 | 50 (1)

2'6 | 44 (1), 47 (1), 48 (1)

3'0 | 48 (1)

4'0 | 44 (1), 48 (1), 50 (1)

5'0 | 44 (1), 47 (2), 48 (1), 50 (1)

我尝试执行如下 IF 函数:

=IF(B2:B5>0,A3:A5,)

但它只返回找到的第一个值。有什么建议吗?

答案1

尝试使用 OFFSET()
=IF(B2:B5>0;A2:A5 &", "& OFFSET(A2:A5;0;1);)

答案2

我们可以对此使用一些技巧。我将您的数据粘贴到范围内A1:F5。在其下方,我创建了一个表格,其最终结果如下所示 CSV:

Door,Apts,44,47,48,50
2'0,50 (1),,,,50 (1), 
2'6,44 (1), 47 (1), 48 (1),44 (1), ,47 (1), ,48 (1), ,
3'0,48 (1),,,48 (1), ,
4'0,44 (1), 48 (1), 50 (1),44 (1), ,,48 (1), ,50 (1), 
5'0,44 (1), 47 (2), 48 (1), 50 (1),44 (1), ,47 (2), ,48 (1), ,50 (1), 

对于Door字段,我只是复制了您的门尺寸并粘贴了转置
对于字段名称(44,47,48,50),我对您的恰当数字做了同样的操作
对于Apts字段,第一行的公式如下:

=LEFT(CONCATENATE(C11,D11,E11,F11),LEN(CONCATENATE(C11,D11,E11,F11))-2)

它所做的就是编译右侧字段的数据。
对于那些字段,第一个单元格的公式如下:

=IF(INDEX(OFFSET($A$2:$A$5,0,MATCH($A11,$1:$1,0)-1),MATCH(C$10,$A$2:$A$5,0))>0,C$10 & " (" &INDEX(OFFSET($A$2:$A$5,0,MATCH($A11,$1:$1,0)-1),MATCH(C$10,$A$2:$A$5,0)) & "), ","")

它看起来很长,因为很大一部分是重复的。那部分是:

INDEX(OFFSET($A$2:$A$5,0,MATCH($A11,$1:$1,0)-1),MATCH(C$10,$A$2:$A$5,0))

它所做的就是从表中提取A1:F5特定门尺寸的值,然后
INDEX(...)我们得到的值替换该块:

=IF(INDEX(...)>0,C$10 & " (" &INDEX(...) & "), ","")

因此,它会查找值,如果为零则返回空白,50 (1),否则返回类似内容。然后,
该字段Apts将它们全部组合在一起,并删除尾随的逗号 + 空格


显然,根据数据集的大小,这种方法可能对你有用,也可能没用。不过,我认为公寓和门的数量不会很快改变,所以这种方法值得一试。

相关内容