计数如果有多个标准和唯一值

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

  • 如果原始数据的值重复例如London No1London No1 AUTO只计算一次,但如果原始数据的值是London No1London No2 2 London No1 AutoLondon No1 Auto然后只计2London No1London No2只)。

    原始数据

     伦敦No1 
     伦敦No2 
     伦敦No1汽车
     伦敦No2汽车 
     布里斯托尔1号汽车
     加的夫No1
     加的夫No2 

在这个例子中,Result应该是:London – 2 ,Bristol – 1 ,Cardiff – 2

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

该解决scheme只使用一个“工作列”,并假设如下:

  • 原始数据列表位于A1:A16 (根据需要调整)
  • 原始数据logging遵循此City NoX string语法全部由空格分隔。 X是一位数字(请告诉我是否会有更大的数字来调整公式)

(所有的范围包括标题)

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

网站 :计入原始数据的城市列表

独特logging :用于在计数之前列出唯一的“清洁”城市logging。 在D2input此FormulaArray并复制到最后一条logging

(公式数组同时按 [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 ), "" ) 

结果计数 :在C1input该FormulaArray并复制到最后一个logging

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

在这里输入图像说明

假设

所以,如果我明白你的说明,你有一个城市的名单,每个城市可能有不同的“否”。 即:有些会是“No1”,“No2”等。另外,有些可能会有“自动”的。 有时重复,即:“伦敦第一”可能会出现两次。 此外,不pipe是否出现“自动”一词,如果“否”已经出现,它将是重复的。 即:“伦敦No1”与“伦敦No1 Auto”相同。

帮手列

要计算每个城市有多less独特的实例,我build议您使用一个帮助列,它首先删除auto这个词,然后只有在它不是事先录入的副本时才显示自己。

在列A中的数据中,从A2开始,在B2中input此公式,并复制下来:

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

这个公式的工作原理如下:

– 首先取A2中的文字,用“”replace“Auto”。 然后它TRIMS结果文本,这意味着它尾部任何尾随空格。 它使用修剪后的文本,并尝试将它与B列中的前一行进行匹配。如果找不到匹配项,则会导致错误。 如果它是错误的,那么它显示文本(因为这是它第一次出现)。 否则,显示“”。

数组公式

现在你在B列中有了这个,我们将使用数组公式来计算每个城市有多less独特的实例出现。 数组公式是一个特定的公式,它可以计算整个范围内的许多时间,而不仅仅是一个单元格。 然后它返回一个结果数组,我们需要折叠成一个答案。 例如:

 =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中search该列中显示的城市名称的每个唯一值来工作。在城市名称不存在的情况下,ISERROR为列B的该元素返回TRUE。然后NOT不将所有TRUE都变为FALSE反之亦然。 然后,告诉excel将TRUE和FALSE转换为它们的数值[分别为1和0]。 所以我们每场比赛都会有一个真实的[AKA 1],而其他所有的都会有FALSE [AKA 0]。 全“1”的总数是唯一条目列表中该城市名称的匹配数量。