如何在Excel中高效处理时间和日期数据?-实用技巧与方法解析
118
2023-11-13
【摘要】 本书摘自《Excel 数据处理与分析实战宝典_第2版》一书中第8章,第6节,耿勇著。
8.6 INDIRECT 函数
8.6.1 认识INDIRECT函数
INDIRECT 函数语法如下:
INDIRECT(ref_text,[a1])
★ ref_text: 该参数是必需的。它指对单元格的引用。此单元格包含 A1 样式的引用、R1C1 样式的引用、定义为引用的名称或对作为文本字符串的单元格的引用。如果 ref_text 不是 合法的单元格引用,则 INDIRECT 返回错误值。
如果 ref_text 是对另一个工作簿的引用(外部引用),则被引用的工作簿必须已打开。如 果源工作簿没有打开,则INDIRECT 返回错误值#REF!。
★ al: 可选的。它是一个逻辑值,用于指定包含在单元格ref_text 中的引用的类型。
如果al 为 TRUE 或省略,则ref text被解释为 A1 样式的引用。
如果 al 为 FALSE, 则 reftext 被解释为 R1C1 样式的引用。
作为引用最直接的方式就是在单元格中输入引用地址。关于引用的形式,在第5章中已经有 所阐述。INDIRECT 从英文字面意思看的含义为 “间接的、迁回的”。此函数作为引用函数,且 第1个参数为文本形式,因而要用到英文状态下的半角双引号。在此函数中通常将引用地址套上 双引号,然后再传递给INDIRECT 函数。
公式解析:“&”前的 Sheetl 是分表名称,我们知道要取分表C 列中的数据,因此,应将“C” 作为 INDIRECT函数的参数。同时从前述函数中有关引用的基础知识可知,引用其他工作表的单 元格前要用到“!”,然后再通过MATCH 函数定位出“应收结余”在A 列的位置。由于对应C 列 的数值和“应收结余”在A 列的行号位置是相同的,因此,我们就成功地将分表中的数值所在单 元格的列标和行号都确定了下来,从而也就达到了引用“应收结余”对应的C 列的值的目的。
引申扩展:如果某个名称引用了某个单元格区域,我们使用这个名称的时候就相当于在操作其所引用的区域,于是猜想这种返回引用区域的名称也是一种地址,因而使用公式=INDIRECT ("名称")来引用特定的单元格区域。
8.6.2 汇总各分表数据
由于物料代码的排序可能和各分表中物料代码的排序不完全一致,因此这样就不能按单元格 的位置进行求和。观察汇总表的表格结构可知,物料代码按纵向排列、月份按横向排列,因此可 以考虑用SUMIF 函数和INDIRECT 函数实现汇总求和。
在B2 单元格中定义公式如下:
=SUMIF(INDIRECT(BS18"!A:A"),SA2,INDIRECT(BS1&"!B:B"))
公式解析:由于月份在汇总表的 B1:E1 单元格区域中是横向变动的,而物料代码、销售金额 在分表中的列是固定的,考虑到后续有新增的月份数据,因此在SUMIF 函数的第1个参数和第3 个参数中的引用区域前的分表名称用B$1 混合引用,以便于公式向右复制时有更好的延展性。故 此,SUMIF 函数的第1 个参数和第3 个参数分别写成 INDIRECT(B$1&"!A:A") 和 INDIRECT (B$1&"!B:B")。
由于各分表中的物料代码也不一定完全相同,随着业务的发展,有可能新增一些物料代码, 因此,在后续的汇总计算中为防止遗漏数据,可将新增月份的物料代码复制、粘贴到“汇总”表 中的 A 列已有物料代码数据的下方,然后对“汇总”表中的 A 列删除重复项,将公式复制到 A 列最后一个非空单元格所在行对应的需要计算数据的其他单元格即可。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~