我正在尝试找到一种方法,从 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 代码轻松完成,我洗耳恭听!
谢谢,我是新手,如果我能解释得更好,请告诉我。
致以诚挚的问候
我建议用客户名称构建一个逗号分隔的字符串并使用
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')