如何查询多列,仅返回其他位置选择的值?

时间:2019-12-05 18:26:37

标签: google-sheets gs-vlookup

我还不能嵌入图像,但是我将它们作为内联链接包含在内。

在Google表格中,我为乐队创建了一个清单创建器。目前,我具有允许用户从我们的歌曲列表中选择歌曲的下拉菜单。我希望这些下拉菜单是动态的,并且只允许用户选择have not already been selected.

的歌曲

have not already been selected.

因为我们通常一晚上有3套,所以我需要查询三个“ set”列,以查看是否在这3列中的任何一列中都选择了特定的值,并且如果列表中没有歌曲,则仅在列表中包括一首歌曲没有在任何列中被选中,以防止任何人两次选择同一首歌曲。

我能够使用IF(ISNA(VLOOKUP)) function

来完成这项工作

IF(ISNA(VLOOKUP)) function

用于单列,但我无法弄清楚多列中的多行。

我正在使用的当前查询是:

=ARRAYFORMULA(UNIQUE(QUERY(TO_TEXT({A:C}),"select Col1 where Col1 is not null")))

此公式适用于第一列A(设置1),但不适用于B或C列(设置2或3)。

链接到电子表格:https://docs.google.com/spreadsheets/d/18i3AgDOU4zIqsmZQaaA5HiGOfwLA0BoFB4qBa-Tl1SI/edit?usp=sharing

1 个答案:

答案 0 :(得分:1)

您正在基于歌曲列表创建设置列表。最多创建三个集合。首要原则是,歌曲不得播放超过一次。因此,Set 2&3的可用歌曲取决于每个Set之前的歌曲。跟踪每个集合中的歌曲和未播放的歌曲的公式不适用于集合2和3。

这个答案不是对特定公式的微小调整。识别可用歌曲和为每组选择的歌曲时存在缺陷。

显示“请勿触摸”(可用的歌曲)

工作表“请勿触摸”的结构需要反映可用的歌曲以及为每个组合选择的歌曲。


Do Not Touch


此布局中适用的公式为:

  • 列A:=query(SONGS!B3:B,"select *")(单元格A2)。列出所有可用的歌曲。
  • B列:=query(SET_1,"select *")(单元格B2)。列出为Set1选择的歌曲。
  • 列C:=filter(Set1Available,len(Set1Available),iserror(match(Set1Available,B2:B,0)))(单元格C2)。比较Set1中的i)可用歌曲和ii)歌曲;列出未包含在Set1中的歌曲。
  • 列D:=query(SET_2,"select *")(单元格D2)。列出为Set2选择的歌曲。
  • E列:=filter(Set2Available,len(Set2Available),iserror(match(Set2Available,D2:D,0)))(单元格E2)。比较i)Set2的可用歌曲和ii)Set2的歌曲,列出Set2中未包含的歌曲。
  • F列:=query(SET_3,"select *")(单元格F2)。列出为Set3选择的歌曲。
  • G列:=filter(Set3Available,len(Set3Available),iserror(match(Set3Available,F2:F,0)))(单元格G2。比较i)Set3的可用歌曲和ii)Set3中没有列出的歌曲(不包含在Set3中)。

注意:我为Set1Available('请勿触摸'!A2:A62),Set2Available('请勿触摸'!C2:C62)和Set3Available创建了命名范围(“请勿触摸”!E2:E62)。


WORKING-SET1 / SET2 / SET3

每个集合的数据验证必须更改;这就是您的公式无效的原因。  -SET1:Set1Available  -SET2:Set2Available  -SET3:Set3Available


设置

SETS


在该屏幕截图中,您会注意到“ ALIVE”已包含在Set 1和Set 3中。它最初被添加到Set 3中(当它是有效选择时),后来又被添加到Set1中。 Set3中的条目现在无效,它显示红色的无效数据指示器。

FWIW,我还注意到“ Time Est”公式在每一行中都不一致;您可能希望重新考虑一下。

道具:Compare two lists and return only those values that are missing from one list