- ベストアンサー
エクセルでシートにわたり連番を入力する方法
エクセルのシート1からシート31までの同じセルに日にちと曜日を入力したいのです。シート1に1日と月、シート2に2日と火といったように。簡単に入力できる方法がありましたら教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 一般操作による方法です。 (といっても実際はマクロですが) 日付ですので、どこかに年と月を入れる場所を用意した方がいいです。 そこで、1日のシート(Sheet1)のA1に年、B1に月を入力するとします。 まず、どのシートを選択していてもいいので、メニューの[挿入]→[名前]→[定義]で、 [名前]:適当な名前(仮に「シート位置」とします。) [山椒範囲]:「=GET.DOCUMENT(87)+NOW()*0」 として、[OK]します。 これで、試しにどのシートのどのセルでもいいので、 =シート位置 と入力すると、そのシートの位置が表示されます。 シート位置というのは、シート下部のシートタブの左からの位置です。 したがって、各日にちのシートが左から順に並んでいれば、シートに渡った連番になります。 仮に各シートのA2に日数、B2に曜日を表示するとします。 全シートを(シートタブで)選択して、A2に、 =シート位置 と入力します。 次に、そのままB2に、 =DATE(Sheet1!$A$1,Sheet1$B$1,A2) と入力して、B2のセルの表示形式をユーザー定義で、 「aaa」 とすれば、曜日を表示出来ます。 曜日は、数式を、 =TEXT(DATE(Sheet1!$A$1,Sheet1$B$1,A2),"aaa") とすれば、表示形式を変えなくても直接表示出来ます。 年と月を直接数式中に入れて、 =DATE(2005,8,A2) のようにしてもいいし、今日の日付から、 =DATE(YEAR(TODAY()),MONTH(TODAY()),A2) としてもいいでしょう。
その他の回答 (2)
- tona-tona
- ベストアンサー率34% (8/23)
数式初心者・マクロ初級者です。(万年) 一般機能の方はちょっとわからないので、VBAです。 VBAも使われますか? 既存シートに対する入力だと、こんなのかなぁ。。。 Sub 日付入力したいシートを選択してから実行してね() Dim Sh As Worksheet Dim Rng As Range Dim myYmd As Variant Dim Rsp As Integer Do myYmd = Ymd() Rsp = MsgBox(myYmd & "から始めますよ!", vbYesNoCancel) If Rsp = vbCancel Then End Loop Until Rsp = vbYes On Error GoTo myCancel Set Rng = Application.InputBox("入力セルをクリック!", "セルの指定", "=$A$1", , , , , 8) On Error GoTo 0 Application.ScreenUpdating = False On Error Resume Next For Each Sh In ActiveWindow.SelectedSheets With Sh.Range(Rng.Address) .Value = myYmd .NumberFormatLocal = "d""日"" aaa" End With myYmd = myYmd + 1 Next Sh On Error GoTo 0 Application.ScreenUpdating = True myCancel: End Sub Function Ymd() As Variant Dim myY As Long Dim myM As Long Dim myD As Long myY = Year(Date) myM = Month(Date) + 1 myD = 1 On Error GoTo myCancel myY = Application.InputBox(myY & "年でいい?", "セルの指定", myY, , , , , 1) If myY = False Then End myM = Application.InputBox("何月?", "セルの指定", myM, , , , , 1) If myM = False Then End Ymd = DateSerial(myY, myM, myD) On Error GoTo 0 Exit Function myCancel: MsgBox "終了しますよ。" End End Function 半年振りくらいにコード組んだので、あんまり自信ありません。 あと、ざっと書きなぐったので、細かい設定は端折ってます。 動作チェックはしたけど、試す時はバックアップとってからにして下さいね。 (動作check:Excel97) VBAなら分かるけど、一般機能だったら・・・という質問だったら流して下さい。
- imogasi
- ベストアンサー率27% (4737/17069)
シート名は、原理的に、関数ではセットできません。 1シート1シートひとつづつ、名前をセットするほかには、VBAでないとできないでしょう。 Sub test01() yymm = InputBox("年月例200508") nextM = DateSerial(Val(Mid(yymm, 1, 4)), Val(Mid(yymm, 5, 2)) + 1, 1) For i = 1 To 31 d = DateSerial(Val(Mid(yymm, 1, 4)), Val(Mid(yymm, 5, 2)), i) If d >= nextM Then Exit Sub wd = Format(d, "aaa") Worksheets.Add(after:=ActiveSheet).Name = i & "日" & wd Next i End Sub