Заполните каждую комбинацию из трех диапазонов в порядке возрастания с помощью Excel

Заполните каждую комбинацию из трех диапазонов в порядке возрастания с помощью Excel

У меня есть три диапазона, и я хотел бы заполнить каждую комбинацию в порядке возрастания с помощью Excel. Диапазоны следующие:

  1. Мощность: 2-30 (увеличение на 1)
  2. Время включения: 100-10000 (увеличение на 100)
  3. Время выключения: 100-10000 (с шагом 100)

Это должно дать мне 29 × 100 × 100 = 290 000 строк с 3 столбцами.

Вывод должен выглядеть следующим образом:

--------------------------------------------
| Power (W) | On Time (ms) | Off Time (ms) |
--------------------------------------------
| 2         | 100          | 100           |
--------------------------------------------
| 2         | 100          | 200           |
--------------------------------------------
| 2         | 100          | 300           |
--------------------------------------------
| 2         | 100          | 400           |
--------------------------------------------
etc..

Как мне этого добиться?

решение1

Первую строку можно задать следующим образом:

  • A1:=INT((ROW()-2)/10000)+2
  • B1:=(MOD(INT((ROW()-2)/100),100)+1)*100
  • C1:=(MOD((ROW()-2),100)+1)*100

и перетащите/заполните вниз нужное количество строк. Если у вас есть фактическая строка заголовка, измените все вхождения ROW()-1на ROW()-2.

решение2

Вот решение VBA. Протестировано и работает в Office 2013

Sub FillCombinations()
For intPower = 2 To 30
    For intOn = 100 To 10000 Step 100
        For intOff = 100 To 10000 Step 100
            intRow = intRow + 1
            Cells(intRow, 1) = intPower
            Cells(intRow, 2) = intOn
            Cells(intRow, 3) = intOff
        Next intOff
    Next intOn
Next intPower
End Sub

Если вы не знаете, как использовать VBA:

  1. Откройте Excel и нажмитеALT+F11чтобы открыть редактор VBA
  2. Вставьте макрос выше и запустите его с помощьюF5

Он заполнит все возможные комбинации в столбцах A, B и C вашего активного листа.
Кстати, это 290.000 строк, начиная со строки 1 :)

Связанный контент