我的数据目前采用以下格式(我可以将其移动到最适合此目的但我想先知道这是否可行)。
CELL1 CELL2 CELL3 CELL4 CELLn
ITEM # MATERIAL # MATERIAL # MATERIAL
这方面的一个例子可能是:
A B C D n
Tacos 5 Tortillas 6 Garlic 4 Onions 3 Peppers
Banana // These cells are empty because Bananas need no ingredients.
Pasta 2 Garlic 3 Sauce
我想要一个公式来遍历col A中的每个独特项目,并且每个项目都会遍历该项目的所有成分(在B列 - >列无穷大中)。计算每种成分的数量以及每种成分的数量,然后按以下方式输出:
Torillas 5
Garlic 8
Onions 4
Peppers 3
Sauce 3
如果这是一种编程语言,我可以通过一些for循环轻松完成,但只使用IF
和COUNTIF
以及SUM
,我根本不知道从哪里开始
答案 0 :(得分:0)
假设A2:E4包含数据,而A9:A13包含要返回计数的成分,请在B9中输入以下公式,使用CONTROL + SHIFT + ENTER确认,然后复制:
=SUM(IF(RIGHT($B$2:$E$4,LEN(A9))=A9,LEFT($B$2:$E$4,FIND(" ",$B$2:$E$4)-1)+0))
相应地调整范围。
答案 1 :(得分:0)
这是我能做的......
=SUM(IF(IFERROR(SEARCH(G6,$B$2:$E$4),0)>0,VALUE(LEFT($B$2:$E$4,SEARCH(CHAR(32),$B$2:$E$4)-1)),0))
(p / s:我将意大利面的大蒜换成5,我喜欢大蒜)
答案 2 :(得分:0)
这是我的建议:将表格中的数据转换为2个向量,然后使用简单的数据透视表按类别求和。
首先,我将所有区域定义为数据(B2:E4
)作为命名范围materials
。然后我使用一个讨厌的公式来创建2个向量,一个用于项目,一个用于数量。
=IF(ISERROR(LEFT(OFFSET(materials,TRUNC((ROW()-ROW($A$9))/COLUMNS(materials)),MOD(ROW()-ROW($A$9),COLUMNS(materials)),1,1),FIND(" ",OFFSET(materials,TRUNC((ROW()-ROW($A$9))/COLUMNS(materials)),MOD(ROW()-ROW($A$9),COLUMNS(materials)),1,1)))),0,VALUE(LEFT(OFFSET(materials,TRUNC((ROW()-ROW($A$9))/COLUMNS(materials)),MOD(ROW()-ROW($A$9),COLUMNS(materials)),1,1),FIND(" ",OFFSET(materials,TRUNC((ROW()-ROW($A$9))/COLUMNS(materials)),MOD(ROW()-ROW($A$9),COLUMNS(materials)),1,1)))))
=IF(ISERROR(MID(OFFSET(materials,TRUNC((ROW()-ROW($B$9))/COLUMNS(materials)),MOD(ROW()-ROW($B$9),COLUMNS(materials)),1,1),FIND(" ",OFFSET(materials,TRUNC((ROW()-ROW($B$9))/COLUMNS(materials)),MOD(ROW()-ROW($B$9),COLUMNS(materials)),1,1))+1,LEN(OFFSET(materials,TRUNC((ROW()-ROW($B$9))/COLUMNS(materials)),MOD(ROW()-ROW($B$9),COLUMNS(materials)),1,1)))),"",MID(OFFSET(materials,TRUNC((ROW()-ROW($B$9))/COLUMNS(materials)),MOD(ROW()-ROW($B$9),COLUMNS(materials)),1,1),FIND(" ",OFFSET(materials,TRUNC((ROW()-ROW($B$9))/COLUMNS(materials)),MOD(ROW()-ROW($B$9),COLUMNS(materials)),1,1))+1,LEN(OFFSET(materials,TRUNC((ROW()-ROW($B$9))/COLUMNS(materials)),MOD(ROW()-ROW($B$9),COLUMNS(materials)),1,1))))
将它粘贴到相关矢量的第一个单元格中,然后将所有单元格引用(所有$A$9
和$B$9
)更改为刚刚粘贴公式的单元格(每个公式都包含尊重其自己的细胞)。 保留绝对引用。最后,将其向下拖动,直到您到达数据中的最后一项(因此向量的长度为ROWS(materials)*COLUMNS(materials)
)。
现在,您只需在此向量上添加一个数据透视表,并过滤掉空白单元格。
告诉我它是否解决了问题;)
P.S。另外,如果您希望我对此进行更多解释,请在评论中写下我