EXCEL中COUNTIF和OR函数嵌套使用

发布网友

我来回答

5个回答

热心网友

Indirect函数是引用函数,具有非常强大的功能。很多初学者都会对其用法感到不解,或一知半解。今天就让我们一起来学习Indirect函数,深刻挖掘其函数内涵,彻底发挥其威力,让我们的工作效率更上一层楼。

函数语法:INDIRECT(ref_text,[a1])
Ref_text 为对单元格的引用,此单元格可以包含 A1-样式的引用、R1C1-样式的引用、定义为引用的名称或对文本字符串单元格的引用。如果 ref_text 不是合法的单元格的引用,函数 INDIRECT 返回错误值#REF!或#NAME?。
如果 ref_text 是对另一个工作簿的引用(外部引用),则工作簿必须被打开。如果源工作簿没有打开,函数 INDIRECT 返回错误值#REF!。
a1 为一逻辑值,指明包含在单元格ref_text 中的引用的类型。
如果 a1 为 TRUE 或省略,ref_text 被解释为 A1-样式的引用。
如果 a1 为 FALSE,ref_text 被解释为 R1C1-样式的引用。

特别注意:在excel中对单元格的引用有两种表示方式,分别为A1和R1C1。在 R1C1 引用样式中,Excel 使用"R"加行数字和"C"加列数字来指示单元格的位置。(R是Row(行)的英文首字母,C是Column(列)的英文首字母)。单元格绝对引用 R1C1 与 A1 引用样式中的绝对引用 $A$1 等价。R1C1= $A$1。

一、 INDIRECT函数基础用法

indirect函数的引用的两中形式。
一种加引号,一种不加引号。
=INDIRECT("A1")——加引号,文本引用,即引用A1单元格所在的文本,因此结果为1000.
=INDIRECT(A1)——不加引号,地址引用。引用的是A1单元格地址,但是找不到A1单元格的赋值,因此出现错误。

二、 INDIRECT函数制作二级下拉菜单

请根据国家和武将制作二级下拉菜单

1、 根据所选内容定义名称,选中数据源,公式——根据所选内容定义名称,将源数据都选中,勾选首行,最左列不要勾选。界面如下:、

2、 选中A列空白区域,设置数据有效性,设置一级下拉菜单。

选中A2:A9,选项栏:数据——数据验证,设置——序列。输入:=$D$1:$E$1

界面如下:

3、 设置二级下拉菜单。

选中B2:B9,数据——数据验证,设置——序列,来源中输入:=INDIRECT(A2),点击确定即可。

我们要将A列中的数据全部转为5列数据,即把从A1到A25单元格数据转到5列即可。Indirect函数引用单元格的数据。因此我们要引用A1,A2,A3,A4,A5…. A25单元格数据。

ROW(A1)是行函数,往下拖动会自动生成1,2,3,公差为1 的自然数数列。5*ROW(A1)-4往下拖动会自动生成1,6,11,16…,公差为5的自然数数列,(特别注意,如果转换为8列,那么公差必须为8,只要将公式中的5改为8即可。)

COLUMN(A1)是列函数,往下拖动会自动生成1,2,3,公差为1 的自然数数列。COLUMN(A1)-1往下拖动会自动生成0,1,2,3,公差为1 的,整数数列。

5*ROW(A1)-4+COLUMN(A1)-1是一个四则计算式,它的运算优先级比&高,因此excel会先进行计算式的运算,再和连接符使用。该计算式往下拖动会自动生成1,2,3,公差为1 的自然数数列。

最后再和indirect函数进行嵌套,通过indirect函数对单元格地址的引用,从而实现将一列数据转为多列数据。

公式最后加上&"",意思是如果数据引用完毕,会进行容错处理,设置为空白单元格。

热心网友

=SUM(COUNTIF(F:F,{"*300*","*12*"}))+SUM(COUNTIF(F:F,{300,12}))

 

热心网友

=COUNTIF(F:F,"*"&12&"*")+COUNTIF(F:F,"*"&300&"*")
利用通配符*(表示任意字符)统计,需要注意的是,因为加了通配符,因而无论是12或是300,都被视为文本,即F列的常规数值将不会被统计。如果F列内容尚未输入,能预先设置单元要格式,如内容已经完成,可通过分列的方式进行转换。

热心网友

试试公式:
=SUMPRODUCT(N(OR(F1:F100={12,300})))

=SUM(COUNTIF(F:F,{12,300}))
有没有一个单元格中写两个数字的情况呢?如果有,那就比较复杂了。

热心网友

=sumproct(isnumber(find("12",F1:F100))*1)+sumproct(isnumber(find("300",F1:F100))*1)-sumproct(isnumber(find("12",F1:F100))*isnumber(find("300",F1:F100)))

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com