• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルでの連番の処理)

エクセルで連番の処理を自動化する方法

このQ&Aのポイント
  • エクセルでの連番を自動化する方法をご紹介します。例えば、D1に3、E1に25を入力し、マクロを実行するとD列の2行目以下に3,4,5,6...25と連番で入力できるようになります。また、A~E列の1行目のデータを変更すると、それに応じて連番も自動的に更新されます。
  • 連番の処理を行う際には、D1とE1に入力する数値は整数である必要があります。また、E1の数値はD1よりも大きい必要があります。ただし、D1とE1に同じ数字が入力された場合は、その数字の1行分のみが連番として入力されます。
  • この連番処理は、2行目以下のD列で空白の行以下に自動的に連番を入力していくというものです。同時に、A~E列の2行目以下にはそれぞれ1行目のデータと同じ内容が入力されます。連番の処理とデータの入力を繰り返すことで、簡単に連番を作成することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。Wendy02です。 >今のままではE1が変わるたびに動くようですので。 単に入れ替えればよいだけです。 なお、コントロールツールのボタンにしてくださいね。フォームですと、ちょっと書き方が変わります。 それと、前回の分(2440028)は、まだオープンのままですから、問題がないようでしたら、、締めてくださいね。 'シートモジュール '--------------------------------------------------------- Private Sub CommandButton1_Click() Dim i As Long  Dim j As Long  Dim rw As Long  rw = Range("D65536").End(xlUp).Row  If IsNumeric(Range("D1").Value) And IsNumeric(Range("E1").Value) Then   i = Range("D1").Value: j = Range("E1").Value   If j >= i Then    If rw + (j - i) + 1 > 65536 Then MsgBox "行のオーバーになります。", vbCritical: Exit Sub    Cells(rw + 1, 4).Resize(j - i + 1).FormulaLocal = "=" & CStr(i) & "+Row(A1)-1"    Cells(rw + 1, 4).Resize(j - i + 1).Value = Cells(rw + 1, 4).Resize(j - i + 1).Value    Range("A1:C1").Offset(rw).Resize(j - i + 1, 3).Value = Range("A1:C1").Value   End If  End If End Sub

HGK
質問者

お礼

前回ともどもお世話になりました。 今まで手動でしていた作業時間とくらべてはるかに効率的になりました。ありがとうございました。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。Wendy02です。 以下のようにはなりますが、私自身としては、実用化させるには、もう一工夫が必要な気がします。例えば、ツールバー式に、窓を作るとか、ダイアログボックスを作ってあげるとか。 'シートモジュールに貼り付けてください。 Private Sub Worksheet_Change(ByVal Target As Range)  Dim i As Long  Dim j As Long  Dim rw As Long    If Target.Count > 1 Then Exit Sub  If Target.Address <> "$E$1" Then Exit Sub 'E1 をターゲットキーとする  rw = Range("D65536").End(xlUp).Row    If IsNumeric(Range("D1").Value) And IsNumeric(Range("E1").Value) Then   i = Range("D1").Value: j = Range("E1").Value   If j >= i Then    If rw + (j - i) + 1 > 65536 Then MsgBox "行のオーバーになります。", vbCritical: Exit Sub    Application.EnableEvents = False    Cells(rw + 1, 4).Resize(j - i + 1).FormulaLocal = "=" & CStr(i) & "+Row(A1)-1"    Cells(rw + 1, 4).Resize(j - i + 1).Value = Cells(rw + 1, 4).Resize(j - i + 1).Value    Range("A1:C1").Offset(rw).Resize(j - i + 1, 3).Value = Range("A1:C1").Value    Application.EnableEvents = True   End If  End If End Sub

HGK
質問者

補足

ご回答ありがとうございます。 こちらの期待通りの動きをしてくれました。 ただご指摘のとおり実用的にするにはボタンをクリックするたびに動作させるようにしたいです。今のままではE1が変わるたびに動くようですので。アドバイスお願いします。

関連するQ&A