マクロが作れないから、質問したのですよね。
『このマクロですと、今回1個のデータの値をだせるのだと思いますが
今回5個あたいを出したい場合は』
あなたの質問に的確に答えているはずですがl。
プログラム中のコメントは、理解してもらうためのものです。
『今回5個あたいを出したい場合は』って、どこが分からないのですか?
私の回答を理解していますか?
とりあえず・・・・・
Dim key_data As String
Dim key_cnt As String
Dim out_cnt As Integer
Sub test1()
Dim row_max As Integer
Dim row_cnt As Integer
'出力個数読み込み(E1)
If Cells(1, 5).Value = "" Then
Exit Sub
End If
out_cnt = Cells(1, 5).Value
'最終行を求める
row_max = Range("C1").End(xlDown).Row
'欠番データ初期化
key_data = ""
key_cnt = 0
'2行目から最終行間でのループ
For row_cnt = 2 To row_max
'欠番チェック
If Cells(row_cnt, 3).Value > Cells(row_cnt - 1, 3).Value + 1 Then
'欠番データ設定
Call ketuban_set(Cells(row_cnt - 1, 3).Value + 1, Cells(row_cnt, 3).Value)
End If
'キーブレーク?
If Cells(row_cnt, 3).Value < Cells(row_cnt - 1, 3).Value + 1 Then
'欠番データ設定
Call ketuban_set(Cells(row_cnt - 1, 3).Value + 1, 10)
Cells(row_cnt - 1, 4).Value = key_data
'欠番データ初期化
key_data = ""
key_cnt = 0
If Cells(row_cnt, 3).Value > 1 Then
'欠番データ設定
Call ketuban_set(1, Cells(row_cnt, 3).Value)
End If
End If
Next row_cnt
'最終行の処理
'欠番データ設定
Call ketuban_set(Cells(row_cnt - 1, 3).Value + 1, 10)
Cells(row_cnt - 1, 4).Value = key_data
End Sub
Sub ketuban_set(min As Integer, max As Integer)
Dim cnt As Integer
For cnt = min To max - 1
'出力個数まで設定済み?
If key_cnt >= out_cnt Then
Exit For
End If
If key_cnt = 0 Then
key_data = "" & cnt
Else
key_data = key_data & "," & cnt
End If
key_cnt = key_cnt + 1
Next cnt
End Sub
今回はあえて、補足はしません。
出力個数が変化する場合は、どうしたらよいかは、プログラムから読み取ってください。
お礼
kokorone様 詳しい回答をありがとうございます。 マクロに不慣れなため、へんな質問をしておりました。 ご気分を害されたでしょうに、丁寧なご回答までいただいて もうしわけございません。 もっと勉強いたします。