簡體   English   中英

檢查SQL中是否存在excel單元格值

[英]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 中使用參數創建動態查詢,以僅提取與您的訂單相關的部件號。 這是你如何做到的:

  1. 轉到數據選項卡 ->獲取數據->從其他來源->從 Microsoft Query

Excel,從 Microsoft Query 獲取數據

  1. 如果您之前已經創建了 SQL Server 數據源,請選擇新數據源或選擇現有數據源 -> 單擊確定:

要創建新數據源,請單擊“確定”

Excel、Microsoft Query、創建新的 SQL Server 數據源

輸入服務器名稱 -> 選擇一個驅動程序並點擊連接

Excel、Microsoft Query、連接

再次輸入服務器名稱並單擊“使用信任連接”或輸入 SQL登錄 ID密碼(取決於您的環境)-> 單擊“選項”

Excel、Microsoft Query、數據庫選項

選擇您的數據庫,然后再次單擊“確定”和“確定” ,因此您將返回“選擇數據源”窗口,您還單擊“確定”

Excel、Microsoft Query,選擇現有數據源

  1. Query Window - Choose Columns窗口中,選擇您的 PartNumbers 表和一列,您可以在其中存儲零件編號的名稱(或用於在訂單中識別它的任何名稱):

查詢向導 - 選擇列

單擊下一步3 次 ->完成(默認情況下保留所有內容)-> 選擇放置結果的位置,然后在導入數據窗口中單擊確定

注意:我提到 Microsoft Query 不能很好地處理nvarchar(MAX)類型。 在我的測試中,如果我有一個帶有 nvarchar(MAX) 的列,當我將它導入到 Excel 工作表中時,我會看到該列的空值。

  1. 轉到數據選項卡 ->屬性->連接屬性->定義選項卡。 在這里您可以編輯命令文本

Microsoft Query:更改命令文本

將其更改為:

SELECT PartNumbers.[Name] as Name
FROM TestDB.dbo.PartNumbers PartNumbers 
WHERE PartNumbers.[Name] in (SELECT value FROM STRING_SPLIT(CAST(? as nvarchar(100)), ','))

請注意,我們在上面的 SQL 查詢中有一個問號 - 它將是您過濾零件號的動態參數。

  1. 再次單擊“確定”和“連接屬性” ->“定義” (需要啟用“參數...”按鈕)-> 單擊“參數...”

Microsoft Query:參數

在“參數”窗口中,選擇“從以下單元格獲取值”並選擇一個單元格,稍后您將使用該單元格為過濾器添加動態值(現在可以為空)。

您還可以選中“單元格值更改時自動刷新”選項。 然后在所有打開的窗口上點擊 OK 按鈕,這樣你就回到了現在應該沒有行的 excel 表。

  1. 現在轉到您用作參數的空單元格並輸入以下公式: =TEXTJOIN(",",TRUE,[PartNumberValuesRange]) [PartNumberValuesRange] 必須更改為包含您訂單中所有零件號的范圍。

  2. 現在,如果您做的一切正確,您應該會看到現有零件號記錄如何從數據庫中提取到您在步驟 1-5 中創建的表中。

此時你可以使用你的VLOOKUP + IFERROR方法來顯示相應的消息。 您在公式中引用的表格將只有零件編號的子集,這些零件編號以 Excel 和數據庫中的順序存在,因此您可以輕松找到數據庫中缺少的所有零件編號。 這應該會加快您的工作流程,因為您現在不需要從數據庫中提取整個表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM