Preencha todas as combinações de três intervalos em ordem crescente com o Excel

2

Eu tenho três intervalos e gostaria de preencher todas as combinações em ordem crescente com o Excel. Os intervalos são:

  1. Potência: 2-30 (incremento de 1)
  2. Tempo ON: 100-10000 (incremento de 100)
  3. Tempo de
  4. OFF: 100-10000 (incremento de 100)

Isso deve me dar 29 × 100 × 100 = 290.000 linhas com 3 colunas.

A saída deve se parecer com o seguinte:

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

Como posso conseguir isso?

    
por Ryan R 04.10.2013 / 00:21

2 respostas

1

Você pode definir a primeira linha da seguinte maneira:

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

e arraste / preencha o número desejado de linhas. Se você tiver uma linha de título real, altere todas as ocorrências de ROW()-1 para ROW()-2 .

    
por 04.10.2013 / 02:16
1

Aqui está uma solução VBA. Testado e trabalhando no 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

Se você não souber usar o VBA:

  1. Abra o Excel e pressione ALT + F11 para abrir o editor de VBA
  2. Cole a macro acima e execute-a com F5

Ele preencherá todas as combinações possíveis na coluna A, B e C na sua planilha ativa.
Btw. eles são 290.000 linhas começando na linha 1:)

    
por 04.10.2013 / 00:49