作者:乔山办公网日期:
返回目录:excel表格制作
如果需要向下填充时,后面的D19:I19与前面保持同步,那么输入=SUMPRODUCT(D19:I19,INDIRECT(CHOOSE(U19,"整行!","整列!","全部!")&D19:I19))
在复S5单元格中输入以下公式,然后向右填充制公式
=COUNTIF($L5:$Q5,OFFSET($C5,COLUMN()-19,))
当公式向右填充时,自动以百C5单元格向下偏移,如果中途删除整列,那么度COLUMN()中的列不复存在,会引用后面的以当前列问为递增序列的列标号不存在。答
先介绍INDIRECT,这个函数相当于其它语言里面的EVAL,功能是把参数表达式作为一个字符串进行运算,然后把运算的结果作其它函数的参数或者整个公司的结果。例如INDIRECT("A10")本质和A10是一样;再如INDIRECT("A"&A1),这个公式的结果与A1的值有关,如果A1为10那么整个公式的结果就是A10,如果A1的值是9那么整个公式的结果就是A9。
你的例子公式中的INDIRECT("1!"&XX&":"&XX)所表示的范围与XX的值有关,如果XX的值为3则整个公式的结果就是1!3:3,也就是工作表1的第3行;如果XX的值是B则整个公式的结果就是1!B:B,也就是工作表的第B列。
类似,你公式里面的INDIRECT("1!"&x&":"&x)的值与x的值有关,如果x的值是3则整个公式的结果就是1!3:3,也就是工作表1的第3行;如果XX的值是B则整个公式的结果就是1!B:B,也就是工作表的第B列。
现在介绍一下SUMIF函数,这是一个典型的按条件汇总函数,一般的格式是SUMIF(条件范围,条件,汇总范围),函数在条件范围里面找符合条件的数据,然后把对应在汇总范围里面的内容进行汇总,举例有如下表格:
A列 B列 C列 D列
1行 姓名 班级 语文 数学
2行 张三 一班 50 60
3行 李四 一班 51 68
4行 王五 二班 52 67
5行 赵六 二班 53 66
6行 钱七 二班 54 65
那么计算一班所有同学的语文成绩的公式为=SUMIF(B:B,"一班",C:C),公式的含义是把B列里面内容为一班的学生对应C列的数据加起来,结果101。
最后来看你的公式=SUMIF(INDIRECT("1!"&XX&":"&XX),$A2,INDIRECT("1!"&x&":"&x)),结果与XX和x的值有关,假设XX的值为"B",x的值为"C",那么公式就是把表1中B列值为本表A2单元格的那些行的C列数据合计起来。
此外,你的公式里面的$A2意义就是A2,在A前面加上一个$符号,表示把这个公式复制到其它列或者向左右拖动e799bee5baa6e4b893e5b19e336的时候A不变,如果不在A前面加上$,那么把公式向右拖动的时候会变为B2。类似的还有A$2、$A$2的写法。
为何不直接用:=AVERAGE(INDIRECT("J"&ROW()+1&":J"&MIN(IF(INDIRECT("A"&ROW()+1):A$10000<>"",ROW(INDIRECT("A"&ROW()+1&":A$10000"))))-1))
来计算平百均值呢?
添加IF以后,度整个公式作为IF的一知个参数,而IF成为了数组公道式,那么回SUM()/COUNT()也需要按数组方式计算,因此答结果是错误的