本类文章的标签为 ‘函数技巧’


Excel中区分大小写的查找

1 颗星2 颗星3 颗星4 颗星5 颗星 (2 人投票, 平均: 5.00 out of 5)
Loading ... Loading ...

在Excel中,需要查找表中的数值时,通常使用Lookup系列的查找函数,但是这些函数不区分大小写。例如下图所示的查找问题,我们需要得到的结果是6,但是VLOOKUP函数给我的结果却是5。
findcasevalue0
Microsoft Excel MVP Peo Sjoblom给出了一个解决方法,使用了数组公式:

{=INDEX(B1:B6,MATCH(1,–EXACT(A1:A6,D1),0))}

结果如下图所示。
findcasevalue1
注解:

  • INDEX函数返回表或区域中值或值的引用。
  • MATCH函数返回在指定方式下与指定数值匹配的数组中元素的位置。
  • EXACT函数测试两个字符串是否完全相同,如果完全相同则返回TRUE,否则返回FALSE。能够区分大小写。

补充:
还可以使用下面的公式:

=LOOKUP(1,1/EXACT(A1:A6,D1),B1:B6)

相关文章

使用IF函数和SUM函数组成的数组公式进行条件统计

1 颗星2 颗星3 颗星4 颗星5 颗星 (目前还没有人投票)
Loading ... Loading ...

统计某值在单元格区域中出现的次数
例如下图所示,统计指定区域中“迟到”的次数:
arrayformulasample1
使用了数组公式:

{=SUM(IF(B1=B5:B29,1,0))}

其中,单元格B1中是要统计的值,单元格区域B5:B29是统计区域,将要统计的值与统计区域中的单元格逐一比较,相同为1,否则为0,最后相加得到统计结果。
当然,也可以使用COUNTIF函数:

=COUNTIF(B5:B29,B1)

将上例再进一步扩展,如果迟到一次扣10分,那么在这段时间里累计扣分为多少呢?同样使用IF函数和SUM函数组成的数组公式得到结果:

{=SUM(IF(B1=B5:B29,C5:C29,0))}

如下图所示:
arrayformulasample2
统计两个区域中不相同的单元格数
如下图所示,要求统计单元格区域A4:B8和单元格区域D4:E8中不相同的单元格数。
arrayformulasample3
公式如下:

{=SUM(IF(A4:B8<>D4:E8,1,0))}

应用时,两个单元格区域的大小必须相同。在公式中,将两个区域对应的单元格相互比较,如果不相同为1,相同则为0,最后相加得到结果。
小结
从上面的例子可以看出,对于这类要求,可以使用通用的数组公式:

{=SUM(IF(条件,1,0))}

该公式,用于计算条件为True时的次数,其中条件通常是一个逻辑公式。可以将同一个值与单元格区域中的各单元格值进行比较,也可以比较两个相同的区域。

相关文章

SUMIF函数、COUNTIF函数、INDEX和MATCH函数实现条件求和及组合查找

1 颗星2 颗星3 颗星4 颗星5 颗星 (1 人投票, 平均: 4.00 out of 5)
Loading ... Loading ...

问题的提出
如下图1所示,在工作表的A列、B列和C列中存放着一些统计数据,即每天每间隔一小时的数据,现在要求在F列求出每天所对应数据的平均值,在G列中获取每天12时的数据。

图1:原始数据
使用SUMIF函数和COUNTIF函数求每天所对应数据的平均值
第1步:选择单元格F2,输入公式=SUMIF($A$2:$A$73,E2,$C$2:$C$73)/COUNTIF($A$2:$A$73,E2)。
第2步:选择单元格F2,下拉至所有单元格(或双击右下角的填充柄)。
也可以使用名称来简化公式。例如,将列A中的数据命名为Date,列B中的数据命名为Time,列C中的数据命名为Data。此时的公式为:
=SUMIF(Date,E2,Data)/COUNTIF(Date,E2)
使用INDEX函数和MATCH函数实现查找每天12时的数据
第1步:将列E中的数据命名为FindDate,在单元格I1中输入12:00并将其命名为FindTime。
第2步:选择单元格区域G2:G4,输入公式=INDEX(Data,MATCH(FindDate&FindTime,Date&Time,0)),并按下Ctrl+Shift+Enter组合键,即输入数据公式。
最终的结果如下图2所示。

图2:最终结果
以上示例给出了具体步骤,若数据区域有变化,作相应的调整即可。
示例下载:

更详细的示例下载:

相关文章