sql-server - Long,Excel中的一列列表,转换为SQL where in语句

标签 sql-server vba excel

<分区>

我在 Excel 中有一个任意长的单列列表。我需要把这个列表放在SQL Server的where语句中。
有一种手动方法可以做到这一点:列表从 A1 开始直到 A40。使用 B1="'"&A1&"',"。这将列表中的每个元素包含在 '', 中。接下来 C1=B1 和 C2=C1&B2..C40=C39&B40
列表中的最后一个元素将手动删除 ,

sample excel

recipID 在 ('1865','1733','1990') 中的位置

如果我每年这样做一次或两次,一切都很好。但它变得越来越常规。我可以录制一个宏并以此为基础。然而,我更想寻找一个 2 合 1 宏,它不仅可以为 SQL 准备数据,还可以将数据复制到剪贴板 - 这样唯一需要的操作就是选择列表、运行宏并粘贴到 SQL 中。

最佳答案

您可以使用这个数组公式:

=LEFT(CONCAT("'"&A1:A40&"',"),LEN(CONCAT("'"&A1:A40&"',"))-1)

输入公式,按CTRL+SHIFT+ENTER,输入数组常量作为数组公式。 (当您看到公式周围的 {} 时,您就知道它在起作用)。

Guidelines and examples of array formulas

enter image description here

您也可以像往常一样在其周围添加括号。

="("&LEFT(CONCAT("'"&A1:A40&"',"),LEN(CONCAT("'"&A1:A40&"',"))-1)&")"

CONCAT function

Applies To: Excel 2016 Excel 2016 for Mac Excel Online Excel for iPad Excel for iPhone Excel for Android tablets Excel Mobile Excel for Android phones


CONCAT 的替代方法是 StringConcat() by Chip Pearson可以产生相同的结果。

enter image description here

关于sql-server - Long,Excel中的一列列表,转换为SQL where in语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41750601/

相关文章:

Python-excel-xlwt : colouring every second row

sql - 将临时表重命名为物理表

mysql - 查询保留未减去的元组

sql-server - 我应该摆脱 Guid 列上的聚集索引吗

vba - 一个 VBA For 循环中有多个范围?

javascript - 如何使 <td> 今天的日期 + 14

c# - 如何将 SET IDENTITY_INSERT dbo.myTable 放在 ON 语句中

vba - VBA 中的舍入日期和时间

excel - 如何在 VBA 中使用日期变量

vba - 在几张纸中粘贴列