【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

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

A 回答 (6件)

セルの書式設定で表示形式をユーザー定義にして 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
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/01 13:41

ka_na_deです。



シート名ではなく、セルに入力するのですね。
完全に勘違いしてました。
私の回答は無視してください。

papayuka さんのVBAが、ばっちりです。

内容すべてが、とても参考になりました。
ブックマークに登録しました。

あんなに簡単に記述できるのですね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/01 13:43

表示書式で、年や月の数字を全角表示したいなら、


[DBNum3]ggge"年"m"月"
でいけます。
お試し下さい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/01 13:42

ka_na_deです。



大きな問題ではありませんが、
変数名を間違えました。
NENDO→GENGOU
です。
修正しなくても動くとは思います・・・
    • good
    • 0
この回答へのお礼

了解いたしました。

お礼日時:2007/09/01 13:39

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

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

お礼日時:2007/09/01 13:38

昨日も同じような質問があったが、


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

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

お礼日時:2007/09/01 13:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報