所以我的专栏中填充了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.有人可以向我解释发生了什么事吗?
答案 0 :(得分:2)
YowE3K的评论告诉你为什么,这里转载完整性
当您将“名称”范围定义为$ B $ 5:$ B28,您是否在第4行的单元格中?如果是这样,当在VBA中引用时(隐含地来自单元格A1),范围将仅来自$ B $ 5:$ B25,因此只有21行大小。我无法理解为什么Excel中的公式(来自非A1单元格)会认为大小不是24行,如果该单元格中的公式引用$ B $ 5:$ B28。 (显然,如果它提到姓名,而不是$ B $ 5:$ B28,它将根据公式的哪一行减少或延长。)
形成公式的更好方法是(假设B2
,B3
,B4
始终已填充)
=OFFSET(Overview!$B$1, 4, 0, COUNTA(Overview!$B:$B)-3,1)