2012-08-24 61 views
0

![數據集] [1]我有一個宏從關閉GetValues。宏工作並獲取數據,但我錯過了如何使其只能獲取帳戶P 15178中的任何數據。源數據包含5個帳戶,但我只需要獲取一個帳戶。帳戶號碼列在源數據的「A」列中。GetValues從一個封閉的工作簿,滿足Excel的條件VBA

這是我到目前爲止有:

Sub test() 


GetValuesFromAClosedWorkbook "H:\VBA", "DNAV.xlsx", "DNAV", "A1:F250" 


End Sub 

Sub GetValuesFromAClosedWorkbook(fPath As String, _ 
fName As String, sName, cellRange As String) 

With ActiveSheet.Range(cellRange) 
    .FormulaArray = "='" & fPath & "\[" & fName & "]" _ 
    & sName & "'!" & cellRange 
    .Value = .Value 

End With 

End Sub 

數據集:

+1

如果您希望它是這樣的直接公式,那麼您必須知道A列中的哪些單元格包含您想要的產品,並且它們必須位於連續的行中。有幾種方法可以實現這一點,但我必須先看到你的數據集。 –

+0

斯科特,我的數據集如下: – cemg

+0

沒有。如果可以的話,請將您的數據集作爲截圖或鏈接發佈到您的工作簿中。 –

回答

1

這裏是你可以嘗試什麼:

Sub GetValuesFromClosedWorkbook(fpath as string, fname as String, _ 
    sname as String, cellRange as String, criteria as String) 

Activesheet.AutoFilterMode = False 

With Activesheet.Range(cellRange) 
    .FormulaArray = "='" & fpath & "\[" & fname & "]" & sname & "'!" & cellRange 
    .Value = .Value 
    .AutoFilter Field:=1, Criteria1:= "<>" & criteria 
    .Offset(1,0).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
End With 

Activesheet.AutoFilterMode = False 

End Sub 

然後打電話給你的分是這樣的:

GetValuesFromClosedWorkbook "H:\VBA", "DNAV.xlsx", "DNAV", "A1:F250", "P 15178" 

沒有測試過,沒辦法在我的手機測試:)所以我把它給你。
完全基於你的屏幕截圖。
編輯它以滿足您的需求。

+0

糟糕,這是個老問題。但爲了以防別人需要它,他們可以嘗試我的建議:) – L42

2

這個答案僅僅是基於數據集的圖像。如果有什麼推遲,你需要調整代碼。

Sub test() 


    GetValuesFromAClosedWorkbook "H:\VBA", "DNAV.xlsx", "DNAV", "A1:F7" 'since your product only goes to row 7, this should be good. If your data is not sorted this way all the time, you will need a whole other solution. 


End Sub 

Sub GetValuesFromAClosedWorkbook(fPath As String, _ 
fName As String, sName, cellRange As String) 

With ActiveSheet.Range(cellRange).Offset(6) 'offsetting by 6 rows should get the formula starting on cell A7 
    .FormulaArray = "='" & fPath & "\[" & fName & "]" _ 
    & sName & "'!" & cellRange 
    .Value = .Value 

End With 

End Sub 
+0

Scott上,數據集將有4個帳戶,在這種情況下,我只想將P 15178從整個工作簿中的4個帳戶中取出。我想我首先需要某種邏輯來說,只提取帳戶P 15178的數據,即我卡住的地方。這就是爲什麼我有A1:F300的原因,它可以穿過整個數據並只提取標準P 15178 – cemg

+0

在這種情況下,您需要改變方法。您不能在直線Excel公式中使用這樣的過濾器。簡而言之,您需要執行以下步驟** 1)**打開已關閉的工作簿** 2)**過濾由您需要的產品設置的數據** 3)將已過濾的(可見)單元複製到工作表上你正在使用** 4)**關閉另一個工作簿。 –

+0

謝謝Scott。讓我嘗試一下,看看我得到了什麼。除了拉取一個賬戶而不是所有賬戶之外,一切都有效。非常感謝您的幫助。 – cemg

相關問題