一系列 Microsoft 試算表軟體,具有可用來對資料進行分析、製圖及通訊的工具。
你好
感謝您的反饋。
很抱歉,不幸的是,我沒有提供任何進一步的故障排除。
論壇上有許多知識淵博的使用者,我希望其他人可以對您的問題提供進一步的見解。
親切問候 沙基魯
這回覆已被自動翻譯,因此,可能出現文法錯誤或表達不當。
EXCEL 資料查詢的巨集使用
目的:希望能建立一個 巨集 能從客戶資料中快速搜尋訂單
資料庫 大致如下
希望建立的巨集如下 /輸入 月跟日 能把當天需要出貨的訂單整列拉出來
資料庫會一直更新資料
我有嘗試使用 錄製巨集 卻不適合我想要的模式 (因為資料會一值更新 )
希望能有人 幫我解惑
1.如何創出我需要的巨集
2.我錄製的巨集能怎麼做修正
萬分感謝
一系列 Microsoft 試算表軟體,具有可用來對資料進行分析、製圖及通訊的工具。
鎖定的問題。 此問題已從 Microsoft 支援服務社群移轉。 您可以對其是否有幫助進行投票,但無法對問題新增註解或回覆,或進行追蹤。
你好
感謝您的反饋。
很抱歉,不幸的是,我沒有提供任何進一步的故障排除。
論壇上有許多知識淵博的使用者,我希望其他人可以對您的問題提供進一步的見解。
親切問候 沙基魯
這回覆已被自動翻譯,因此,可能出現文法錯誤或表達不當。
再次感謝你的回覆 但還是無法使用
你的程式碼 因為被翻譯過 所以我看到的可能會跟你想表達的有點不一樣
Sub QueryAndCopyData()
Dim searchValueA As Variant, searchValueB As Variant
Dim foundRows As Range, foundRow As Range
Dim pasteRange As Range
Dim wsOrder As Worksheet, wsQuery As Worksheet
Dim lastRow As Long, result As Variant
Set wsOrder = Worksheets("訂單整理")
Set wsQuery = Worksheets("查詢訂單")
searchValueA = wsQuery.Range("D3").Value
searchValueB = wsQuery.Range("F3").Value
lastRow = wsOrder.Cells(wsOrder.Rows.Count, "J").End(xlUp).Row
result = Application.XLookup(searchValueA & searchValueB, wsOrder.Range("J1:K" & lastRow), wsOrder.Range("A1:O" & lastRow), 0, 2)
If Not IsError(result) Then
Set pasteRange = wsQuery.Range("B8")
For i = LBound(result) To UBound(result)
Set foundRow = wsOrder.Rows(result(i))
foundRow.Copy Destination:=pasteRange
Set pasteRange = pasteRange.Offset(1, 0)
Next i
MsgBox "查詢成功。數據複製到查詢順序表。"
Else
MsgBox "未找到匹配的配置檔。"
End If
End Sub
執行後 顯示 查無匹配的項目 我不曉得 問題出在哪邊
或是你能重新幫我設計一個能成功抓取我要的資料的程式碼嗎
首先我的查詢頁面長這樣
利用D3欄位所輸入的值 來對資料庫 J列作搜索
且
利用F3欄位所輸入的值 來對資料庫 K列作搜索
同樣我的動作 如果用以下圖片這個功能也可以完成
但是因為 未來要使用這個表格的是寶寶等級的使用者 他們不會這些功能 所以我必須把它建立成一個巨集 讓它們做搜索
將篩選出的資料 複製並貼在我想要的工作表上
再次感謝你用心地回復
嗨大頭陳
感謝您的反饋。
請嘗試以下操作: Sub QueryAndCopyData() 將搜索值 A 作為變體,將搜索值 B 作為變體 將找到的行調暗為範圍,找到的行作為範圍 暗淡粘貼範圍作為範圍 將 wsOrder 調暗為工作表,將 wsQuery 顯示為工作表 將最後一行調暗為長,結果為變體 昏暗我只要
' 設定工作表物件 設置 wsOrder = 工作表(“訂單查詢”) 設定 wsQuery = 工作表(“查詢順序”)
' 從指定的儲存格中取得搜尋值 searchValueA = wsQuery.Range(“D3”).價值 searchValueB = wsQuery.Range(“F3”).價值
' 尋找訂單查詢表J列中的最後一行 lastRow = wsOrder.Cells(wsOrder.Rows.Count, “J”).結束(xlUp)。排
' 執行 XLookup 以查找匹配的行 result = Application.XLookup(searchValueA & searchValueB, wsOrder.Range(“J1:K” & lastRow), wsOrder.Range(“A1:O” & lastRow), 0, 2)
' 檢查是否找到任何匹配的設定檔 如果不是 IsError(result) 則 ' 初始化粘貼範圍 Set pasteRange = wsQuery.Range(“B8”)
' 遍曆結果陣列並複製找到的行 For i = LBound(result) To UBound(result) Set foundRow = wsOrder.Rows(result(i)) foundRow.Copy Destination:=pasteRange 設定貼上範圍 = 貼上範圍.偏移量(1, 0) 下一頁 i
消息框「查詢成功。數據複製到查詢順序表。 還 消息框「未找到匹配的配置檔。 結束如果 結束子
確保將工作表名稱(“訂單查詢”和“查詢訂單”)替換為Excel工作簿中的實際名稱。此外,請確保搜索值(“D3”和“F3”)和粘貼區域(“B8”)的單元格引用準確無誤。
請記住將此宏分配給按鈕或鍵盤快速鍵以執行。如果有任何錯誤,代碼將顯示相應的錯誤消息。
此致敬意
這回覆已被自動翻譯,因此,可能出現文法錯誤或表達不當。
感謝你的回覆 因為我的資料庫中沒有日期的形式 所以你提供的程式碼 無法使用
我的程式碼 是不能成功執行的
如下
Sub 查詢並複製資料()
Dim searchValueA As Variant, searchValueB As Variant
Dim foundRows As Range, foundRow As Range
Dim pasteRange As Range
Dim wsOrder As Worksheet, wsQuery As Worksheet
Dim lastRow As Long, result As Variant
Set wsOrder = Worksheets("訂單查詢")
Set wsQuery = Worksheets("查詢訂單")
searchValueA = wsQuery.Range("D3").Value
searchValueB = wsQuery.Range("F3").Value
lastRow = wsOrder.Cells(wsOrder.Rows.Count, "J").End(xlUp).Row
result = Application.XLookup(searchValueA & searchValueB, wsOrder.Range("J1:K" & lastRow), wsOrder.Range("A1:O" & lastRow), 0, 2)
If Not IsError(result) Then
For i = LBound(result) To UBound(result)
Set foundRow = wsOrder.Rows(result(i))
If Not pasteRange Is Nothing Then
Set pasteRange = pasteRange.Offset(1, 0)
Else
Set pasteRange = wsQuery.Range("B8")
End If
foundRow.Copy Destination:=pasteRange
Next i
MsgBox "查詢成功。"
Else
MsgBox "找不到符合條件的資料。"
End If
End Sub
我設計的表格 如下
紅色框起來是讓我輸入月份去查詢資料 (D3欄位)
黑色框起來是讓我輸入日期去查詢資料 (F3欄位)
我寫的 程式碼 是希望在資料庫的J欄位 有符合 我所想要查詢的月份 且 K欄位有符合我想要查詢的日期
這兩個條件都達成後
把那一整列複製下來 並在新的工作表上貼上
但不知道為什麼 我的程式碼 始終無法使用
嗨,大頭陳!
請您嘗試在此處粘貼您的 VBA 代碼嗎?
但是,您可以嘗試編輯以下VBA代碼: Sub SearchOrdersByDate() 暗淡搜索日期為日期 暗淡順序範圍作為範圍 將順序暗淡為範圍
' 提示使用者輸入搜尋日期 搜尋日期 = 輸入框(“輸入要搜索的日期 (月/日/年):”, “搜索訂單”)
' 設置包含訂單數據的範圍 ' 根據您的資料庫佈局更新範圍位址和工作表名稱 設置訂單範圍 = 工作表(“工作表 1”)。範圍(“A2:E100”)
' 清除任何以前的搜尋結果 工作表(“工作表2”)。使用範圍.清除內容
' 迴圈遍曆每個訂單並將匹配的訂單複製到新工作表 對於每個訂單 在訂單範圍中。行 如果訂購。細胞(1,1)。值 = 搜索日期然後 次序。複製目的地:=工作表(“工作表2”)。範圍(“A”和行.計數)。結束(xlUp)。偏移(1) 結束如果 下一個訂單
' 結果工作表中的自動調整列 工作表(“工作表2”)。UsedRange.Columns.AutoFit
' 通知使用者搜尋完成 消息框“搜索完成。找到“ & Worksheets(”Sheet2“)。UsedRange.Rows.Count - 1 & “ orders.” 結束子
該宏將提示您輸入日期(月/日/年格式)以搜索訂單。然後,它會將匹配的訂單複製到名為“Sheet2”的新工作表中。結果表將自動調整列寬,消息框將顯示找到的訂單數。
關於更正錄製的宏,如果您提供有關錄製過程中遇到的問題或錯誤的更具體的詳細資訊以及錄製的代碼本身,將會很有説明。這將使我們能夠識別問題並對錄製的宏提出更正或改進建議。
如果您需要其他説明,請告訴我,我將很樂意為您提供進一步的説明。
此致敬意 沙基魯
這回覆已被自動翻譯,因此,可能出現文法錯誤或表達不當。