2014-09-01 120 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