• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数シートの特定の位置に連番を振る方法??)

エクセルで連番を振る方法についての質問

このQ&Aのポイント
  • エクセルで送り状を作成している際に、特定の位置に連番を振る方法を知りたいです。
  • 現在は前のシートを確認して手入力していますが、自動でナンバーが振られる方法を探しています。
  • シート名を日付で管理しており、数か月分のデータを保存しています。データベース化する必要はありません。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

マクロでやって見ました。 新たなシートを作る時に以下のマクロを動かします。 テンプレートシートのコピーを行い、その際に該当セルの最大値を串刺しで計算。 その値+1を新たに追加したシートの該当セルに入れています。 コード中の連番を入れるセルや、原紙のシート名は実際の物に合わせて下さい。 Sub sample()   Dim sTarget, sSheet, sCount   sTarget = "A1" '連番を入れるセル   Sheets("原紙").Copy After:=Sheets(Sheets.Count) '原紙シートをコピー   sSheet = "'" & Sheets(1).Name & ":" & Sheets(Sheets.Count - 1).Name & "'!"   sCount = Evaluate("=max(" & sSheet & sTarget & ")") '該当セルの最大値取得   If IsNumeric(sCount) = False Then sCount = "0"   Range(sTarget).Value = Int(sCount) + 1   'シート名を 日付_シート枚数に変更   Sheets(Sheets.Count).Name = Format(Now(), "YYYYMMDD") & "_" & Sheets.Count End Sub

cinnamonnu
質問者

お礼

す・・・すごいです!! これがしたかったんです!! マクロを勉強すると、いろいろなことができそうですね。 ちょっと興味がわいてきました。 ありがとうございました!!

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

ブックを開く ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける Public Function LeftSheet(ByVal Target As Excel.Range) Application.Volatile LeftSheet = Target.Parent.Previous.Range(Target.Address) End Function 原紙シートの連番セル(仮にA1セル)に =LeftSheet(A1)+1 と数式を記入しておく 原紙シートを複写してシートの並びの一番右に配置する 一枚「左隣のシート」の指定セルの値を自動で取ってくるので,結果して連番の+1が自動的に計算される。 #言わずもがなですが,左左と追っていって一番先頭にするシートの所定セルには,連番の開始番号(1番なり「数ヶ月分」のストックの最初の番号)を記入しておきます。 #上述は(ご質問でははっきり書かれていませんが)シートを「右へ右へと追加していく」状況を想定しています 「左に向けて新しいシートを追加している」場合は別の関数を作成しなければいけません。回答を応用して,ご自分で作成してみてください。 また「シートの並びは順不同(=デタラメ)」で,「シート名の日付順にしたい(しかも毎日とは限らず飛び飛び日付の場合もある。同じ日付で更に子番号で仕分ける場合もある)」とか,考え出すともっと細かいルールが実はありましたというお話なら,それならそれで全然違うことを考える必要があります。

cinnamonnu
質問者

お礼

ありがとうございます!! ちょっとまだ私が勉強不足なようで、上手くいかない部分が・・・ ちょっと調べてみたいと思います。 「左に向けて新しいシートを追加する」のも可能なんですね!! 大変参考になりました、ありがとうございました!!

関連するQ&A

専門家に質問してみよう