0

我使用下面的 UDF 连接引用以将结果包含在
SQL 查询中,例如ref in ('ref1', 'ref2', ...).

UDF可以正常工作,但是当我需要放置大量引用列表时,
我会#VALUE进入 Excel

我已经看了一下这个答案,但我无法让我的 UDF 工作......

我试图将函数的类型从更改StringVariant(明确地),
但它并没有改变任何事情......

我也尝试ConcatSQL2 = A(0)ConcatSQL2 = A输出,
Dim A(0 To 0) As String声明,......再次它不起作用......
我的想法已经用完了......

有关信息,结果字符串预计大约 220k 长...
为了帮助您生成大量文本,您可以在此处使用 Lorem Ipsum 生成器!

Public Function ConcatSQL2(Plage As Range, Optional Doublon As Boolean = True)
Dim A() As String, _
    Cel As Range
ReDim A(0)

A(0) = "('"
For Each Cel In Plage.Cells
    If (Cel.Value <> "" And (InStr(1, A(0), Cel.Value) = 0 Or Doublon)) Then
        A(0) = A(0) & Cel.Value & "', '"
    End If
Next
A(0) = Left(A(0), Len(A(0)) - 3) & ")"

ConcatSQL2 = A(0)
End Function
4

1 回答 1

2

关于@Rory 的评论:

32767 是单元格中的最大字符数

我决定将输出写入文本文件以供以后重用!

这是最终的解决方案

Public Function ConcatSQL2(Plage As Range, Optional Doublon As Boolean = True)
Dim A(0 To 0) As String, _
    myFile As String, _
    Cel As Range
'ReDim A(0)

A(0) = "('"
For Each Cel In Plage.Cells
    If (Cel.Value <> "" And (InStr(1, A(0), Cel.Value) = 0 Or Doublon)) Then
        A(0) = A(0) & Cel.Value & "', '"
    End If
Next
A(0) = Left(A(0), Len(A(0)) - 3) & ")"

myFile = "Path\FileName.txt"
Open myFile For Output As #1
Write #1, A(0)
Close #1

ConcatSQL2 = A
End Function
于 2015-12-11T15:20:51.397 回答