在 Excel 中比较列表内容

在 Excel 中比较列表内容

我的情况是这样的:我正在创建一个工作表,其中有 9 个 3 列表分组,所选项目都包含在通过数据验证生成的列表中。我需要做的是给每个 3 组添加一个分数,如果从数据验证列表中做出的 3 个选择与之前的 3 组分组中的选择不同(请注意,3 组永远不会是相同的选择,它们始终彼此不同)。

基本上,假设第 1 组中有蓝色、绿色和紫色 - 给出 1 的值,因为这些选择是唯一的。第 2 组中有橙色、黄色和粉色 - 也给出 1 的值,因为这些选择是唯一的。以此类推,但是,假设第 9 组中有洋红色、红色和紫色 - 该组的得分为 0,因为它不是完全独特的(第 1 组中选择了紫色)。请注意,选择是在不同时间做出的,并在这些不同的间隔内进行评分 - 因此第 2 组仅与第 1 组进行比较,第 3 组与第 1 组和第 2 组进行比较,依此类推。

我尝试了类似的公式:

=IF(NOT(B1:B3=A1:A3),1,0)

但是,单元格显示的分数#VALUE!不是 1 或 0。我想知道是否需要单独执行每个单元格,因此,如果单元格 B1 的内容不等于 A1、A2 或 A3 中的内容,则检查单元格 B2 的内容,如果它们不等于单元格 A1、A2 或 A3 的内容,则检查单元格 B3 的内容,如果它们不等于 A1:A3 的内容,则该列表的值为 1。如果我确实必须单独执行此操作,有什么想法我应该如何措辞公式?它会是这样的吗:

=IF(NOT(A1:A3=B1,NOT(A1:A3=B2,NOT(A1:A3=B3),1,0)))

在 Excel 中可以做到这一点吗?

我正在 Windows 10 上使用最新版本的 Excel(Office 365)。提前感谢您的帮助。

答案1

循序渐进(以支持任何级别的未来读者)

使用函数COUNTIF()来了解范围是否包含值。换句话说,要检查B1范围内的值是否出现A1:A3,您可以编写

=COUNTIF(A1:A3,B1)

你可以通过与 0 进行比较将其转换为布尔结果(表示B1不在A1:A3

=COUNTIF(A1:A3,B1)=0

但您还需要检查B2B3是否出现在中A1:A3。您可以使用以下AND()函数来实现这一点:

=AND(COUNTIF(A1:A3,B1)=0,COUNTIF(A1:A3,B2)=0,COUNTIF(A1:A3,B3)=0)

B1如果、B2和都不B3出现在 中,则将返回 True A1:A3。为了使我们能够将该函数复制到一行并调整要检查的范围,我们将对第一个单元格的引用更改为固定列引用A1:A3-> $A1:A3。当我们将公式复制到右侧时,范围将增长到$A1:B3$A1:C3依此类推,最后是$A1:I3第九列

上述公式返回布尔结果,True或。您指出您需要 1 或 0,这可以通过在前一个公式周围False添加一个函数轻松完成。IF()

我们现在可以将公式写入单元格B4,如下所示

=IF(AND(COUNTIF($A1:A3,B1)=0,COUNTIF($A1:A3,B2)=0,COUNTIF($A1:A3,B3)=0),1,0)

然后复制到单元格C4:I4

因为根据您的定义,每组 3 都是唯一的,所以不需要公式A4,您只需将其设置为 1 即可。

更新

注意! 像 这样的范围内的空单元格C1:C3结果为 1。您没有指定它,但您可能希望具有缺失值的组返回 0。您可以通过向函数添加第四个项来实现AND()COUNTBLANK((B1:B3)=0。 然后中的条目B4将是

=IF(AND(COUNTIF($A1:A3,B1)=0,COUNTIF($A1:A3,B2)=0,COUNTIF($A1:A3,B3)=0,COUNTBLANK(B1:B3)=0),1,0)

复制到单元格之前C4:I4

相关内容