如果具有多个条件和唯一值,请计算

时间:2015-10-14 15:29:37

标签: excel excel-formula

我有一张数据,想要使用以下标准对原始数据中的值进行计数:

  • 如果原始数据中的值重复,例如London No1London No1 AUTO只计算一次,但如果原始数据中的值为London No1,{{1然后只计算London No2(仅计算London No1 Auto2)。

    原始数据

     London No1 
     London No2 
     London No1 Auto
     London No2 Auto 
     Bristol No1 Auto
     Cardiff No1
     Cardiff No2

在此示例中,结果应为:伦敦 - London No1,布里斯托尔 - London No2,加的夫 - 2

http://i.stack.imgur.com/E7oco.jpg

2 个答案:

答案 0 :(得分:1)

此解决方案仅使用一个“工作列”并假定以下内容:

  • 原始数据列表位于A1:A16 (根据需要调整)
  • 原始数据记录遵循此语法City NoX string,均以空格分隔。 X是一位数字(如果有更大的数字可以让我知道,以便调整公式)

(所有范围包括标题)

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

网站原始数据

中要计算的城市列表

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

(按 [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 ), "" )

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

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

enter image description here

答案 1 :(得分:0)

<强>假设

因此,如果我理解您的说明,您就会有一份城市列表,而且每个城市可能都有不同的城市,而且#34; No&#34;在上面。即:有些将是&#34; No1&#34;,&#34; No2&#34;等等。另外,有些人可能有&#34; Auto&#34;在上面。有时会有重复,即:&#34; London No1&#34;可能会出现两次。此外,无论是否&#34; Auto&#34;如果出现,它将是重复的&#34;否&#34;已经出现了。即:&#34;伦敦第一&#34;与#34; London No1 Auto&#34;。

相同

帮助者专栏

为了计算每个城市有多少个唯一实例,我建议你使用一个帮助列,首先删除单词auto,然后只显示自己,如果它不是先前条目的副本。

将数据放在A栏,从A2开始,在B2中输入此公式并复制:

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

此公式的工作原理如下:

- 首先它取A2中的文字,并取代单词&#34; Auto&#34;用&#34;&#34;。然后它对结果文本进行TRIMS,这意味着它会在结尾处删除任何尾随空格。它采用修剪后的文本,并尝试将其与列B中的前一行进行匹配。如果它没有找到匹配项,则会导致错误。如果它是ISERROR,那么它显示文本(因为它是第一次出现)。否则,它会显示&#34;&#34;。

数组公式

现在您已经在B列中有了这个,我们将使用数组公式来计算每个城市出现的唯一实例数。数组公式是一个特定的公式,它计算整个范围内的许多时间,而不是仅计算一个单元格。然后它返回一个结果数组,我们需要将其合并为一个答案。例如:

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

[用CTRL + SHIFT + ENTER确认而不是只用ENTER确认]

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

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

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

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

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