如何从 Excel 表中获取 SQL 中的多个输入

问题描述 投票:0回答:1

我正在尝试找到一种方法,从 Excel 工作表中获取多个客户名称以用于 WHERE 子句,以便我可以跟踪这些客户的订单! 例如:

Customer_Name |数量 |购买总价

ABC | 100 | 500

XYZ | 200 | 1000

防御 | 300 | 1500

现在,我正在使用一个 excel 文件,从中我从 SQL Server 获取数据并编写 SQL 查询来过滤出我需要的数据(原始数据非常大,无法加载)。现在我想从一个 col 中获取多个客户名称,该名称位于 excel 中同一工作簿的不同工作表中,可以根据用户输入的客户名称进行更改!

SELECT Customer_Name, Quantity, Total Purchase Price 
FROM TABLE1
WHERE Customer_Name='ABC'
OR Customer_Name='XYZ'
OR (and so on);

当我手动放置它时,它适用于每个客户,但我希望它是动态的。例如,如果有人输入 10 个客户姓名,它会从查询中的这些列中获取输入。我知道一点 VBA(从事过小项目),所以如果我可以通过简单的 VBA 代码轻松完成,我洗耳恭听!

谢谢,我是新手,如果我能解释得更好,请告诉我。

致以诚挚的问候

sql excel vba distinct
1个回答
0
投票

我建议用客户名称构建一个逗号分隔的字符串并使用

WHERE IN ()
.

以下代码假设客户名称在 A 列中。此外,假设有一个列标题。在

For
处开始
i = 1
循环以包含第一行。

Sub GetCustomerNames()
    Dim lastRow As Long
    Dim i As Long
    Dim s As String
    Dim sSql As String
    
    lastRow = Range("A1").End(xlDown).Row
    
    For i = 2 To lastRow
        s = s & "'" & Cells(i, "A") & "',"
    Next i
    If Len(s) > 0 Then s = Left$(s, Len(s) - 1) 'remove last '
    
    sSql = "SELECT Customer_Name, Quantity, Total_Purchase_Price FROM TABLE1 WHERE Customer_Name IN (" & s & ")"
    
    Debug.Print sSql
End Sub

输出:

SELECT Customer_Name, Quantity, Total_Purchase_Price FROM TABLE1 WHERE Customer_Name IN ('ABC','XYZ','DEF')
© www.soinside.com 2019 - 2024. All rights reserved.