MS Excel: сформировать таблицу с количеством строк в зависимости от входных переменных

Поэтому я хочу создать в Excel инструмент, подобный Matlab/R, который имитирует больше вычислений, управляемых кодом, чем обычно содержат более распространенные приложения для работы с таблицами Excel.

Эта рабочая тетрадь должна содержать:

  1. входной лист
  2. лист расчетов
  3. выходной лист

Я попробовал VBA, но он мне не нравится, а также у меня нет опыта программирования на нем (это занимает слишком много времени, чтобы получить то, что я хочу)

Итак, моя следующая попытка — реализовать это прямо в Excel, без VBA.

Для этой цели мне нужно:

  1. Создайте на листе расчета таблицу с количеством строк в зависимости от входных переменных, заданных пользователем на листе ввода.
  2. Заполните ячейки этой таблицы на основе входных переменных пользователя вместе с некоторыми заранее определенными формулами того, что помещать в эти ячейки.

Например, пользовательский ввод 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

Демо

Другие вопросы по тегам