Вопрос №24.Считывание одномерных и двумерных массивов с рабочего листа Excel в память VBA и вывод на рабочий лист Excel (бесформатный и форматный). Форматы: “Fixed”, “Standard”, “Currency”.Привести примеры.
Допустим дан одномерный массив X(4). Исходные данные: x=0.5; x=-3, x=10.1, x=5. Занесем эти числа в рабочий лист Excel в область A1:D1.
Одномерный массив считывается в цикле.
For I=1 To 4
X(I)=Cells(1,I).Value
Next I
Работа цикла: 1 цикл: I=1<=4-да, Х(1)=Cells(1,1)’ В Х(1) заноситься значение ячейки А(1,1)=0,5
Next I
2 цикл: I=2<=4-да, Х(2)=Cells(1,2)’ в Х(2) заноситься значение ячейки А(1,2)=-3
Next I и так далее. Проверка окончания цикла: I=5<=4-нет. Тогда цикл прекращает работу и выполняется следующий оператор, стоящий за концом цикла, т.е. за Next I.
Вывод одномерного массива по формату. Одномерный массив выводиться на рабочий лист Excel тоже в одном цикле, например, для вещественных чисел:
For I=1 To 4
Cells(3,I)=Format(X(I), “0.0”)
Next I
Для целых чисел:
For I=1 To 4
Cells(3,I)=Format(Y(I), “0”)
Next I Бесформатный вывод одномерного массива.
For I=1 To 4
Cells(3,I)=Y(I)
Next I

Пользователь выбирает формат самостоятельно. Если массив был описан как Single или Double, то и числа нужно выводить как вещественные с определенным количеством знаков после запятой, отделяющую целую часть числа от дробной. А если массив был описан как Integer или как Byte, то и числа нужно вводить как целые.
Ввод матрицы(двумерного массива). Данные заносят в ячейки Excel. Если значение матрицы B(2,3) занести в область рабочего листа А1:С2, тогда в память VBA числаматрицы считываются из ячеек в двух циклах по строкам и столбцам, т.е.
For I=1 To2 ‘внешний цикл
For J=1 To 3’внутренний цикл
B(I,J)=Cells(I,J).Value
Next J
Next I
При первом внешнем цикле I=1 работает весь внутренний цикл от 1 до 3 (шаг по умолчанию 1) вместе с циклической частью. При 2 внешнем цикле I=2 снова работает весь внутренний цикл 3 раза вместе с циклической частью. Пример:
1 цикл внешний I=1
1 цикл внутренний J=1
                                B(1,1)=Cells(1,1).Value
2 цикл внутренний J=2
                               B(1,2)=Cells(1,2).Value
3 цикл внутренний J=3
                              B(1,3)=Cells(1,3).Value.
При завершении внутреннего цикла снова меняется внешний цикл
2 ц. внешний I=2
1 ц. внутренний J=1
B(2,1)=Cells(2,1).Value
2 ц. внутренний J=2
B(2,2)=Cells(2,2).Value
3 цикл внутренний J=3
B(2,3)=Cells(2,3).Value
Таким образом, циклическая часть отработала 2*3=6
Вывод матрицы таблицей по формату. Матрица выводиться на рабочий лист Excel тоже в двух циклах, например, для вещественных чисел:
For I=1 To2 ‘внешний цикл
For J=1 To 3’внутренний цикл
Cells(I,J)=Format(B(I,J),”0.0#”)
Next J
Next I
Для целых чисел:
For I=1 To2
For J=1 To 3
Cells(10+I,J)=Format(X(I,J),”0”)
Next J
Next I
По этой программе заносятся числа матрицы в рабочие ячейки следующим образом:
Cells(11,1)=X(1,1)
Cells(11,2)=X(1,2)
Cells(11,3)=X(1,3)
Cells(12,1)=X(2,1)
Cells(12,2)=X(2,2)
Cells(12,3)=X(2,3) Бесформатный вывод матрицы.
For I=1 To2
For J=1 To 3
Cells(10+I,J)=X(I,J).Value
Next J
Next I

Пользователь выбирает формат самостоятельно. Если массив был описан как Single или Double, то и числа нужно выводить как вещественные с определенным количеством знаков после запятой, отделяющую целую часть числа от дробной. А если массив был описан как Integer или как Byte, то и числа нужно вводить как целые.
Именованный формат Описание
Currency Выводит 2 цифры справа от дес. точки и учитывает разделителя для тысяч
Fixed По крайней мере одна цифра слева и две справа от десятичной точки
Standard То же и разделитель тысяч