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

所以我有一个填写B5:B28名字的专栏。 查找dynamic的命名范围,我使用下面的公式来获取该列中的名称列表:

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

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

B5:B28中的所有行都填充了string(无公式),并且没有空白单元格。 当我得到Range("Names").Rows.Count ,它只返回Range("Names").Rows.Count行。 我知道范围是stream动的,但我不明白为什么COUNTA的数量减less。

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

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

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

形成公式的更好的方法是(假设B2B3B4 总是被填充)

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