我試圖把目前的主動式選擇到一個名爲範圍,我可以作爲一個數據透視表的數據源引用。我的函數selectByUsedRows根據usedCol中的行數以及selectStartCol和selectEndCol處的開始和停止提供了一個選擇。當您只希望您的選擇包含與選定範圍外的列的行數相匹配的單元格時,這是有用的。我對這個選擇的名字沒有深入的瞭解。任何幫助都會很棒。Excel的VBA:主動選擇的命名範圍透視表數據源
Excel數據
A B C
1 CaseNum Branch Name
2 1234 APL George
3 2345 VMI George
4 3456 TEX Tom
5 4567 NYC Tom
6 5678 VMI Sam
7 6789 TEX Tom
8 7890 NYC George
VBA
'Check reference column and select the same number of rows in start and end columns
Sub selectByUsedRows(usedCol As String, selectStartCol As String, selectEndCol As String)
n = Range(usedCol & "1").End(xlDown).Row
Range(selectStartCol & "1:" & selectEndCol & n).Select
End Sub
'Dynamically select columns A to C with as many rows as are in A
Sub test()
refCol = "A"
selectStartCol = "A"
selectEndCol = "C"
selectByUsedRows refCol, selectStartCol, selectEndCol
'Code works until this point. There is now an active selection of A1:C8.
'The following is hypothetical
Dim rngSelection As Range
Set rngSelection = ActiveSelection
Range(rngSourceData).CurrentRegion.Name = "rngSourceData"
Set objTable = Sheet5.PivotTableWizard
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
rngSourceData, Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Sheet5!R1C4", TableName:="PivotTable1", DefaultVersion _
:=xlPivotTableVersion14
End Sub
迪克,我將需要一些時間來處理您的解決方案。我想指出的是,在我的代碼selectByUsedRows子給我一個動態選擇,我只是不知道如何使活動選擇命名的區域用作數據透視表SourceData。 – Liquidgenius
+1 Dynamic NamedRange是我的最愛之一,值得追求。由於某些原因,我一直使用'= OFFSET($ C $ 2,0,0,COUNTA($ C:$ C)-1,1)'而不是索引。 – user3357963