【问题标题】:Count If with multiple criteria and unique valuesCount If 具有多个条件和唯一值
【发布时间】:2015-10-20 00:36:15
【问题描述】:

我有一张数据表,想使用以下条件对原始数据中的值进行计数:

  • 如果原始数据中的值重复例如London No1London No1 AUTO只计算一次,但如果原始数据中的值是London No1London No2London No1 Auto则只计算@ 987654328@(仅计算 London No1London No2)。

    原始数据

     伦敦 No1
     伦敦 2 号
     伦敦一号汽车
     伦敦二号汽车
     布里斯托 1 号汽车
     卡迪夫 1 号
     加的夫 2 号

在此示例中,结果应为:伦敦 - 2,布里斯托尔 - 1,卡迪夫 - 2

【问题讨论】:

  • 这个问题一点都不清楚。您的原始数据是什么样的,您希望您的结果是什么样的?
  • 抱歉,我认为这可能会造成混淆。所以在原始数据中,我得到了 London NO1 和 London No1 Auto,然后我得到了 Bristol NO1 Auto。我需要计算伦敦有多少个,但是如果有 NO1 和 NO1 Auto 我需要告诉我只有 1 个,但是当有 Bristol NO1 Auto 我需要计算并告诉我布里斯托尔也有 1 个。这有意义吗?
  • 请上传您的数据图片或填写表格,以显示您的意思的更广泛示例。请看一下在您的原始帖子中重写您的段落;其中一些我根本无法解析。
  • 我已经编辑了原始查询并上传了照片。我认为我无法更好地解释我正在努力做的事情,希望这现在有意义。
  • @Dovile 什么状态。您是否尝试过提供的任何答案?

标签: excel excel-formula


【解决方案1】:

此解决方案仅使用一个“工作列”并假设如下:

  • 原始数据列表位于A1:A16(根据需要调整)
  • 原始数据记录遵循以下语法CityNoXstring,全部由空格分隔。 X 是一位数字(请告诉我是否会有更大的数字以调整公式)

(所有范围包括标题)

结果列表位于同一工作表B1:D16 (根据需要调整)并包括以下字段:

网站:要计入原始数据

的城市列表

唯一记录:用于在计数之前列出唯一的“干净”城市记录。在D2 中输入这个FormulaArray 并复制到最后一条记录

(公式数组是按 [Ctrl] + [Shift] + [Enter] 同时)

=IFERROR( INDEX(
MID( $A$2:$A$16, 1, 2 + FIND( "No", $A$2:$A$16 )),
MATCH( 0, COUNTIF( D$1:D1,
MID( $A$2:$A$16, 1, 2 + FIND( "No", $A$2:$A$16 ))), 0 ) * 1 ), "" )

结果计数:在C1 中输入此FormulaArray 并复制到最后一条记录

=IF( EXACT( $B2, "" ), "",
IFERROR( COUNTIF( $D$2:$D$16, $B2&"*" ), "" ))

【讨论】:

  • 您好,非常感谢您的回答,但是我无法使其正常工作,您介意给我发电子邮件吗?或者上传文件让我看看公式?
  • 您遇到了什么问题?您是否将公式输入为 FormulaArray?使用[Ctrl] + [Shift] + [Enter] 键输入FormulaArray,如果输入正确,您将看到{ } 出现在公式周围。
【解决方案2】:

假设

因此,如果我理解您的说明,您就有了一个城市列表,每个城市可能都有不同的“否”。即:有些会是“No1”、“No2”等。此外,有些可能会有“Auto”。有时会出现重复,即:“London No1”可能出现两次。此外,无论“自动”一词是否出现,如果“否”已经出现,它将是重复的。即:“London No1”与“London No1 Auto”相同。

帮助列

要计算每个城市有多少个唯一实例,我建议您使用一个帮助列,该列首先删除 auto 一词,然后仅在它不与先前条目重复时才显示它自己。

将您的数据放在 A 列,从 A2 开始,在 B2 中输入此公式并向下复制:

=IF(ISERROR(MATCH(TRIM(SUBSTITUTE(A2,"Auto","")),$B$1:$B1,0)),TRIM(SUBSTITUTE(A2,"Auto","")),"")

这个公式的作用如下:

-首先它获取 A2 中的文本,并将单词“Auto”替换为“”。然后它修剪生成的文本,这意味着它会在末尾删除任何尾随空格。它获取修剪后的文本,并尝试将其与 B 列中的前几行匹配。如果找不到匹配项,则会导致错误。如果是 ISERROR,那么它会显示文本(因为它是第一次出现)。否则显示“”。

数组公式

既然您在 B 列中有此内容,我们将使用数组公式来计算每个城市出现了多少个唯一实例。数组公式是一种特定公式,它在整个范围内计算多次,而不仅仅是一个单元格。然后它返回一个结果数组,我们需要将其折叠成一个答案。例如:

=SUM(IF(A1:A5>5,B1:B5,""))

[使用 CTRL + SHIFT + ENTER 确认,而不仅仅是 ENTER]

在上面的示例中,数组公式将检查 A1:A5 中的每个单独的单元格是否是大于 5 的数字。如果是,它将返回该行中 B 列的单元格。然后它从 B 列(其中 A > 5)获取所有结果答案,并将它们求和为一个数字。

在这种情况下,数组公式将如下 [从图像中的 D5 开始,向右移动一列,紧挨第一个城市名称的右侧,并为每个城市向下复制;我假设您的原始数据来自 A2:A100]:

=SUM(--NOT(ISERROR(SEARCH(C5,$B$2:$B$100))))

使用 CTRL + SHIFT + ENTER 确认此公式,而不仅仅是 ENTER。然后将 C 列中的每个城市名称复制下来。

它的工作原理是尝试在 B 列中的每个唯一值中搜索 C 列的该行中显示的城市名称。无论城市名称不存在,ISERROR 为 B 列的该元素返回 TRUE。然后 NOT 将所有TRUE 到 FALSE,反之亦然。然后 -- 告诉 excel 将 TRUE 和 FALSE 转换为它们的等效数字 [1 和 0,分别]。因此,每场比赛我们都会有一个 TRUE [AKA 1],而其他所有比赛都有一个 FALSE [AKA 0]。所有 1 的总和是该城市名称在您的唯一条目列表中的匹配数。

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多