Страницы: 1
RSS
Работа с определенным столбом многомерного массива
 
Добрый День Уважаемые Эксперты.

Позвольте у Вас уточнить каким именно образом следует обращаться к определенному столбу многомерного массива?
Я посчитал, что подобную задачу можно выполнить следующим образом:
Код
Sub arr_Test()

Dim arr(), arr_mnogom()
Dim k As Integer

k = 73 ' контрольное значение

' //////       одномерный массив  ////

arr = Range(Cells(2, 2), Cells(11, 2))   ' пополнение одномерного массива из диапазона

stroka_v_massive = Application.Match(k, arr())  ' Расположение в массиве
        
' //////       одномерный массив  ////

arr_mnogom = Range(Cells(2, 7), Cells(11, 9))   ' пополнение многомерного массива из диапазона

stroka_v_massive = Application.Match(k, arr_mnogom()(, 3)) ' Расположение в массиве
      
End Sub
На строке:
Код
stroka_v_massive = Application.Match(k, arr_mnogom()(, 3)) ' Расположение в массиве
выходит ошибка Syntax Error. Что по все видимости говорит о несколько неверном моем понимании об обращении к третьему столбцу массива.

Вопроса будет два:
1) Возможно ли обращение к определенному столбцу массива?
2) Возможно ли без циклическим способом пополнить одномерный массив из многомерного?

Прошу прощения у модераторов, если Они посчитают, что вторая часть вопроса "Выходит за Рамки темы". Если подобный способ действительно существует это решит проблему. Но в любом случае если есть возможность непосредственно обратиться к определенному столбцу, то вторая часть вопроса уже не актуальна, но все равно познавательна.

Прошу помочь разобраться.

Благодраю Вас.
Изменено: IgorBoot - 10.07.2019 16:27:06
 
Часть массива, без цикла, можно получитьТАК
Но не всегда
Согласие есть продукт при полном непротивлении сторон
 
1) возможно
2) возможно

выполните этот макрос
Код
Sub ArrayDemo()
  Dim ar(1 To 5, 1 To 3), i&, r&, c&, row4, col3, a2
  For r = 1 To 5
    For c = 1 To 3
      ar(r, c) = i: i = i + 1
    Next
  Next
  row4 = WorksheetFunction.Index(ar, 4)
  col3 = WorksheetFunction.Index(WorksheetFunction.Transpose(ar), 3)
  a2 = WorksheetFunction.Index(ar, 0, 3)
  Stop ' В окне Locals изучайти содержимое и типы переменных
       ' row4, col3, a2
       ' взятых из ar без использования циклов
End Sub
Изменено: Ігор Гончаренко - 10.07.2019 16:52:14
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Уважаемый Ігор Гончаренко и Уважаемый Sanja.
Благодарю Вас за ответы.
Спасибо Вам.
 
Цитата
IgorBoot написал: Спасибо Вам.
Пожалуйста, но...
Обратите внимание на
Цитата
Sanja написал: Но не всегда
Если длина значения элемента массива будет больше 255 (или 256?) символов такой подход не сработает.
И на больших массивах, перенос нужного измерения массива в другой массив в цикле, по скорости быстрее, чем вышеуказанные способы
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Наверх