Excel / SQL, исключить последние "," в именованном диапазоне - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть список значений, которые я использую для предложения where в своем выражении sql для Excel.

Однако последнее значение всегда имеет это окончание ,.

Можно ли в любом случае изменить свой именованный диапазон, чтобы исключить последнюю запятую?

То, что я пытался:

"'"&$A6&"'", чтобы заменить последний ряд , на этот 'AP'.Однако мои именованные диапазоны отображаются в алфавитном порядке, когда я использую их в предложении where.Так что 'AP' не будет последним значением.

У меня есть список значений, как показано ниже:

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

Вот формула, которую я использую:

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

my where:

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

Ответы [ 3 ]

0 голосов
/ 11 февраля 2019

Поскольку вы используете диапазон, который уже является массивом, используйте 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
0 голосов
/ 11 февраля 2019
=Left(Cell,Len(Cell)-1)

Обрезает последний символ.

Для версии VBA (я написал это от руки, может быть синтаксическая ошибка):

Function RemoveLastComma (InputString as String)
    RemoveLastComma = Application.Worksheetfunction.Left(InputString ,Len(InputString)-1)
End Function
0 голосов
/ 11 февраля 2019

Этот очень простой код обрезает запятые на конце строки:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...