2669 |
請問Excel VBA 能實現VLOOKUP函數多條件取得資料嗎? |
雷明:「請問可以透過Excel的VLOOKUP函數實現多條件選擇嗎?主要是想透過工作表1中表格的「公司」以及「出貨產品」欄位,去查工作表2中,符合「公司」以及「出貨產品」的那筆資料中的「數量、出貨時間以及包裝」等資訊,並回填至工作表2中。如果用公式的話,可以透過VLOOKUP搭配IF來實現,但筆數一多的話,會寫到頭昏腦脹,可以麻煩指導如何使用VBA巨集來處理嗎?謝謝!」
海綿寶寶:「使用VBA的作法是:
按ALT+F11鍵啟動VBA視窗。
點取「插入 > 模組」指令,插入一個新的空白模組。
Sheet1=A.查詢表
Sheet2=B.資料來源
輸入下列程序:
Type OneRec
Amount As String
Outboundtime As String
Package As String
End Type
Function myVlookup(ByVal CompanyName As String, ByVal Product As String) As OneRec
Dim retOneRec As OneRec
Dim bRun As Boolean
Dim nRow As Integer
bRun = True
nRow = 1
Do
If (Worksheets("Sheet2").Range("A" & nRow).Value = "") Then
bRun = False
Exit Do
End If
If ((Worksheets("Sheet2").Range("A" & nRow).Value = CompanyName) And (Worksheets("Sheet2").Range("C" & nRow).Value = Product)) Then
retOneRec.Amount = Worksheets("Sheet2").Range("D" & nRow).Value
retOneRec.Outboundtime = Worksheets("Sheet2").Range("E" & nRow).Value
retOneRec.Package = Worksheets("Sheet2").Range("F" & nRow).Value
bRun = False
End If
nRow = nRow + 1
Loop Until bRun = False
myVlookup = retOneRec
End Function
Sub Main()
Dim Result As OneRec
Dim bRun As Boolean
Dim nRow As Integer
bRun = True
nRow = 2
Do
If (Worksheets("Sheet1").Range("A" & nRow).Value = "") Then
bRun = False
Exit Do
End If
Result = myVlookup(Worksheets("Sheet1").Range("A" & nRow).Value, Worksheets("Sheet1").Range("C" & nRow).Value)
Worksheets("Sheet1").Range("D" & nRow).Value = Result.Amount
Worksheets("Sheet1").Range("E" & nRow).Value = Result.Outboundtime
Worksheets("Sheet1").Range("F" & nRow).Value = Result.Package
nRow = nRow + 1
Loop Until bRun = False
End Sub
以上就是今天主要學習的知識點,希望對大家有所幫助~~有什麼問題歡迎留言,我會儘量及時的給大家答覆~~
部落格相關範例
2021.11.03 |
|
2021.11.02 |
|
2021.11.01 |
|
2021.10.31 |
|
2021.10.30 |
|
2021.10.29 |
|
2021.10.28 |
|
2021.10.27 |
|
2021.10.26 |
|
2021.10.25 |
|
2021.10.24 |
|
2021.10.23 |
|
2021.10.22 |
|
2021.10.21 |
|
2021.10.20 |
|
2021.10.19 |
|
2021.10.18 |
|
2021.10.17 |
留言列表