Преобразование списка Excel в формат массива


У меня есть несколько довольно длинных списков валют в excel, которые мне нужно преобразовать в формат массива для использования в другой программе. Существует ли какая-либо встроенная формула, которая возвращает строковые значения списка в строковый массив?

Например следующее:

a
b
c
d
e

Вернется как "a","b","c","d", " e " (даже если это просто в строке формул, чтобы я мог скопировать и вставить!)

Я бы предпочел не использовать VBA, если это возможно, просто из-за ограничений по времени, однако, если это работает выход относительно легкий, любые предложения по этому поводу тоже были бы очень полезны.

Заранее большое спасибо

4 2

4 ответа:

Ничего не встроено непосредственно в AFAIK.

Добавить модуль VBA, вставить:

Public Function ToArrStr(r As Range) As String
    ToArrStr = """" & Join(Application.Transpose(r), """,""") & """"
End Function

Тогда на листе можно: =ToArrStr(A1:A5)

(предполагается, что вы проходите > 1 клетку по вертикали)

Способ, которым я видел, как это обрабатывается в Формуле чисто Excel, накапливается строка за строкой:

A    B
---  -----------------
a    =""""&A1&""""
b    =B1&","""&A2&""""
c    =B2&","""&A3&""""
d    =B3&","""&A4&""""

FWIW, если у вас есть последнее обновление до Excel или вы используете онлайн-приложение, то есть встроенная формула. Это TEXTJOIN (). Итак:

="""" & TEXTJOIN(""",""",TRUE,A1:A5) & """"

Введите описание изображения здесь

Еще один способ преобразования списка в массив. Надеюсь, это поможет.

Public Function ToArrStr1(r As Range) As String
Dim out As String
For i = 1 To r.Cells.Count
    If out = "" Then out = """" & r.Cells(i) & """" Else out = out & ",""" & r.Cells(i) & """"
Next i
ToArrStr1 = out
End Function

Тогда на листе можно: =ToArrStr1 (A1:A5)