我有两个工作表,数据像这样-
Sheet 1
:
A
--------
1 | Name |
2 | sue |
3 | bob |
4 | mary |
5 | john |
Sheet 2
:
A B C D
---------------------------------------------
1 | ID | Asignee | Due | Days Left |
2 | ID001 | sue, bob | 1 | 5 |
3 | ID002 | sue, mary | 2 | 8 |
4 | ID003 | bob | 3 | 2 |
5 | ID004 | bob, john | 1 | 9 |
6 | ID005 | bob, mary, john | 4 | 1 |
7 | ID006 | sue, bob | 1 | 8 |
8 | ID007 | john, sue, mary | 2 | 6 |
在第三张纸上,我想合并并合并数据以获得一些总数/计数。
Sheet 3
:
A B C D
---------------------------------------------------------
1 | Name | Number Rows | Total Due | Minimum of Days Left |
2 | sue | 4 | 6 | 5 |
3 | bob | 5 | 10 | 1 |
4 | mary | 3 | 8 | 1 |
5 | john | 3 | 7 | 1 |
对于第三张纸:
Sheet 1
相同的行数和值Sheet 3!B
是Sheet 2
中的#行数,其中Sheet 2!B
包含 Sheet 1!A
(或{{ 1}})
Sheet 3!A
中有4行,其中Sheet 2
包含Sheet 2!B
sue
中有5行,其中Sheet 2
包含Sheet 2!B
bob
中有3行,其中Sheet 2
包含Sheet 2!B
bob
中有3行,其中Sheet 2
包含Sheet 2!B
bob
列是Sheet 3!C
的总计,其中Sheet 2!C
包含 Sheet 2!B
(或{{1} })Sheet 1!A
是Sheet 3!A
的最小值,其中Sheet 3!D
包含 Sheet 2!D
(或{{1 }})我一直盯着一张空白纸,不知道从哪里开始。我认为我必须使用Sheet 2!B
和Sheet 1!A
,但不确定如何或从哪里开始。
答案 0 :(得分:2)
=ARRAYFORMULA(QUERY(SPLIT(TRIM(TRANSPOSE(SPLIT(TEXTJOIN("♀", 1,
IF(IFERROR(SPLIT(B2:B, ","))<>"",
SPLIT(B2:B, ",")&"♦"&C2:C&"♦"&D2:D, )), "♀"))), "♦"),
"select Col1,count(Col1),sum(Col2),min(Col3)
group by Col1
label count(Col1)'',sum(Col2)'',min(Col3)''"))
通过@IMtheNachoMan编辑,以添加有关我认为上述公式起作用的原因/方式的详细信息:
split
列B
中的值,并将C
列和D
列中的值与确保在任何列
arrayformula
中,所以列B
拆分中的每个值都将被连接起来B
将为列B
中没有值的行创建一个错误
if
和iferror
将检查拆分是否会产生错误,如果这样做会返回null
而不是第一个项目符号的连接字符串B
被拆分并与列C
和D
串联join
所有行均使用第二个人工数值,以确保不在任何列中
split
所使用的第二个人工值上的联接数据(前一个项目符号没有空行)transpose
将其重新排成行trim
每行以删除空格(不确定如何/在何处添加空格)split
每行中具有第一个精算值的列query
调用的输入,并使用聚合函数获取所需的数据如果您确实需要保留订单,请执行以下操作:
=ARRAYFORMULA(IFERROR(VLOOKUP(Sheet1!A2:A,
QUERY(SPLIT(TRIM(TRANSPOSE(SPLIT(TEXTJOIN("♀", 1,
IF(IFERROR(SPLIT(B2:B, ","))<>"",
SPLIT(B2:B, ",")&"♦"&C2:C&"♦"&D2:D, )), "♀"))), "♦"),
"select Col1,count(Col1),sum(Col2),min(Col3)
group by Col1
label count(Col1)'',sum(Col2)'',min(Col3)''"), {1, 2, 3, 4}, 0)))