Я знаю, что вы можете легко взять диапазон ячеек и поместить их в массив Variant, но я хочу работать со строковым массивом (потому что он одномерный и занимает меньше памяти, чем массив Variant).
Есть ли способ автоматически преобразовать диапазон в строковый массив?
Сейчас я использую функцию, которая возьмет диапазон и сохранит значения в массиве вариантов, а затем преобразует массив вариантов в строку.массив.Это хорошо работает, но я ищу способ перейти непосредственно от диапазона к строковому массиву.Любая помощь будет принята с благодарностью.
Function RangeToArray(ByVal my_range As Range) As String()
Dim vArray As Variant
Dim sArray() As String
Dim i As Long
vArray = my_range.Value
ReDim sArray(1 To UBound(vArray))
For i = 1 To UBound(vArray)
sArray(i) = vArray(i, 1)
Next
RangeToArray = sArray()
End Function
ОБНОВЛЕНИЕ: похоже, что нет способа пропустить шаг выброса данных в массив переменных перед преобразованием их в одномерный строковый массив.Обидно, если это правда (даже если это не требует больших усилий, мне нравится ультраоптимизация, поэтому я надеялся, что есть способ пропустить этот шаг).Я закрою вопрос через несколько дней, если решение не появится.Спасибо за полезные комментарии, ребята!
ОБНОВЛЕНИЕ 2: Ответ идет Саймону, который приложил большие усилия (как и все остальные) и совершенно точно указал, что действительно невозможно перейти от диапазона к строковому массиву за один выстрел.Спасибо всем.