我在 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
您也可以像往常一样在其周围添加括号。
="("&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可以产生相同的结果。