2014-09-01 70 views
0

我为下表中的特定列创建了命名范围(表名称:“Table2”)。Excel中的命名范围获取计数但不是值

Data Table

在另一个小区(小区F23),我创建一个命名的范围 “DNR_Product” 使用公式>名称管理器>新 提供在指式框以下:

=OFFSET(Sheet3!F23,0,0,COUNTA(Table2[Product]),1) 

名称管理器如下所示: Name Manager screenshot 我在命名范围中看不到任何值。但是,当我运行以下代码片段时,命名范围的计数正确显示(在本例中为13)。

Sub printRangeCount() 
Dim strRangeName As String 
strRangeName = "DNR_Product" 

Dim oSht As Worksheet 
Set oSht = ActiveWorkbook.Worksheets("Sheet3") 

Dim iCount As Integer 
iCount = oSht.Range(strRangeName).Rows.Count 
MsgBox iCount 


End Sub 

但它自己的单元没有我期望的数据。 Blank Named Range Data

方法有什么问题吗?

更新

的我想到应该类似于下面的值: enter image description here

+0

@让FrançoisCorbett我更新了我的问题,以显示预期的数据值。谢谢。 – Ayusman 2014-09-01 08:07:10

+0

你不需要为你的表创建一个新的命名范围 - 只需命名该表(它在你的名字管理器中作为Table2)。它在VBA中作为Worksheet的ListObject成员可用。 – citizenkong 2014-09-01 08:38:18

回答

0

你没有真正告诉VBA随时随地把这些信息,进行计数和返回值13,但你别没有告诉它把它放在一个牢房里。

oSht.Range("F23").value = iCount将其放置在您的图片突出显示的单元(或者你可以使用正确的名称范围)

+0

但这不能通过一个公式来实现。我将需要使用VBA。我认为这可以通过自我配方来实现。我写的VBA脚本是一个测试,以确认我的命名范围实际上是根据数据表进行更新的。 – Ayusman 2014-09-01 08:08:58

+0

如果要用公式填充单元格,则必须将公式放入单元格中。您命名的范围指的是F23下面单元格的内容(假设F23在定义范围时处于活动状态,因为您使用了相对引用),而不是表格列的内容。 – Rory 2014-09-01 08:36:07