我有一份带有描述列的数量列表。它根据大小计算门的数量。我想输出一份包含适用数字的描述数字列表(最好用逗号分隔)。以下是我的示例:
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
将它们全部组合在一起,并删除尾随的逗号 + 空格
显然,根据数据集的大小,这种方法可能对你有用,也可能没用。不过,我认为公寓和门的数量不会很快改变,所以这种方法值得一试。