根据一个条件拉范围

问题描述 投票:0回答:2

我有一个公式,可以将多行连接在一起并删除重复项:

=TEXTJOIN(" ", 1, UNIQUE(TRANSPOSE(FILTER(Sheet1!A:D, NOT(REGEXMATCH(LOWER(Sheet1!A:D), "n/a"))))))

我遇到的问题是因为它引用了同一工作表中的另一个选项卡,因此不能在不更改结果的情况下按不同的列对其进行排序。

所以,我想知道的是:如何修改上述公式,以便根据我给出的条件提取所需的数据?请注意,这需要跨一定范围的单元格,并包括文本字符串。

google-sheets google-sheets-formula array-formulas google-sheets-query textjoin
2个回答
0
投票

尝试:

=ARRAYFORMULA(IFNA(VLOOKUP(TO_TEXT(B1:B), {QUERY(TRANSPOSE(QUERY(QUERY(
 UNIQUE(TRIM(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 IF(Sheet1!C:E="",,"♥"&ROW(Sheet1!C:C)&"♦"&Sheet1!C:E)),,999^99)),,999^99), "♥")), "♦"))), 
 "where not lower(Col2) matches 'n/a'", 0), 
 "select max(Col2) group by Col2 pivot Col1")), "select Col1", 0), TRANSPOSE(QUERY(QUERY(
 QUERY(QUERY(UNIQUE(TRIM(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 IF(Sheet1!C:E="",,"♥"&ROW(Sheet1!C:C)&"♦"&Sheet1!C:E)),,999^99)),,999^99), "♥")), "♦"))), 
 "where not lower(Col2) matches 'n/a'", 0), 
 "select max(Col2) group by Col2 pivot Col1"), "offset 1", 0),,999^99))}, 2, 0)))

0


0
投票

发表您的评论后,我了解您正在尝试做什么。基本上,您想检索与您的“行键”匹配的第一张纸的信息。

您没有使用VLOOKUP的原因吗?

例如,使用此公式:

VLOOKUP

=IFNA(VLOOKUP(A1,Sheet1!A:G, 7, FALSE), "VALUE NOT FOUND")

如果您Example of Use或将sort列的范围随机化,将得到如下结果:

B

在这里您会看到每个描述都与其键保持一致。


EDIT:因此,在您发表评论后,似乎您没有在单个单元格内的信息。您可以将该单元格创建为占位符,以便以后检索信息。

或者,如果需要,可以在公式中进行设置,这样可能会使操作变得有些混乱,但仍然可行。

Randomize List

=TEXTJOIN(" ", 1, UNIQUE( TRANSPOSE( FILTER({VLOOKUP(A1, Sheet1!A:G, 3, FALSE), VLOOKUP(A1, Sheet1!A:G, 4, FALSE), VLOOKUP(A1, Sheet1!A:G, 5, FALSE), VLOOKUP(A1, Sheet1!A:G, 6, FALSE)}, NOT(LOWER({VLOOKUP(A1, Sheet1!A:G, 3, FALSE), VLOOKUP(A1, Sheet1!A:G, 4, FALSE), VLOOKUP(A1, Sheet1!A:G, 5, FALSE), VLOOKUP(A1, Sheet1!A:G, 6, FALSE)}) = "n/a") ) ) ) )

© www.soinside.com 2019 - 2024. All rights reserved.