0

我想计算sumproduct“收入”列中表格中的图片。但是,数据集相当大,我仅限于 excel 和标准函数。

它应该找到所有带有关键字“weightl”和“sell”的变量,并在每行相应地相乘和求和。例如在第 3 行:

2*3+3*6+2*3 = 30

我想使用一种字典来更改搜索词并遍历每一列。但我不知道如何把它们放在一起。

我用这个

{=+isnumber(search("weightl";F2:N2))+isnumber(search("sell";F2:N2))} 

创建原始表的 1/0 表,希望这可以引导我到某个地方
并且

=SUM(IF(IFERROR(SEARCH("weight";G2:M2);0)>0;IF(G3:M8<>8888;G3:M8)))

计算重量值的总和,但这在这里没有多大帮助

这甚至可以用正常的功能来实现吗?如果没有,VBA 中的解决方案会是什么样子?

示例数据/结构

4

2 回答 2

1

如果您的“重量”和“销售”列总是分开两列,那么您可以使用此数组公式查找“重量”列,然后将其乘以右侧的第 2 列单元格:

hdrs$A$1:$I$1包含标题的范围。但它可以指整行,或第 1 行的很大一部分

=SUM(IFERROR(SEARCH("*weight*",hdrs)*A2:G2,0) * IFERROR(SEARCH("*weight*",hdrs)*C2:I2,0))

如果“weight”和“sell”之间的列数可能不定,那么您可以尝试这个数组公式,它分别查找“weight”和“sell”列:

=SUM(INDEX(A2:I2,1,N(IF(1,AGGREGATE(15,6,SEARCH("*weight*",hdrs)*COLUMN(hdrs),ROW(INDIRECT("1:"&COUNTIF(hdrs,"*weight*")))))))*INDEX(A2:I2,1,N(IF(1,AGGREGATE(15,6,SEARCH("*sell*",hdrs)*COLUMN(hdrs),ROW(INDIRECT("1:"&COUNTIF(hdrs,"*weight*"))))))))

由于这是一个数组公式,您需要在按住ctrl+的shift同时点击“确认”它enter。如果您正确执行此操作,Excel 将{...}在公式周围放置大括号,如公式栏中所示

在此处输入图像描述

请注意,我刚刚注意到您要匹配“weight 1 ”,因此只需对上述公式进行明显的更改即可。

于 2019-08-03T13:12:10.647 回答
0

这是一个应该按照您的想法进行匹配的公式:

=SUM(A2:I2*ISNUMBER(FIND("weight",A1:I1))*IFERROR(INDEX(A2:I2,N(IF({1},MATCH("*sell"&RIGHT(A1:I1,LEN(A1:I1)-FIND("weightl",A1:I1)-6),A1:I1,0)))),0))

必须使用数组公式输入CtrlShiftEnter

在此处输入图像描述

请注意,我正在找到与“weightl”标题匹配的“sell”标题,因此 weightl1_1_4 将与 sell1_1_4 等匹配,但我现在想知道这是否有必要 - 也许重量只是与下一次销售相匹配,这将更容易。

于 2019-08-03T12:07:49.480 回答