如何在Google文档电子表格中执行简单的设置操作?


10

假设我在单元格中有一些名称B1:B3,并且其中包含所有名称的完整列表A1:A4,是否可以生成其中A1:A4不出现的名称列表B1:B3

例如,单元格A1:A4有“ A”,“ B”,“ C”,“ D”,如果B1:B3包含“ A”,“ C”,“ D”,那么我想得到“ B”。

我浏览了功能列表,但不知道该怎么做。

更新:在兰斯的帮助下,我想到的公式是:

FILTER(A1:A4, A1:A4<>B1, A1:A4<>B2, A1:A4<>B3)

这给出了正确的结果,但是我仍然有一个问题。问题是我的细胞B1:Bx可以扩张。我正在管理一个运动队,并使用Google Docs表单供人们提交,他们从一个选择列表中选择他们的名字,然后选择一个单选按钮“是”(我可以玩)或“否”(我不在)。我想在这里实现的是在电子表格中显示那些没有回复的人。目标是在每次新提交后自动更新此列表。不幸的是,当在电子表格中填写新行时,公式会搞砸。我不确定是否有解决方案。

更新2:我找到了解决方法。我先将单元格从复制B1:Bx到另一个区域C1:Cx,然后使用上述公式,但使用C1:Cx。现在甚至B1:Bx展开,该公式仍然有效。


解决扩展问题的方法是使用命名范围。虽然可能需要一些工作才能使过滤器正确。
Lance Roberts

@Lance,我找到了解决方法,然后再次更新了我的帖子。谢谢。
grokus

1
很好的问题,我是在自己寻找答案时发现的。您的解决方法非常好,但是我想我终于找到了您想要的。在下面查看我的答案。
安东尼·迪桑蒂

Answers:


5

哇,我想为您提供确切的解决方案,Google文档非常令人沮丧。脚本循环城市。

您可以使用FILTER工作表函数来执行此操作,其中arrayCondition_1是函数公式,可以为未重复的每一行提供真实值。我能够看到无法使用MATCH函数。


1
我发现在处理Google文档时,使用Chrome会更好。
grokus

今天对我来说是疯狂的,但是如果我能记住的话,我将在下周进行深入研究(如果那时尚未找到答案)。
Lance Roberts

没关系,我可以使用FILTER来获得所需的结果。谢谢。
grokus 2010年

@grokus,太好了,您应该发布用于以后读者参考的公式。
兰斯·罗伯兹

我更新了原始帖子。
grokus 2010年

4
=FILTER(A:A, NOT(COUNTIF(B:B, A:A)))

COUNTIF计算列A中每个玩家出现在列B中的次数,并返回计数数组。

NOT 将数字转换为布尔值(真或假),然后取相反的值。

FILTER删除确实出现在B列响应列表中的球员。

这里的技巧是NOT将计数转换为布尔值。如果玩家没有回应,他们将在回应列表中出现0次。如果他们做出了回应,他们将出现1次或更多次(也许是玩家试图通过第二次提交调查来更改答案)。0强制转换为False,所有其他数字强制转换为True。因此,已响应的玩家映射到True尚未响应的玩家FalseNOT然后取相反的值,为您提供尚未响应的球员的面具。

该解决方案支持越来越多的提交列表,其中可能包括空白行或重复的提交。要限制为问题中描述的特定范围,请使用:=FILTER(A1:A4, NOT(COUNTIF(B:B,A1:A4)))


天才20charlimit
Fadeway '16

0

这是一个电子表格,显示了如何轻松完成此操作:

在Google表格中设置操作

联盟是 ={setA; setB}

区别是 =filter(setA, iferror(MATCH(setA, setB, false)))

交点为 =filter(setA; MATCH(setA, setB, false))

说明 setAsetB可以命名为范围,也可以使用常规范围表示法。命名范围使这个更清晰。

并集只是通过将两个范围并置而形成的新范围。

路口(最简单的旁边)取决于寻找的指数setAsetB他们离开那里,并通过过滤组A。

差异相似,但是过滤器setA仅挑选setB未找到索引的成员。

额外信用

具有重复消除的并集只是setA +(setB-setA),因此如上所述

={setA;filter(setB, iserror(MATCH(setB,setA,false)))}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.