Excel / SQL,排除命名范围中的最后一个“”

时间:2019-02-11 16:10:53

标签: excel vba

我在Excel工作表sql语句中有一个用于where子句的值的列表。

但是最后一个值始终具有该结尾​​,

无论如何,我是否可以更改命名范围以排除最后一个逗号?

我尝试过的事情:

"'"&$A6&"'",用此,替换最后一行'AP'。 但是,当我在where子句中使用它时,我的命名范围按字母顺序显示。因此'AP'不会是最后一个值。

我有一个如下所示的值列表:

+--------+
| 'TOR', |
| 'TOR', |
| 'TOR', |
| '1',   |
| '1',   |
| 'AP',  |
+--------+

这是我使用的公式:

=OFFSET(Nodes2!$F$2,0,0,COUNTA(Nodes2!$F:$F),1)

我的where子句:

position in "&" ("&textjoinifs(CHAR(10),24,2,namedrange)&")"

3 个答案:

答案 0 :(得分:2)

当您使用的范围已经是数组时,请使用Join而不是手动串联。只需将您的实际值保存在单元格中,不要在单元格本身中添加,'

有关详细信息,请参见代码注释。


Sub test()

    Dim arr
    Dim strResult  As String

    '/ Get the range data into an array
    arr = Sheet1.Range("TestNamedRange")

    '/ Transpose the array , so you end up with one dimension
    arr = Application.Transpose(arr)

    '/ Join the array. Specify whatever delimeter you want e.g. ','
    strResult = "'" & Join(arr, "','") & "'"

End Sub

答案 1 :(得分:0)

这个非常基本的代码将删除字符串末尾的所有逗号:

Function TrimTrailingCommas(ByVal Text As String) As String
    While Right(Text, 1) = "," 'When the last character is a comma
        Text = Left(Text, Len(Text) - 1) 'Remove it
    Wend 'Repeat until the last character is not a comma
    TrimTrailingCommas = Text 'Return the trimmed text
End Function

答案 2 :(得分:0)

=Left(Cell,Len(Cell)-1)

修剪最后一个字符。

对于VBA版本(我是徒手写的,可能会有语法错误):

Function RemoveLastComma (InputString as String)
    RemoveLastComma = Application.Worksheetfunction.Left(InputString ,Len(InputString)-1)
End Function