命名范围不会返回正确数量的单元格

时间:2016-10-21 02:07:10

标签: excel vba excel-vba

所以我的专栏中填充了B5:B28的名字。查找动态命名范围,我使用以下公式获取上述列中的名称列表:

=OFFSET(Overview!$B$5, 0, 0, COUNTA(Overview!$B$5:$B28),1)

请注意,列B中填充的唯一行是B2,直到B28,其中B5是名称列表的起点。即使$B28下面的行中没有任何内容,上面公式中的B28也会不断变化。这就是问题所在。

B5:B28中的所有行都填充了文字字符串(没有公式),并且没有空白单元格。当我得到Range("Names").Rows.Count的值时,它只返回21,3行。我知道范围是流动的,但我不明白为什么COUNTA得到的数量较少。

检查=COUNTA(Overview!$B$5:$B28),输出正确的值24.有人可以向我解释发生了什么事吗?

1 个答案:

答案 0 :(得分:2)

YowE3K的评论告诉你为什么,这里转载完整性

  

当您将“名称”范围定义为$ B $ 5:$ B28,您是否在第4行的单元格中?如果是这样,当在VBA中引用时(隐含地来自单元格A1),范围将仅来自$ B $ 5:$ B25,因此只有21行大小。我无法理解为什么Excel中的公式(来自非A1单元格)会认为大小不是24行,如果该单元格中的公式引用$ B $ 5:$ B28。 (显然,如果它提到姓名,而不是$ B $ 5:$ B28,它将根据公式的哪一行减少或延长。)

形成公式的更好方法是(假设B2B3B4 始终已填充)

=OFFSET(Overview!$B$1, 4, 0, COUNTA(Overview!$B:$B)-3,1)