
3 つの範囲があり、Excel ですべての組み合わせを昇順で入力したいと考えています。範囲は次のとおりです。
- パワー: 2~30 (1ずつ増加)
- ON時間: 100~10000 (100ずつ増加)
- OFF時間: 100~10000 (100ずつ増加)
これにより、3 列の 29 × 100 × 100 = 290,000 行が生成されます。
出力は次のようになります。
--------------------------------------------
| 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の使い方がわからない場合:
- Excelを開いてALT+F11VBAエディタを開く
- 上記のマクロを貼り付けて実行しますF5
アクティブ シートの列 A、B、C のすべての可能な組み合わせが記入されます。
ちなみに、行 1 から始まる行数は 290,000 です :)