该函数引用当前工作表的OFFSET($A$1:$Z$25,2,3,4,5)
范围。$D$3:$H$6
如果我将“address”作为第一个参数传递给该CELL
函数,并将上述OFFSET
函数作为第二个参数,则我只能获得范围内第一个单元格的地址。换句话说,
=CELL("address", OFFSET($A$1:$Z$25,2,3,4,5))
产生的值为$D$3
。
有没有办法编写一个函数来返回某个单元格区域的完整引用? 例如:
=RANGE("address", OFFSET($A$1:$Z$25,2,3,4,5))
这将产生一个值$D$3:$H$6
?
编辑:使用一些 VBA 即可轻松完成此操作。我希望避免这种情况,这样我就不必将其保存为启用宏的 .xlsm 文件。这是我尝试仅使用工作表函数实现的 VBA 函数:
Function ShowAddress(CellRange As Range) As String
ShowAddress = CellRange.Address
End Function
注意:我想要这个的动机是为了帮助调试复杂动态命名范围的创建。我知道我可以将公式复制并粘贴到 Goto 框中,但这会给开发周期增加相当多的工作量。
答案1
Cell() 仅返回第一的多单元格引用中的单元格。请参阅支持文章。
如果要构建多单元格引用,可以使用 Index() 表示第一个范围,使用另一个 Index 表示范围中的最后一个单元格。将两个 Index 函数与 : 运算符组合,结果将是一个范围。请注意,此类公式可用于需要范围的参数中,例如 Sum(),或用于名称管理器中的命名公式,但不能单独用于工作表单元格中,因为它返回一个范围。
=index(sheet1!$A$1:$Z$25,3,4):Index(Sheet1!$A$1:$Z$25,6,8)