2016-02-18 4 views
0

Например, если у нас есть массив A. В MATLAB мы просто используем A [a: b], чтобы получить дополнительный массив, где a, b - начальная и конечная точки соответственно. Есть ли аналогичный способ сделать это в VBA?Как извлечь часть массива, указав начальный и конечный индексы точно так же, как то, что мы делаем в Matlab

Благодаря

+0

Вы пытаетесь получить элементы a через b? Или строка текста в массиве между символами a и b? –

+0

Я имею в виду элементы в массиве. Например, A = [1,2,3,4,5,6,7,8]. Как я могу получить дополнительный массив [4,5,6]? – user3570984

+0

[См. Это.] (Http://stackoverflow.com/questions/10167495/how-to-create-subarray-efficiently-in-vba) [принятый ответ] (http://stackoverflow.com/a/10168019/2200824) должен предоставить то, что вам нужно ... – ARich

ответ

0

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

Учитывая вы работая с одним массивом элементов, вы можете:

Ввести строку «маркер» внутри большого массива. Присоедините большой массив с разделителем в одну строку. Разделите большой массив на строку «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 
Смежные вопросы