• ベストアンサー

エクセル2007で1つのBOXに列がA~N 行が200の同じ表形式のシ

エクセル2007で1つのBOXに列がA~N 行が200の同じ表形式のシートを150枚作り シートの右上N1のセルに1~150の数字を入れていますがこの数字を自動化することは、可能でしょうか?(例えば5と付けたシートの次に6と付けたシートを挿入すると以降のシートが自動で7~に変わる)初心者ですよろしくお願い致します。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

>この1~150の連番を逆さにすることは、出来ないでしょうか? 逆方向に連番を付けるならコードを以下のように修正して下さい。 Sheets(i).Range("N1").Value = Sheets.Count - i +1

hiro16166
質問者

お礼

ありがとうございます 試してみます。

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.6

いまあるシートの各々のシートのN1セルにダブりのない、番号を入れるなら Sub test01() i = 1 For Each sh In Worksheets sh.Range("N1") = i i = i + 1 Next End Sub と簡単だが、シートタブの見えている順序に振られる。これで良いのですか。 シート名のことではないでしょうね> ーーー >例えば5と付けたシートの次に6と付けたシートを挿入すると以降のシートが自動で7~に変わる と言うのはどんなこと? >5と付けた、とは何につけるの?シートのなまえ? シート名?セルに数字を入れるのは「付けた」とは言わないでしょう。 それに「あるエクセルの行為(操作)をしたら何々する」と言うのは難しいこと。VBの実行する方法も勉強してない人には無理。 ーー >エクセル2007で1つのBOXに エクセルのブックの誤りでしょう。エクセルの基礎的なこと。 ーーー シートを挿入(=増や)したとき、シート名が例えば「在庫23」なら、増やしたシート名を「在庫24」と自動でつけてほしいということではないの? もしそれなら質問の書き方はおかしい。

hiro16166
質問者

お礼

回答ありがとうございます。初心者ですいません 約150枚(増える)シートのN1セルに1~150の連番を入れているんですけど今の状態だと 新しくコピーしたシートのN1セルに 5 と入れてこのシートを 4 と入れてあるシートの次に挿入した場合挿入したシート以降のシートのN1セルの数字をすべて 6~151に入れ替える作業が必要になるので これが自動で変わらないかと思い質問させて頂きました 質問の書き方も悪く 回答頂いた方に 迷惑と 不満感を もたせたことを お詫びいたします。 すいませんでした。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

>マクロ実行しましたが、(コンパイルエラー プロシージャの外では無効です。) 表示が出て実行出来ません 何がいけないんでしょうか? 原因は特定できませんが、記載したマクロコードに提示したコード以外のコードなどが記載されていないでしょうか? VBEを起動して、いったん、コピー貼り付けしたマクロコード全体を削除してから、もう一度提示したコードを貼り付け直して、sampleマクロを実行し直してみてください。

hiro16166
質問者

お礼

回答頂いたとおり一回削除してから、もう一度マクロ実行したら 出来ました ありがとうございました この1~150の連番を逆さにすることは、出来ないでしょうか?シート名をあいうえお順で並べており 出来れば あ 側を 1 にしたいんですが すいません。 

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 150枚も同形式のシートを作られるという事は、おそらく基となるシートをコピーして、新しいシートを作られているのではないでしょうか?  そして、コピーによって作成されたシートには、個別のシート名を新たに付けたりはせずに、Excelによって自動的に付けられた Sheet1 (2) の様な、( )内にコピー回数を示す数字が記されている形式のシート名のままで、Bookを作成されているのではないでしょうか?  もし、そうであるならば、連番ではありませんが、( )内のコピー回数を示す数字のみを取り出す方法は如何でしょうか?  その場合には、N1セルに次の数式を入力するだけで済みます。 =VALUE(SUBSTITUTE(MID(CELL("filename",N1),FIND("(",CELL("filename",N1),FIND("]",CELL("filename",N1)))+1,9),")",))  尚、上記の数式は、 シート名の( )内に数字以外の文字が存在している場合や、 ( )の後にも何か文字が存在している場合、 コピー回数を示す数字の直前以外の位置にも「(」が存在している場合 等にはエラーとなりますから、注意して下さい。 (全角文字の「(」が存在する場合や、シート名ではなく、ファイル名内に「(」が存在している場合は、エラーとはなりません)  それから、シートのコピーでは、 Sheet1 (1) の様な、( )内の数字が1のシートは、自動的には作成されませんから、N1に1と表示させるためには、適当なシートのシート名を変更する事で、 Sheet1 (1) の様な、( )内の数字が1のシートを作成する必要があります。

hiro16166
質問者

お礼

回答ありがとうございます。はい基となるシートをコピーして150枚作っていますがシート名も変えているので、回答頂いた数式を入れてもだめじゃ無いでしょうか?

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

>恥ずかしいですがマクロの仕方が解りません  Alt+F11キーでVBEを起動し、「挿入」「標準モジュール」で表示される白い画面部分に、提示したコード(SubからEnd Subまで)をコピー貼り付けして、「表示」「マクロ」で「sample」を選択して「実行」してください。

hiro16166
質問者

お礼

回答ありがとうございます。マクロ実行しましたが、(コンパイルエラー プロシージャの外では無効です。) 表示が出て実行出来ません 何がいけないんでしょうか?

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

150枚のシートのN1セルに1からの連番を入力するなら以下のようなマクロを実行してみてください。 Sub sample() Dim i As Integer For i = 1 To Sheets.Count Sheets(i).Range("N1").Value = i Next i End Sub

hiro16166
質問者

お礼

回答ありがとうございます。恥ずかしいですがマクロの仕方が解りません よろしくお願い致します。

関連するQ&A

専門家に質問してみよう