Table of contents
本教程简要介绍了ADDRESS函数的语法,并展示了如何使用它来返回Excel单元格地址等。
要在Excel中创建一个单元格引用,你可以手动输入列和行的坐标。 或者,你可以从提供给ADDRESS函数的行号和列号中获得一个Excel单元格地址。 单独使用几乎没有意义,在无法直接引用一个单元格的情况下,与其他函数结合使用这一技术可能是唯一的解决方案。
Excel ADDRESS函数--语法和基本用途
ADDRESS函数旨在根据指定的行号和列号获得Excel中的单元格地址。 单元格地址以文本字符串的形式返回,而不是实际的引用。
该功能在Microsoft 365 - Excel 2007的所有版本的Excel中都可用。
ADDRESS函数的语法如下。
ADDRESS(row_num, column_num, [abs_num], [a1], [sheet_text] )前两个参数是必需的。
行数_num - 要在单元格引用中使用的行号。
列_num - 的列号来建立单元格引用。
最后三个参数是可选的,它们指定了单元格的引用格式。
abs_num - 参考类型,绝对或相对。 它可以采用以下任何数字;默认是绝对的。
- 1或省略--绝对单元格引用,如$A$1
- 2 - 混合引用:相对列和绝对行,如A$1
- 3 - 混合引用:绝对列和相对行,如$A1
- 4 - 相对的单元格引用,如A1
a1 - 参考样式,A1或R1C1。 如果省略,将使用默认的A1样式。
- 1或TRUE或省略 - 返回A1参考样式中的单元格地址,其中列是字母,行是数字。
- 0或FALSE - 返回R1C1参考样式中的单元格地址,其中行和列由数字表示。
纸张_文本 - 在外部引用中包含的工作表名称。 工作表名称应作为文本字符串提供,并包含在引号中,例如 "Sheet2"。 如果省略,不使用工作表名称,地址默认为当前工作表。
比如说。
=ADDRESS(1,1)
- 返回第一个单元格的地址(即第一行和第一列交汇处的单元格),作为绝对单元格引用$A$1。
=address(1,1,4)
- 返回第一个单元格的地址,作为相对单元格引用A1。
在下表中,你会发现还有一些可以通过ADDRESS公式返回的参考类型。
公式 | 结果 | 描述 |
=ADDRESS(1,2) | $B$1 | 绝对的单元格引用 |
=address(1,2,4) | B1 | 相对的单元格参考 |
=address(1,2,2) | B$1 | 相对列和绝对行 |
=address(1,2,3) | $B1 | 绝对列和相对行 |
=address(1,2,1,false) | R1C2 | R1C1风格的绝对参考 |
=address(1,2,4,false) | R[1]C[2] | R1C1风格的相对参考 |
=ADDRESS(1,2,1,, "Sheet2") | 第二张纸!$B$1 | 对另一个工作表的绝对引用 |
=ADDRESS(1,2,4,, "Sheet2") | 单张2!B1 | 与另一个工作表的相对参考 |
如何在Excel中使用ADDRESS函数--公式实例
下面的例子显示了如何在更大的公式中使用ADDRESS函数来完成更困难的任务。
返回给定行和列中的单元格值
如果你的目标是根据某个单元格的行号和列号从该单元格获取一个值,请将ADDRESS函数与INDIRECT一起使用。
INDIRECT(ADDRESS(row_num, column_num))ADDRESS函数以文本形式输出单元格地址,INDIRECT函数将该文本转化为正常的引用并返回相应单元格的值。
例如,要根据E1中的行号和E2中的列号获得一个单元格值,请使用这个公式。
=indirect(address(e1,e2))
获取具有最高或最低值的单元格的地址
在这个例子中,我们首先通过使用MAX和MIN函数找到B2:B7范围内的最高和最低值,并将这些值输出到特殊单元格中。
细胞E2。 =MAX(B2:B7)
细胞F2。 =MIN(B2:B7)
然后,我们将使用ADDRESS与MATCH函数相结合来获得单元格地址。
具有最大值的单元格。
=address(match(e2,b:b,0), column(b2))
有最小值的单元格。
=address(match(f2,b:b,0), column(b2))
如果你不希望最高值和最低值出现在不同的单元格中,你可以将MAX/MIN函数嵌套在MATCH的第一个参数中。 例如。
具有最高值的单元格。
=address(match(max(b2:b7),b:b,0), column(b2))
具有最低值的单元格。
=address(match(min(b2:b7),b:b,0), column(b2))
这些公式是如何工作的
为了找到行号,你使用MATCH(lookup_value, lookup_array, [match_type])函数,该函数返回lookup_value在lookup_array中的相对位置。 在我们的公式中,lookup值是由MAX或MIN函数返回的数字,而lookup数组是整个列。 因此,lookup值在数组中的相对位置与工作表上的行号完全匹配。
当然,你也可以在公式中直接输入数字,但如果目标列在工作表的中间,COLUMN可以省去手工计数的麻烦。
从一个列号中获取一个列字母
要把任何给定的数字变成一列字母,请使用SUBSTITUTE中的ADDRESS函数。
替代(地址(1, 列数 ,4), "1","")作为一个例子,让我们找到A2中的数字所对应的列字母。
=substitute(address(1,a2,4), "1","" )
看看下面的结果,我们可以说,工作表的第一列是A,这很明显;第10列是J,第50列是AX,第100列是CV。
这个公式如何运作
对于初学者,设置ADDRESS函数以返回对目标列中第一个单元格的相对引用。
- 对于行号,使用1。
- 对于列号,提供包含该数字的单元格的参考,在我们的例子中是A2。
- 对于abs_num参数,输入4。
结果,ADDRESS(1,A2,4)将返回A1。
为了摆脱行坐标,将上述公式包在SUBSTITUTE函数中,并将 "1 "替换为空字符串("")。 完成!(见下文)。
获取一个指定范围的地址
要在Excel中找到一个命名区域的地址,你首先需要获得第一个和最后一个单元格的引用,然后将它们连接起来。 这在前动态Excel(2019年及以前)和动态阵列Excel(Office 365和Excel 2021)中的工作方式有点不同。 下面的例子是针对Excel 2019 - Excel 2007的。 Excel 365和Excel 2021的说明在这里。
如何获得一个区域中第一个单元格的地址
要返回一个命名区域中第一个单元格的引用,请使用这个通用公式。
地址(ROW) 范围 ),COLUMN( 范围 ))假设范围被命名为 "销售",实际公式如下。
=ADDRESS(ROW(Sales), COLUMN(Sales))
并返回区域内左上角单元格的地址。
在这个公式中,ROW和COLUMN函数分别返回一个数组,包含了单元格中所有的行号和列号。 基于这些数字,ADDRESS函数建立了一个单元格地址数组。 但由于这个公式是在一个单元格中输入的,所以只显示数组的第一项,也就是对应于单元格中的第一个单元格。
如何获得一个区域内最后一个单元格的地址
要找到一个指定区域中最后一个单元格的地址,可以使用这个通用公式。
地址(ROW) 范围 )+ROWS( 范围 )-1,COLUMN( 范围 )+COLUMNS( 范围 )-1)应用于我们名为 "销售 "的范围,该公式的形状如下。
=ADDRESS(ROW(Sales) + ROWS(Sales)-1, COLUMN(Sales) + COLUMNS(Sales)-1)
并返回对该区域右下方单元格的引用。
这一次,我们需要更复杂的计算来算出行数。 像上一个例子一样,ROW函数给了我们一个范围内所有行数的数组,在我们的例子中是{4;5;6;7}。 我们需要用总行数减去1来 "移动 "这些数字,这样数组中的第一项就成为最后的行数。 为了找到总行数,我们使用ROWS函数和然后,我们在初始数组的每个元素上加3来做所需的移动:{4;5;6;7}+3={7;8;9;10}。
列号的计算方式类似:{2,3,4}+3-1={4,5,6}。
从上面的行号和列号数组中,ADDRESS函数组装了一个单元格地址数组,但只返回对应于该区域最后一个单元格的第一个地址。
同样的结果也可以通过从行号和列号的数组中选取最大值来实现。 然而,这只在数组公式中起作用,需要按Ctrl + Shift + Enter才能正确完成。
=ADDRESS(MAX(ROW(Sales)), MAX(COLUMN(Sales)))
如何获得一个命名范围的完整地址
要返回一个命名范围的完整地址,你只需要将前面例子中的两个公式连接起来,并在中间插入范围操作符(:)。
地址(ROW) 范围 ), COLUMN( 范围 )) & ":" & ADDRESS(ROW( 范围 ) + ROWS( 范围 )-1, COLUMN( 范围 ) + COLUMNS( 范围 )-1)为了使其适用于我们的样本数据集,我们用真正的范围名称 "Sales "替换通用的 "range"。
=ADDRESS(ROW(Sales), COLUMN(Sales)) & ":" & ADDRESS(ROW(Sales) + ROWS(Sales)-1, COLUMN(Sales) + COLUMNS(Sales) -1)
并获得完整的范围地址作为一个 绝对的 参考 $B$4:$D$7。
要将范围地址作为一个 相对 参考(没有$符号,如B4:D7),将两个ADDRESS函数中的abs_num参数设为4。
=ADDRESS(ROW(Sales), COLUMN(Sales), 4) & ":" & ADDRESS(ROW(Sales) + ROWS(Sales)-1, COLUMN(Sales) + COLUMNS(Sales) -1, 4)
当然,也可以在第一个和最后一个单元格的单独公式中做同样的修改,结果将与此类似。
如何在Excel 365和Excel 2021中获得一个命名范围的地址
与旧版本中传统的 "一个公式-一个单元格 "的行为不同,在新的Excel中,任何有可能返回多个值的公式都会自动这样做。 这种行为被称为溢出。
例如,下面的公式不是返回第一个单元格的地址,而是输出一个指定区域中每个单元格的地址。
=ADDRESS(ROW(Sales), COLUMN(Sales))
要获得的地址是 第一单元 为此,在范围名称前加上@符号(隐式交叉运算符)。
=ADDRESS(@ROW(Sales), @COLUMN(Sales))
以类似的方式,你可以修复其他公式。
为了获得 最后一个单元格 在这个范围内。
=ADDRESS(@ROW(Sales) + ROWS(Sales) -1, @COLUMN(Sales) + COLUMNS(Sales) -1)
为了获得 指定范围的地址 :
=ADDRESS(@ROW(Sales), @COLUMN(Sales)) & ":" & ADDRESS(@ROW(Sales) + ROWS(Sales)-1, @COLUMN(Sales) + COLUMNS(Sales)-1)
下面的屏幕截图显示了结果。
提示:在动态数组Excel中打开带有旧版本创建的公式的工作表时,Excel会自动插入一个隐含的交叉运算符。
这就是在Excel中返回单元格地址的方法。 要想仔细了解本教程中讨论的所有公式,欢迎下载下面的工作簿样本。 感谢你的阅读,希望下周能在我们的博客上见到你!
供下载的实践工作手册
Excel ADDRESS函数--公式实例(.xlsx文件)