Работа с массивами невероятно быстро, так что это не будет, вероятно, даст не различимое пользу - хотя я могу понять, как он может обратиться из чувства кодирования, чем зацикливание, чтобы заполнить меньший массиву
Учитывая вы работая с одним массивом элементов, вы можете:
Ввести строку «маркер» внутри большого массива. Присоедините большой массив с разделителем в одну строку. Разделите большой массив на строку «marker», затем разделите приведенную строку на меньший массив с разделителем. Приведенный ниже код сбрасывает числа от 1 до 100 в массив, а затем разбивает его, как указано выше, для вывода первых 10 записей.
Sub test()
Dim bigArr
Dim subArr
Dim strSep As String
Dim strDelim As String
Dim strNew As String
Dim rowBegin As Long
Dim rowEnd As Long
strDelim = ","
strSep = "||"
'fill array with 1 to 100
bigArr = Application.Transpose(Application.Evaluate("row(1:100)"))
rowBegin = 1
rowEnd = 10
bigArr(rowEnd + 1) = strSep
'make a single string
strNew = Join(bigArr, strDelim)
'split the string at the marker
vArr = Split(strNew, strSep)
ReDim subArr(rowBegin To rowEnd)
'split the smaller string with the desired records
subArr = Split(Left$(vArr(0), Len(vArr(0)) - 1), strDelim)
End Sub
Вы пытаетесь получить элементы a через b? Или строка текста в массиве между символами a и b? –
Я имею в виду элементы в массиве. Например, A = [1,2,3,4,5,6,7,8]. Как я могу получить дополнительный массив [4,5,6]? – user3570984
[См. Это.] (Http://stackoverflow.com/questions/10167495/how-to-create-subarray-efficiently-in-vba) [принятый ответ] (http://stackoverflow.com/a/10168019/2200824) должен предоставить то, что вам нужно ... – ARich