MS Excel: сформировать таблицу с количеством строк в зависимости от входных переменных
Поэтому я хочу создать в Excel инструмент, подобный Matlab/R, который имитирует больше вычислений, управляемых кодом, чем обычно содержат более распространенные приложения для работы с таблицами Excel.
Эта рабочая тетрадь должна содержать:
- входной лист
- лист расчетов
- выходной лист
Я попробовал VBA, но он мне не нравится, а также у меня нет опыта программирования на нем (это занимает слишком много времени, чтобы получить то, что я хочу)
Итак, моя следующая попытка — реализовать это прямо в Excel, без VBA.
Для этой цели мне нужно:
- Создайте на листе расчета таблицу с количеством строк в зависимости от входных переменных, заданных пользователем на листе ввода.
- Заполните ячейки этой таблицы на основе входных переменных пользователя вместе с некоторыми заранее определенными формулами того, что помещать в эти ячейки.
Например, пользовательский ввод 1 = 4, пользовательский ввод 2 = 6.
Код =>> Создайте таблицу с 4 строками и 4 столбцами, начните с 6 в самой левой/верхней ячейке и умножьте на 2 в каждом столбце, затем перед переходом к следующей строке вычтите две и сделайте то же самое и т. д.
поэтому в этом случае вывод будет
6 12 24 48
4 8 16 32
2 4 8 16
0 0 0 0
просто как пример
Вы могли бы легко запрограммировать это, если бы заранее знали количество строк/столбцов, но что, если вы этого не знаете и хотите создать такую таблицу?
Это возможно как-то? Я не хочу, чтобы конечный пользователь делал что-то еще, кроме предоставления входных значений.
1 ответ
Решение VBA. Предполагая, что входы находятся на B1 и B2.
Public Sub CreateTable()
Dim rownum, colnum, startnum, z, multi As Integer
rownum = Range("B1").Value 'number of rows
colnum = Range("B1").Value 'number of columns
startnum = Range("B2").Value 'starting value
z = 3 'third row.
For x = 1 To rownum
multi = 1 'use to multiply the starting value
For y = 67 To 66 + colnum '67 represents code for C
Range(Chr(y) & z).Value = startnum * multi 'Set the value on the table
multi = multi * 2
Next y
z = z + 1
startnum = startnum - 2
Next x
End Sub
Демо