只是警告我,我是Google Sheet(和Excel)编程的新手,但除此之外却经验丰富(30多年的编程经验,这是我在网上遇到的第一个问题)。
我使用Google表格在学生储物柜上保持标签,并且有一个带有储物柜的表,我们的学生可以在这样的列表中借用(更多列,但此处未使用): “ LockerID”“位置”“ LockerInformation”“用户ID”
然后我想查看一个包含学生列表的班级,看看他们像这样借了什么: “ UserID”“ UserName”“ LockerID(LockerLocation)”
因为他们可以借用多个储物柜,所以我不能使用简单的VLOOKUP
,我想要这样的结果:
“ ghdsy45”“ Johan Andersson”“ 45(House-1),78(House-4)”
我的代码在一行上运行良好(到目前为止,LockerID和LockerLocation在不同的列上都有),但是当我尝试将其转换为ARRAYFORMULA
时,即使经过数小时的尝试,我也无法正常运行。
任何有经验的程序员的帮助将不胜感激。
感觉很简单,但是我尝试了从其他人那里找到的所有东西,试图做类似的事情,但是没有一个人将所有部分都做完(我发现)。
={"Borrowed";ARRAYFORMULA(IF(LEN(A4:A),Join(", ",IFERROR(QUERY('ItemList'!A:M,"select A where M='"&A4:A&"'",1)),""),""))}
预期让M=A4:A
检查每一行,但所有行都只检查A4
。因此,所有行仅显示第一个UserID借用的内容。
编辑:要澄清一下,它大约有2000个储物柜和1500名学生,因此过于复杂的解决方案将导致更新时间过长并使它无法使用。
答案 0 :(得分:0)
单元格А1:
={"UserID", "Name"; FILTER({Users!A2:A, Users!C2:C}, Users!B2:B="B2")}
单元格 C1 :
={"Lockers"; ARRAYFORMULA(SUBSTITUTE(TRIM(TRANSPOSE(QUERY(TRANSPOSE(
IFERROR(REGEXEXTRACT(TO_TEXT(IF(ISNUMBER(SPLIT(D2:D, " ")),
SPLIT(D2:D, " "), )), "\d+"))), , 999^99))), " ", " - "))}
单元格 D1 :
={"Lockers per Houses"; ARRAYFORMULA(IFERROR(VLOOKUP(A2:A,
{ARRAY_CONSTRAIN((QUERY({LockerList!A2:A&"♦"&LockerList!B2:B, LockerList!B2:D},
"select Col4,count(Col4) where Col3 is not null group by Col4 pivot Col1")), 999^99, 1),
SUBSTITUTE(SUBSTITUTE(TRIM(TRANSPOSE(QUERY(TRANSPOSE(
IF(ISNUMBER(QUERY({LockerList!A2:A&"♦"&LockerList!B2:B, LockerList!B2:D},
"select Col4,count(Col4) where Col3 is not null group by Col4 pivot Col1")),
ARRAY_CONSTRAIN(QUERY({LockerList!A2:A&"♦"&LockerList!B2:B, LockerList!B2:D},
"select Col4,count(Col4) where Col3 is not null group by Col4 pivot Col1"), 1, 999^99), ))
, , 999^99))), " ", ", "), "♦", " ")}, 2, 0)))}