當前位置:成語大全網 - 書法字典 - 按條件查詢VBA代碼?

按條件查詢VBA代碼?

以下是實現上述要求的VBA代碼:

```

子數據查詢()

Dim開始日期為日期,結束日期為日期,公司為字符串

Dim rowIdx壹樣長,lastRowIdx壹樣長,resultRowIdx壹樣長

Dim ws1作為工作表,ws2作為工作表

Dim eData作為變體,fData作為變體,gData作為變體,hData作為變體,iData作為變體

設置ws1 = thisworkbook。sheets(\“sheet 1 \“)‘查詢結果所在的工作表。

設置ws2 = thisworkbook。sheets(“sheet 2“)“數據源所在的工作表。

lastrowidx = ws2 . cells(ws2 . rows . count,1)。結束(xlup)。“Row”數據源最後壹行的序列號。

開始日期= ws1。範圍(“a5”)。“值”查詢開始日期。

結束日期= ws1。範圍(“a6”)。“值”查詢結束日期。

公司= ws1。範圍(“a7”)。“值”查詢公司名稱。

redimedata(1到拉斯特羅·IDX,1到1)存儲壹組查詢結果。

ReDim fData(1到lastRowIdx,1到1)

ReDim gData(1到lastRowIdx,1到1)

ReDim hData(1到lastRowIdx,1到1)

ReDim iData(1到lastRowIdx,1到1)

ResultRowIdx = 1‘要寫入ws1的查詢結果的起始行號。

循環遍歷數據源的每壹行。

對於rowIdx = 2到lastRowIdx

根據查詢條件過濾數據

如果(ws2。單元格(rowIdx,2)。值& gt=開始日期和ws2。單元格(rowIdx,2)。價值& lt=結束日期)或(ws2。單元格(rowIdx,3)。價值=公司)那麽

將篩選後的數據存儲在結果數組中。

eData(resultRowIdx,1)= ws2。單元格(rowIdx,5)。價值

fData(resultRowIdx,1)= ws2。單元格(rowIdx,4)。價值

g data(resultRowIdx,1)= ws2。單元格(rowIdx,3)。價值

hData(resultRowIdx,1)= ws2。單元格(rowIdx,9)。價值

iData(resultRowIdx,1)= ws2。單元格(rowIdx,6)。價值

resultRowIdx = resultRowIdx+1

如果…就會結束

下壹個rowIdx

將結果數組中的數據寫入ws1中的指定行和列。

ws1。範圍(\“E 10:E \“u 0026(resultRowIdx-1+10))。值= eData

ws1。範圍(\“F 10:F \“u 0026(resultRowIdx-1+10))。值= fData

ws1。範圍(\“G 10:G \“u 0026(resultRowIdx-1+10))。Value = gData

ws1。範圍(\“H 10:H \“u 0026(resultRowIdx-1+10))。Value = hData

ws1。範圍(\“I 10:I \“u 0026(resultRowIdx-1+10))。值= iData

末端接頭

```

將上述代碼復制到VBA窗口並保存。在Sheet1中添加按鈕或快捷鍵,並觸發此代碼查詢數據。