VBA--根據訂單號跨多工作表查詢數據

問題情景

Excel跨多個工作表查詢數據,用公式不好統計,尤其是遇到不斷增加工作表的情況,比如:

Excel | VBA--根據訂單號跨多工作表查詢數據

上圖中,要根據訂貨單號選擇相應的貨名、數量、單位、單價等信息。而這些訂貨單號對應貨名等分佈在不同的9個工作表中,而且工作表還在不斷增加。

在這種情況下,公式顯得有些蒼白無力,就需要用VBA來完成跨表查詢。實現效果如下:

Excel | VBA--根據訂單號跨多工作表查詢數據

VBA實現

在代碼窗口中輸入以下代碼:

<code>Sub 多表查詢()
Dim i%, k%
Dim irow%, icol%
Dim sht As Worksheet
Range("a5:e200").Clear '清除a5到e200區域中的數據,此處200可根據數據行多少改變
k = 1
Application.ScreenUpdating = False
For Each sht In Worksheets
If sht.Name <> ActiveSheet.Name Then '當工作表不是當前工作時,執行以下語句
With sht
irow = .Cells(.Rows.Count, 1).End(xlUp).Row '當前工作表數據行數
icol = .Cells(1, .Columns.Count).End(xlToLeft).Column '當前工作表數據列數
For i = 1 To irow
If .Cells(i, 1).Value = Sheets(1).Cells(2, 5).Value Then '當前工作表是第一列i行數據與sheet1工作表E2單元格數值相同時
.Cells(i, 2).Resize(1, icol).Copy Sheets(1).Cells(4 + k, 1) '將第i行數據複製到sheet1工作表第4+k行
k = k + 1
End If
Next i
End With
End If
Next
Application.ScreenUpdating = True
End Sub/<code>

如下圖:

Excel | VBA--根據訂單號跨多工作表查詢數據

如果不知道“按訂貨單號查詢”按鈕怎麼設置,可參考文章

------------------------------------------

-----------------------------------------

加入圈子,一起學習office吧!


分享到:


相關文章: