[英]check if excel cell value exists in SQL
我有一個 Excel 工作表,其中包含訂單的部件號。 我想查詢零件的 SQL 表以查看每個零件是否已經存在,如果不存在,則在單元格中顯示“新建”。 我已經通過將 part_number 列從 sql 導入到 excel 然后在 VLOOKUP 上使用 IFERROR 來顯示消息來做到這一點。
隨着工作表越來越大,越來越多的工作人員通過 VPN 遠程訪問,刷新 part_number 下載所需的時間正在成為一個問題。
有沒有辦法使用來自 Excel 的 sql 查詢,使用 past_number 單元格,返回一個我可以用 IF 或其他東西測試的值? 需要遍歷 excel 工作表中的每一行,還是我可以更“設置”導向?
您可以在 Excel 中使用參數創建動態查詢,以僅提取與您的訂單相關的部件號。 這是你如何做到的:
要創建新數據源,請單擊“確定”
輸入服務器名稱 -> 選擇一個驅動程序並點擊連接
再次輸入服務器名稱並單擊“使用信任連接”或輸入 SQL登錄 ID和密碼(取決於您的環境)-> 單擊“選項”
選擇您的數據庫,然后再次單擊“確定”和“確定” ,因此您將返回“選擇數據源”窗口,您還單擊“確定”
單擊下一步3 次 ->完成(默認情況下保留所有內容)-> 選擇放置結果的位置,然后在導入數據窗口中單擊確定。
注意:我提到 Microsoft Query 不能很好地處理nvarchar(MAX)
類型。 在我的測試中,如果我有一個帶有 nvarchar(MAX) 的列,當我將它導入到 Excel 工作表中時,我會看到該列的空值。
將其更改為:
SELECT PartNumbers.[Name] as Name
FROM TestDB.dbo.PartNumbers PartNumbers
WHERE PartNumbers.[Name] in (SELECT value FROM STRING_SPLIT(CAST(? as nvarchar(100)), ','))
請注意,我們在上面的 SQL 查詢中有一個問號 - 它將是您過濾零件號的動態參數。
在“參數”窗口中,選擇“從以下單元格獲取值”並選擇一個單元格,稍后您將使用該單元格為過濾器添加動態值(現在可以為空)。
您還可以選中“單元格值更改時自動刷新”選項。 然后在所有打開的窗口上點擊 OK 按鈕,這樣你就回到了現在應該沒有行的 excel 表。
現在轉到您用作參數的空單元格並輸入以下公式: =TEXTJOIN(",",TRUE,[PartNumberValuesRange])
。 [PartNumberValuesRange] 必須更改為包含您訂單中所有零件號的范圍。
現在,如果您做的一切正確,您應該會看到現有零件號記錄如何從數據庫中提取到您在步驟 1-5 中創建的表中。
此時你可以使用你的VLOOKUP + IFERROR方法來顯示相應的消息。 您在公式中引用的表格將只有零件編號的子集,這些零件編號以 Excel 和數據庫中的順序存在,因此您可以輕松找到數據庫中缺少的所有零件編號。 這應該會加快您的工作流程,因為您現在不需要從數據庫中提取整個表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.