我试图让 SUMIF 搜索一行中的条件(在本例中为文本名称),然后使用单独单元格中的总和填充另一个第二个工作表,但由于某种原因,它只搜索该行中的第一个单元格对于这个标准。
我一生都无法弄清楚为什么会这样。
这是表格形式的超级简化版本:
使用以下公式(示例适用于 Sheet2 上的单元格 B2):
=SUMIF(Sheet1!C1:D1, B1, Sheet1!E1)
表1
A | B | C | D | E |
---|---|---|---|---|
1/14 | 3 | 拉里 | 拉斐尔 | 1.5 |
1/15 | 1 | 多纳泰罗 | 拉里 | 0.5 |
Sheet2 上的初始输出:
A | B | C | D |
---|---|---|---|
日期 | 拉里 | 拉斐尔 | 多纳泰罗 |
1/14 | 1.5 | 0 | 0 |
1/15 | 0 | 0 | 0 |
Sheet2 上的预期输出
A | B | C | D |
---|---|---|---|
日期 | 拉里 | 拉斐尔 | 多纳泰罗 |
1/14 | 1.5 | 1.5 | 0 |
1/15 | 0.5 | 0 | 0.5 |
我想要发生的是,如果某人的名字出现在 Sheet1 上的一行中,那么 E 列中的值将填充到 Sheet2 上相应的单元格中 — — 在该人的名字下。
不幸的是,Sheet2 中的实际结果似乎是正在搜索的范围只是列中的第一个单元格,因此,如果某人的名字首先列在第一张表的行中,则数据只会填充在某人的名字下。
如何修改这个公式来解决这个问题?
你可以试试这个公式:
=let(a,BYCOL(B1:D1, LAMBDA(r, IF(REGEXMATCH(JOIN(",",CHOOSEROWS(Sheet1!A1:E2,MATCH(A2,Sheet1!A1:A2))),r), CHOOSECOLS(CHOOSEROWS(Sheet1!A1:E2,MATCH(A2,Sheet1!A1:A2)),-1),0))),b, BYCOL(B1:D1, LAMBDA(r, IF(REGEXMATCH(JOIN(",",CHOOSEROWS(Sheet1!A1:E2,MATCH(A3,Sheet1!A1:A2))),r), CHOOSECOLS(CHOOSEROWS(Sheet1!A1:E2,MATCH(A3,Sheet1!A1:A2)),-1),0))),VSTACK(a,b))
预期输出:
A | B | C | D |
---|---|---|---|
日期 | 拉里 | 拉斐尔 | 多纳泰罗 |
1/14 | 1.5 | 1.5 | 0 |
1/15 | 0.5 | 0 | 0.5 |