
関数もマクロもまだまだ理解できていない初心者です。
エクセルで送り状を作成していまして、毎回「原紙」のシートをコピーして必要事項を入力し
プリントアウトして使っています。
この中の項目に連番でナンバーを振る欄があり(位置は固定されています)、今現在はものすごく原始的に前のシートを確認して、ナンバーを手入力しています。
これを、原紙のシートをコピーした際に、自動でナンバーが振られるようにしたいのですが・・・
何かいい方法はありませんでしょうか??
シート名を日付で管理し、後で確認できるよう、数か月分は保存している状態です。
また、ただの送り状なので、データベース化する必要はありません。
どなたかお知恵をお貸し下さい、よろしくお願い致します。
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
す・・・すごいです!!
これがしたかったんです!!
マクロを勉強すると、いろいろなことができそうですね。
ちょっと興味がわいてきました。
ありがとうございました!!
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番なり「数ヶ月分」のストックの最初の番号)を記入しておきます。
#上述は(ご質問でははっきり書かれていませんが)シートを「右へ右へと追加していく」状況を想定しています
「左に向けて新しいシートを追加している」場合は別の関数を作成しなければいけません。回答を応用して,ご自分で作成してみてください。
また「シートの並びは順不同(=デタラメ)」で,「シート名の日付順にしたい(しかも毎日とは限らず飛び飛び日付の場合もある。同じ日付で更に子番号で仕分ける場合もある)」とか,考え出すともっと細かいルールが実はありましたというお話なら,それならそれで全然違うことを考える必要があります。
ありがとうございます!!
ちょっとまだ私が勉強不足なようで、上手くいかない部分が・・・
ちょっと調べてみたいと思います。
「左に向けて新しいシートを追加する」のも可能なんですね!!
大変参考になりました、ありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) VBAマクロでシートコピーした新シートにコピー元シートとの計算式の入れ方を教えて下さい。 5 2022/11/20 09:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/26 09:50
- Excel(エクセル) 前の(左隣の)シートを連続参照するように、あとから変更したい 1 2023/02/22 00:51
- Excel(エクセル) エクセルで割り振りをする方法 7 2022/08/02 14:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Excel(エクセル) エクセル関数について 2 2022/04/13 18:25
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/03/01 15:44
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel 連番を入力する方法
Excel(エクセル)
-
エクセルのシートごとに連番を入れたい
Excel(エクセル)
-
シートをコピーして シートに1から連番をふる
Word(ワード)
-
-
4
エクセルでシート名を連続で参照するには
Excel(エクセル)
-
5
エクセルでシートにわたり連番を入力する方法
Excel(エクセル)
-
6
エクセルで別のシートに連番を入力したい
Excel(エクセル)
-
7
エクセルの表を複数枚印刷したときに連番をつけたい
Excel(エクセル)
-
8
複数シートのページに連続した数字を入れたい
Excel(エクセル)
-
9
複数シートの同じセル内容を1シートに順番に貼り付けたい
その他(Microsoft Office)
-
10
エクセルのシート連番の振り直し
Excel(エクセル)
-
11
前の(左隣の)シートを連続参照するように、あとから変更したい
Excel(エクセル)
-
12
エクセルで前のシートを連続参照したい
Excel(エクセル)
-
13
ワード文書の右側にあるグレーゾーンを消す方法
Word(ワード)
-
14
別シート参照のセルをシート毎にずらしたいです
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
エクセルの複数シートの保護を...
-
エクセルで前シートを参照して...
-
別シート参照のセルをシート毎...
-
前の(左隣の)シートを連続参...
-
特定のシートの削除を禁止した...
-
VBAで条件によりフォントサイズ...
-
エクセルVBAでパスの¥マークに...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルでファイルを開いたと...
-
複数シートの特定の位置に連番...
-
エクセルで複数シートを別のシ...
-
【Excel関数】値が合致するセル...
-
EXCEL:同じセルへどんどん足し...
-
シートの保護のあとセルの列、...
-
複数のシートの同じセルに入力...
-
VBAでシートコピー後、シート名...
-
Excel、同じフォルダ内のExcel...
-
エクセルで前のシートを連続参...
-
EXCELで1ヶ月分の連続した日付...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
前の(左隣の)シートを連続参...
-
別シート参照のセルをシート毎...
-
エクセルでファイルを開いたと...
-
特定のシートの削除を禁止した...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルで前シートを参照して...
-
エクセル 計算式も入っていない...
-
EXCEL:同じセルへどんどん足し...
-
Excel、同じフォルダ内のExcel...
-
複数シートの特定の位置に連番...
-
エクセルVBAでパスの¥マークに...
-
Excelのシートを、まとめて表示...
-
VBAで条件によりフォントサイズ...
-
【Excel関数】値が合致するセル...
-
Accessのスプレッドシートエク...
-
エクセルで前のシートを連続参...
-
VBAでシートコピー後、シート名...
-
EXCELで1ヶ月分の連続した日付...
-
シートの保護のあとセルの列、...
おすすめ情報