- 締切済み
エクセルで各シートに1~12月を入力する方法
エクセルで12枚のシートがあります。 各シートの同位置セルに「平成○年 ◎月売上げ」と入力したいのですが、◎部分に4月~12月、1月、2月、3月、 ○部分に4月~12月シートには平成19年 1月~3月シートには平成20年と、 各シート1枚ずつに入力するしかないのでしょうか? 初心者でよくわかりません。教えて下さい。よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- ka_na_de
- ベストアンサー率56% (162/286)
ka_na_deです。 シート名ではなく、セルに入力するのですね。 完全に勘違いしてました。 私の回答は無視してください。 papayuka さんのVBAが、ばっちりです。 内容すべてが、とても参考になりました。 ブックマークに登録しました。 あんなに簡単に記述できるのですね。
表示書式で、年や月の数字を全角表示したいなら、 [DBNum3]ggge"年"m"月" でいけます。 お試し下さい。
お礼
回答ありがとうございます。 参考にさせていただきます。
- papayuka
- ベストアンサー率45% (1388/3066)
セルの書式設定で表示形式をユーザー定義にして ggge"年 "m"月売上" のようにして、 2007/4/1 と入力すると 平成19年 4月売上 と表示されます。 これを各シートに設定しておけば、日付入力で出来るので幾らか手間が省けます。 さらに、Sheet2 以降は =DATE(YEAR(Sheet1!A1),MONTH(Sheet1!A1)+1,1) のようにして行けば、Sheet1 だけ開始の日付を入力すれば良い状態になります。 でもこれでは各シートに全て入力するのと大差ありません。 楽にするならやはりマクロです。 1)新規ブックを開きシートを12枚用意します。 2)Excel画面のメニューでツール-マクロ-VisualBasicEditor(以下VBE)を押下し、VBE画面を開きます。 3)VBE画面のメニューで挿入-標準モジュールを押下して、下記のマクロをコピーして貼り付けます。 4)VBE画面を閉じます。 5)Excel画面のメニューでツール-マクロ-マクロで「Test」を実行します。 6)指定した日付以降が、各シートの A1 に記入されます。 なお、マクロの実行が出来ない場合は、ツール-マクロ-セキュリティでセキュリティレベルが「中」になっている事を確認し、なっていない場合は「中」にしてからExcelを起動し直す必要があります。 Sub Test() Dim myDate, ws As Worksheet myDate = Application.InputBox("開始日を入力(例 2007/4/1)", "開始日", Type:=2) If Not IsDate(myDate) Then Exit Sub For Each ws In ActiveWorkbook.Worksheets ws.Range("A1").Value = Format(myDate, "ggge年 m月売上") myDate = DateSerial(Year(myDate), Month(myDate) + 1, Day(myDate)) Next ws End Sub
お礼
分かりやすい回答ありがとうございます。 お礼が遅くなりました。
- ka_na_de
- ベストアンサー率56% (162/286)
ka_na_deです。 大きな問題ではありませんが、 変数名を間違えました。 NENDO→GENGOU です。 修正しなくても動くとは思います・・・
お礼
了解いたしました。
- ka_na_de
- ベストアンサー率56% (162/286)
おそらくVBA(マクロ)でないと無理だと思います。 一例を示します。 既存の複数のシートを左から 平成19年 4月売上げ 平成19年 5月売上げ ・ ・ と連番で名前変更します。 '<マクロ> Sub test() Dim NENDO As String Dim Y As Integer Dim M As Integer Dim St As Worksheet NENDO = "平成" Y = 19 '年 M = 4 '開始月 For Each St In Worksheets St.Name = NENDO & Y & "年 " & M & "月売上げ" If M = 12 Then M = 1 Y = Y + 1 Else M = M + 1 End If Next End Sub <使い方> 1)下のシート名のタブの上で右クリック 2)「コードの表示」をクリック 3)左側のプロジェクトエクスプローラーで、 VBAProjectのの上で右クリック、「挿入」→「標準モジュール」 (プロジェクトエクスプローラーが表示されていなければ、 上部の「表示」メニューから選択表示できます。) 4)右側に上記のマクロを貼り付けます。 実行は、上部の再生マークボタンを押してください。 <注意> マクロはやり直しが効かないので、データはあらかじめ バックアップしてから試してください。
お礼
回答ありがとうございます。 参考にさせていただきます。
- imogasi
- ベストアンサー率27% (4737/17069)
昨日も同じような質問があったが、 シート内の、セルと違って、シート間において、複写で「セルの場合のように、番地の行(や列)を1つつ増やしてくれる機能」はエクセルにはありません。 ですから不可能です。 ーー VBAを使って ユーザー定義関数 Function sidx() sidx = Sheets(ActiveSheet.Name).Index End Function を定義し、 Sheet1の例えばC2に 「="平成19年"&(sidx()+3)& "月"」と入れる。 これをコピーして Sheet2を開いてそのC2に Sheet3のC2 ・・ に貼り付けると Sheet1は平成19年4月 Sheet2は平成19年5月 Sheet3は平成19年6月 ・・ となる。 上記は、月の文字が半角だがJIS関数を入れると全角になる。 ="平成19年"&JIS(sidx()+3)& "月" ー>平成19年4月 ーー ただシートタブの順番を変えると、月の部分が変わるので、使い物にならないであろう。
お礼
早速の回答ありがとうございます。 お礼が遅くなりました。
お礼
丁寧に回答頂き、ありがとうございます。