一、使用名称工作
1. 在公式中使用名称
需要在单元格的公式中调用名称,可以单击【公式】选项卡【用于公式】下拉按钮并选择相应的名称,也可以在公式编辑状态手工输入,名称也将出现在“公式记忆式键入”列表中。
如图1所示,工作簿中定义了营业税的税率名称“Taxtate”,在单元格输入其来头字母”T”或”Ta”,该名称即出现在【公式记忆式键入】列表中。
提示:公式记忆式键入列表中,内置函数全部使用大写字母,定义的名称或列表则将依据用户定义的方式显示。不管使用大写或小写,输入到公式中后都将自动更改为定义的方式并正常使用。
2. 条件格式和数据有效性中使用名称
条件格式和数据有效性在实际工作中应用非常广泛,但不支持直接使用常量数组、合并区域引用和交叉引用,因此必须先定义为名称后,再进行调用。
此外,在Excel 97~2003中,不支持在条件格式和数据有效性中直接引用其他工作表的单元格区域,也可以通过定义名称方式解决。Excel 2010版无此问题。
注意:条件格式和数据有效性中,不得使用其他工作表的“工作表级名称”。
3. 在图表中使用名称
Excel支持使用名称来绘制图表,但在制定图表数据源时,必须使用完整名称格式。例如,在名为“命名”的工作簿中定义了工作簿级名称“销售额”。
在【编辑数据系列】对话框【系列值】编辑框中,输入完整的名称格式,即工作簿名+感叹号+名称:
=命名.xlsx!销售额
如果直接在【系列值】编辑框中输入“=销售额”,将弹出警告对话框。
二、定义名称的技巧
1. 相对引用和混合引用定义名称
在名称中使用鼠标点选方式输入单元格引用时,默认使用带工作表名称的绝对引用方式,例如单击【引用位置】对话框右侧折叠按钮,然后单击选择Sheet1工作表中的A1单元格,相当于输入“Sheet1!$A$1”。当需要使用相对引用或混合引用时,可以通过按F4键切换。
在单元格中的公式里使用相对引用,是与公式所在单元格的形成相对位置关系:在名称中使用相对引用,则是与定义名称时活动单元格形成相对位置关系。例如当B1单元格时当前活动单元格时创建定义名称X,定义中使用公式并相对引用A1单元格,则在C1输入=X时,是调用B1而不是A1单元格。
例1 防止上一行删除的日记账
如图2所示,家庭理财日记账的E列中,从E4单元格开始使用“=E3+C7-D7”的简单公式来计算当前余额。但当数据中某一行删除后,就会导致其下方公式出现#REF!引用错误,如E7单元格。
使用相对引用或混合引用定义名称来引用上一行可以解决此问题。操作方法如下。
步骤1 选择E4单元格(一般选公式的首行),单击【定义名称】按钮。
步骤2 如图5所示,在【新建名称】对话框的【名称】编辑框中输入“此前余额”,在【引用位置】编辑框中输入以下公式后单击【确定】按钮退出对话框:=Sheet1!$E3
步骤3 在E4单元格输入以下公式并双击“填充柄”向下复制:
=此前余额+C4-D4
2. 省略工作表名定义名称
默认情况下,在【引用位置】编辑框中使用鼠标指定单元格引用时,将以带工作表名称的完整的绝对引用方式生成定义公式,形如:
=一月!$A$1
当需要在不同工作表引用各自表中的某个特定单元格区域,例如在二月、三月等工作表中,也需要手工删除工作表名但保留感叹号,实现“工作表名”对相对引用。
例2 应用在各表中取得 本工作表名
如图3所示,为某工程项目的日进度报表,其中,累计进度为前一天的累计进度与当日进度之和,工作表名称分别以1、2、3等数字表示。其中,工作表1是手工输入的初始数据,此后每天在新的报表中重复跨表引用较为麻烦,可以结合在名称中使用“缺省工作表名”的方式,取得工作表名称并作为INDECT函数引用数据。
具体操作方法如下。
步骤1 如图4所示,单击【公式】选项卡【定义名称】按钮,定义名称“sht”,其【引用位置】公式为:
=REPLACE(CELL(“filename,!A1),1,FIND(“)”,CELL(“filename”,!A1)),””)
步骤2 在工作表“2”的D3单元格输入以下公式,并双击填充柄向下复制:
=INDIRECT(sht-1”!RC”,0)+C3
步骤3 用同样的公式设置工作表“3”以及更多其他日报表。
本例在名称使用“!A1”的方式引用A1单元格,在工作表2使用该名称时就相当于“2!A1”,在工作表3时就相当于“3!A1”。因此sht可以在工作表“3”时就返回3,再使用sht-1就得到前一天的工作表名“2”,了用INDIRECT函数的R1CI引用样式相对引用方法,取得对应工作表的相同区域(各工作表结构一致,即累计进行所在单元格)。
3. 定义永恒不变引用的名称
在名称中对单元格区域的引用,即便是绝对引用,也可能因为数据所在单元格区域的插入行(列)、删除行(列)、剪切操作等而发生改变,导致名称与实际期望引用的区域不相符。
如图5所示,将单元格B3:B12定义为名称“语文”,默认为绝对引用。将A8:B8单元格区域或第8行整行剪切后,在第13行执行【插入剪切的单元格】,再打开【名称管理器】,就会发现“语文”引用的单元格区域变为B3:B11。
如果希望永恒不变地引用Sheet1表的B3:B12单元格区域,可以将名称“语文”的【引用位置】改为:
=INDIRECT(“Sheet1!B3:B12”)
如果希望这个名称能够像0那样,在各工作表分别引用各自的B3:B12单元格区域,可将“语文”的【引用位置】公式改为:
=INDIRECT(“B3:B12”)
由于此处 “B3:B12”是作为文本常量使用,无需担心实际单元格删除,也无需使用类似“$B$3:$B$12”的绝对引用方式。
4. 定义动态引用的名称
在实际工作中,需要不断在表格中补充更多的数据,虽然我们可以在公式中使用预设一个固定的范围,例如数据不超过100行,在公式中使用”$A$1:$A$100”之类的引用,但是当最大可能的数据行数和初始时相差巨大,如可能只有几行、几十行数据,也可能会有几万行数据,那么在公式中调整这个额引用将是一件麻烦的事情。
借助引用函数来定义名称,可以根据实际使用的区域变化对数据区域进行实时的“动态引用”。
例3 定义随数据输入扩展区域的动态引用名称
如图6所示,为某家点业务部销售记录,在G2单元格根据E2、F2的月份和产品名称求销量时,由于销售数据会不断补充,因此需要使用动态引用。
可以使用OFFSET函数根据A列日期个数定义名称动态引用数据区域。具体操作如下。
步骤1单击【定义名称】按钮,分别新建名称“日期”、“产品”、“销售量”,【引用位置】处的公式分别如下:
=OFFSET(Sheet1!$A$2,,,COUNT(Sheet1!$A:$A))
=OFFSET(日期,,1)
=OFFSET(日期,,2)
步骤2 在G2单元格输入以下公式:
=SUMPRODUCT((MONTH(日期)=E2)*(产品=E2)*销售量)
本例中,COUT函数统计A列数值(日期是数值)的个数,并使用OFFSET函数返回以A2单元格为起点,高度与日期个数相同的单元格区域,当继续输入新的数据时,引用区域将自动随 COUNT返回的结果增加。产品和销售量的引用区域,则利用定义的动态引用区域“日期”,分别偏移1、2列获得。
注意:1. COUNT用于统计数值个数,如果需要统计文本,请使用COUNTA函数并扣除标题行数。
2.当单元格区域存在空行时,用此方法引用区域将不能引用到 实际最后一行数据,可以按照定位最后一个数值 后左后一个文本等方法定义名称。
网友评论