- ベストアンサー
エクセルで連番を振る方法についての質問
- エクセルで送り状を作成している際に、特定の位置に連番を振る方法を知りたいです。
- 現在は前のシートを確認して手入力していますが、自動でナンバーが振られる方法を探しています。
- シート名を日付で管理しており、数か月分のデータを保存しています。データベース化する必要はありません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
マクロでやって見ました。 新たなシートを作る時に以下のマクロを動かします。 テンプレートシートのコピーを行い、その際に該当セルの最大値を串刺しで計算。 その値+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
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
ブックを開く 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番なり「数ヶ月分」のストックの最初の番号)を記入しておきます。 #上述は(ご質問でははっきり書かれていませんが)シートを「右へ右へと追加していく」状況を想定しています 「左に向けて新しいシートを追加している」場合は別の関数を作成しなければいけません。回答を応用して,ご自分で作成してみてください。 また「シートの並びは順不同(=デタラメ)」で,「シート名の日付順にしたい(しかも毎日とは限らず飛び飛び日付の場合もある。同じ日付で更に子番号で仕分ける場合もある)」とか,考え出すともっと細かいルールが実はありましたというお話なら,それならそれで全然違うことを考える必要があります。
お礼
ありがとうございます!! ちょっとまだ私が勉強不足なようで、上手くいかない部分が・・・ ちょっと調べてみたいと思います。 「左に向けて新しいシートを追加する」のも可能なんですね!! 大変参考になりました、ありがとうございました!!
お礼
す・・・すごいです!! これがしたかったんです!! マクロを勉強すると、いろいろなことができそうですね。 ちょっと興味がわいてきました。 ありがとうございました!!