• 締切済み

エクセルで各シートに1~12月を入力する方法

エクセルで12枚のシートがあります。 各シートの同位置セルに「平成○年 ◎月売上げ」と入力したいのですが、◎部分に4月~12月、1月、2月、3月、   ○部分に4月~12月シートには平成19年     1月~3月シートには平成20年と、 各シート1枚ずつに入力するしかないのでしょうか? 初心者でよくわかりません。教えて下さい。よろしくお願いします。

みんなの回答

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.6

ka_na_deです。 シート名ではなく、セルに入力するのですね。 完全に勘違いしてました。 私の回答は無視してください。 papayuka さんのVBAが、ばっちりです。 内容すべてが、とても参考になりました。 ブックマークに登録しました。 あんなに簡単に記述できるのですね。

reaf
質問者

お礼

丁寧に回答頂き、ありがとうございます。

noname#79209
noname#79209
回答No.5

表示書式で、年や月の数字を全角表示したいなら、 [DBNum3]ggge"年"m"月" でいけます。 お試し下さい。

reaf
質問者

お礼

回答ありがとうございます。 参考にさせていただきます。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

セルの書式設定で表示形式をユーザー定義にして 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

reaf
質問者

お礼

分かりやすい回答ありがとうございます。 お礼が遅くなりました。

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.3

ka_na_deです。 大きな問題ではありませんが、 変数名を間違えました。 NENDO→GENGOU です。 修正しなくても動くとは思います・・・

reaf
質問者

お礼

了解いたしました。

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.2

おそらく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)右側に上記のマクロを貼り付けます。   実行は、上部の再生マークボタンを押してください。 <注意>  マクロはやり直しが効かないので、データはあらかじめ  バックアップしてから試してください。

reaf
質問者

お礼

回答ありがとうございます。 参考にさせていただきます。

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

昨日も同じような質問があったが、 シート内の、セルと違って、シート間において、複写で「セルの場合のように、番地の行(や列)を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月 ーー ただシートタブの順番を変えると、月の部分が変わるので、使い物にならないであろう。

reaf
質問者

お礼

早速の回答ありがとうございます。 お礼が遅くなりました。

関連するQ&A