根据其他列中的选择查找名称

时间:2020-10-05 16:55:21

标签: google-sheets google-sheets-formula

我有下表:

Name    Item 1    Item 2   Item 3    ... Item 28
Bob     Apple     Orange   kiwi          pair
John    Orange    pair     banana        peach
Dan     Peach     pair     kiwi          plumb

我需要在列中列出所有选择奇异果的人的名字。我尝试使用查询,但是它给了我一些非常奇怪的结果,并且由于某种原因没有选择每个人。

=IFNA(QUERY(Wishlist!$A:$Z, "SELECT A WHERE B = """&A$2&""" OR C = """&A$2&""" OR D = """&A$2&""" OR E = """&A$2&""" OR F = """&A$2&""" OR G = """&A$2&""" OR H = """&A$2&""" OR I = """&A$2&""" OR J = """&A$2&""" OR K = """&A$2&""" OR L = """&A$2&""" OR M = """&A$2&""" OR N = """&A$2&""" OR O = """&A$2&""" OR P = """&A$2&""" OR Q = """&A$2&""" OR R = """&A$2&""" OR S = """&A$2&""" OR T = """&A$2&""" OR U = """&A$2&""" OR V = """&A$2&""" OR W = """&A$2&""" OR X = """&A$2&""" OR Y = """&A$2&""" OR Z = """&A$2&""" LABEL A ''"), "Nobody is Interested")

我得到的结果只是一个人(第一个)被列出,其他人则没有出现。如果我删除“标签A”部分,则A列中的所有名称都会列为标签,并且列表中仍然只有第一人称

2 个答案:

答案 0 :(得分:2)

您可以使用FILTER函数:

=FILTER(A2:A4,MMULT(ROW(B2:B4)*(B2:F4=H2),ROW(A1:A5)^0)>0)

enter image description here

如果项目中有更多列,请相应地更改MMULT函数的第二个参数-在我的示例中为ROW(A1:A5)^0,因为范围B:F有五列。如果您有28列,那么必须有ROW(A1:A28)^0

答案 1 :(得分:1)

解决方案1:

使用查询公式:

=IFNA(query({B2:B,arrayformula(trim(transpose(query(transpose(Wishlist!A:Z),,rows(A:A)))))},"select Col1 where Col2 CONTAINS '"&A$2&"'"), "Nobody is Interested")

基本上,我没有加入所有行,而是加入它们,然后仅将查询分为两列:

  • Col1的名字
  • Col2和值

然后,我只寻找第二列中是否包含猕猴桃。 enter image description here

解决方案2:

计算行数:

=ArrayFormula(if(len(B2:B), countif(if(C2:F="kiwi", row(B2:B)), row(B2:B)),))

您可以在下面看到我的工作:

enter image description here