Excel 中的长一列列表,转换为 SQL where in 语句

Lee*_* Y. 0 sql-server excel vba

我在 Excel 中有一个任意长的一列列表。我需要将此列表放在 SQL 服务器的 where 语句中。
有一种手动方法可以做到这一点: list 从A1 until A40. 使用B1="'"&A1&"',". 这将列表的每个元素包含在'',. NextC1=B1 and C2=C1&B2..C40=C39&B40
列表中的最后一个元素将被,手动删除。

示例 excel

Where recipID in ('1865','1733','1990')

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

Sql*_*Zim 5

您可以使用此数组公式

=LEFT(CONCAT("'"&A1:A40&"',"),LEN(CONCAT("'"&A1:A40&"',"))-1)
Run Code Online (Sandbox Code Playgroud)

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

数组公式的准则和示例

在此处输入图片说明

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

="("&LEFT(CONCAT("'"&A1:A40&"',"),LEN(CONCAT("'"&A1:A40&"',"))-1)&")"
Run Code Online (Sandbox Code Playgroud)

CONCAT 功能

适用于: Excel 2016 Excel 2016 for Mac Excel Online Excel for iPad Excel for iPhone Excel for Android 平板电脑 Excel Mobile Excel for Android 手机


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

在此处输入图片说明