在Excel中引用命名范围的单个行/列的最短方法?


8

我有一个命名范围(NamedRange1),我需要在公式中引用该范围的第一行和第一列。我想出了以下几点:

  • 第一排:

    INDIRECT("R" & ROW(UnpivotSource) & "C" & COLUMN(UnpivotSource) & ":R"& ROWS(UnpivotSource) +ROW(UnpivotSource) -1 & "C" & COLUMN(UnpivotSource),0)

  • 第一栏:

    INDIRECT("R" & ROW(UnpivotSource) & "C" & COLUMN(UnpivotSource) & ":R"& ROW(UnpivotSource) & "C" & COLUMNS(UnpivotSource) + COLUMN(UnpivotSource) -1,0)

这似乎很麻烦,特别是因为Excel对象模型公开Rows,并Columns在VBA。有没有更简洁的表达方式?

Answers:


15

行:

INDEX(UnpivotSource,1,0)

柱:

INDEX(UnpivotSource,0,1)

请注意,这仅适用于连续的命名范围,对于范围的区域有一个索引函数,但是如果您想要除第一行或第一列以外的其他内容,可能会变得棘手。


漂亮,作品很棒,而且方法更短。谢谢!
technomaologic

在XL的引擎盖,你想,如果我用这个技术,比如马克斯,这将是更有效的如Max("A:A")比较Max(index(myNmdRang,0,1))
whytheq '16

@whytheq,我的猜测是,对于大列而言,Max("A:A")这将是最有效的。您可以进行时间和测试,请参阅此处:stackoverflow.com/questions/198409/…
Lance Roberts

@LanceRoberts我在此处添加了一个关于SO的更详细的问题:stackoverflow.com/questions/36197157 / ...您可能想回答,因为当前答案还不够好。
whytheq '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.