- ベストアンサー
行を挟んでの列の一括文字挿入
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
曜日を自動で表示するには、そのセルに実際の年月日を記入し、そのセルの書式設定をユーザー定義のaaaにするだけでいいのですが、色も変える必要がありそうですので、以下を参照してみてください。 まずは自動カレンダーを作るのがお勧めです。
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17070)
質問の標題の表現が適当でない,と思う。 ーーー ・カレンダー表であること、は平凡な内容・課題です。 しかし ・普通と比べ、日付、曜日、など変わった配置になっていること。(とびとびになっていること、や10日で折り返しになっていることなどが凝っている) それが本表の関数での作成を難しくしていることを認識してますか。 関数の、連続セルへの複写がむつかしくなる。それが質問が出る原因ではないか これを自動作成するなら、VBAででやるとできる 。 しかしむつかしい課題はないが、カレンダー作成は、たまにしかやらないので、 ちょくちょくVBA使用の課題をwebを調べたりしていて、完成に数時間かかった。 さらに、下記でもイラスト画像、祝日文字色付けなど、積み残した点もある。 VBAでも、加えるのは、むつかしいことはないが、下記では略している。 下記は、VBAでシートに表を作成する場合の課題のオンパレードなので、勉強すれば沢山応用できるだろう。 ーーー VBAでやらないなら、曜日の文字色は、条件付き書式(エクセル関数WeekDayを使う、だけの簡単なもので済む) 祝日の文字色も、条件付き書式の機能を使い、VLOOKUP関数やCOUTIF関数で祝日に該当するかどうかを判定する。 Googleで「エクセル祝日色付け」で照会。 今までよくある陳腐な質問ですよ。質問者はWEB照会さえ、やってないようだ。 https://study387.com/excel-coloerd-weekday/ ーー 標準モジュールに Sub test01() Set sh1 = Worksheets("Sheet1") sh1.Cells.Clear m = 2 getumatu = DateSerial(2018, (m + 1), 1) - 1 'MsgBox getumatu j = -7 ii = 7 a = Array("A", "B", "C", "D") '--- For i = 1 To Day(getumatu) If (i Mod 10) = 1 Then j = j + 8 ii = 7 End If sii = ii sh1.Cells(ii, j) = DateSerial(2018, m, i) sh1.Cells(ii, j).NumberFormat = "d" sh1.Cells(ii, j).Font.Size = 18 sh1.Cells(ii + 1, j) = "日" '曜日 sh1.Cells(ii + 2, j) = DateSerial(2018, m, i) sh1.Cells(ii + 2, j).NumberFormat = "aaa" '---曜日でフォント色を変える If Weekday(DateSerial(2018, m, i)) = vbSaturday Then sh1.Cells(ii, j).Font.Color = vbBlue sh1.Cells(ii + 1, j).Font.Color = vbBlue sh1.Cells(ii + 2, j).Font.Color = vbBlue End If If Weekday(DateSerial(2018, m, i)) = vbSunday Then sh1.Cells(ii, j).Font.Color = vbRed sh1.Cells(ii + 1, j).Font.Color = vbRed sh1.Cells(ii + 2, j).Font.Color = vbRed End If '--- sii = ii sh1.Range(Cells(sii, j + 1), Cells(sii + 3, j + 1)) = WorksheetFunction.Transpose(Array("A", "B", "C", "D")) ii = ii + 4 Next i Union(Range("D7:E46"), Range("L7:M46"), Range("T7:U46")).Interior.Color = vbYellow '--- sh1.Range("A6:H6") = Array("日", "コード", "7時", "9時", "11時", "13時", "15時", "17時") sh1.Range("I6:P6") = Array("日", "コード", "7時", "9時", "11時", "13時", "15時", "17時") sh1.Range("Q6:X6") = Array("日", "コード", "7時", "9時", "11時", "13時", "15時", "17時") ii = ii + 4 Union(Range("A7:A46"), Range("I7:I46"), Range("Q7:Q46")).HorizontalAlignment = xlRight '-------列幅設定 clw = Array(6, 8, 6, 6, 6, 6, 6, 6, 8, 8, 6, 6, 6, 6, 6, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6) i = 1 For Each cl In sh1.Columns("A:X") 'MsgBox clw(i) cl.ColumnWidth = clw(i) i = i + 1 Next '--罫線設定 Range("a6:X46").Borders.LineStyle = True '--月指定 Range("B3").Value = #2/1/2018# Range("B3").NumberFormat = "m月" Range("B3").Font.Size = 20 '-- End Sub ーー これでは手作業で、マスターシートを作って、毎月コピーしてやった方が簡単でしょう。 ーー Set sh1 = Worksheets("Sheet1") のSheet1のところをシート名の文字列に置き換える。 そのシートは白紙のシートを指定する。
お礼
ご解答頂きどうも有難うございました。 >これでは手作業で、マスターシートを作って、毎月コピーしてやった方が >簡単でしょう。 毎月更新ですが、言われている様に今まで通り、毎月曜日だけの書換でやって行きます。
- msMike
- ベストアンサー率20% (368/1813)
「何とかまとめて」と贅沢を所望する初心者向けの別解 1.セル Y7 以降に連続数値 1、2、3、…、40 を入力 2.次の各セルにそれぞれ右側の式を入力  ̄ ̄ Z6: =A2  ̄ ̄ Z7: =DATE($A$2,$B$3,Y7)  ̄ ̄ AA7: =OFFSET($Z$7,(ROW(A1)-1)/4,)  ̄ ̄ AB7: =OFFSET($Z$7,(ROW(A41)-1)/4,)  ̄ ̄ AC7: =OFFSET($Z$7,(ROW(B85)-1)/4,) 3.範囲 Z7:AC7 のフィルハンドルを「エイヤッ!」とダブクリ 4.セル AC7 を上方向3行にオートフィル 5.次の各セルにそれぞれ右側の式を入力して、それぞれ下方に(46行目まで)ズズーッとオートフィル  ̄ ̄ A7: =AA7  ̄ ̄ I7: =AB7  ̄ ̄ Q3: =AC3 [条件付き書式]を含む書式は先の回答に同じ。 でも、貴方には難しスギ?
お礼
ご解答頂きどうも有難うございました。 >でも、貴方には難しスギ? その通りです・・(涙) でも何とか頑張って見ます。
- bunjii
- ベストアンサー率43% (3589/8249)
- msMike
- ベストアンサー率20% (368/1813)
[No.2]への補遺、 ステップ7において、 「ちなみに、祝日リストに付けた名前」 を次のように訂正します。 「ちなみに、nholiday は祝日リストに付けた名前」
お礼
2回もコメント戴き有難うございます。
- msMike
- ベストアンサー率20% (368/1813)
1.範囲 A2:B2 をセル結合して、  ̄ ̄ G/標準"年"  ̄ ̄に書式設定した後で、数値 2018 を入力 2.セル A7、A11、I7、I11、Q3、Q7、Q11 を  ̄ ̄ d  ̄ ̄に書式設定 3.下記の各セルにそれぞれ右側の式を入力  ̄ ̄ A7: =DATE($A$2,$B$3,ROW(A8)/4-1)  ̄ ̄ A11: =A7+1  ̄ ̄ I7: =A7+10  ̄ ̄ Q3: =I7+10  ̄ ̄ Q7: =Q3+1 4.セル A8、A12、I8、Q4、Q8 を  ̄ ̄ [>0]"日";G/標準  ̄ ̄に書式設定して、それぞれ1つ上のセルを参照する式を  ̄ ̄入力(=A7、=A11、=I7、=Q3、=Q7 という具合に)した後で、  ̄ ̄それぞれ1つ下のセルにオートフィル 5.セル A9、A13、I9、Q5、Q9 を  ̄ ̄ aaa  ̄ ̄に書式設定後、それぞれ1つ下のセルと結合 6.範囲 A7:A14 を選択後、下記の[条件付き書式]を設定  ̄ ̄ 数式: =WEEKDAY(A7,1)=1 書式: フォント色を赤  ̄ ̄ 数式: =WEEKDAY(A7,1)=7 書式: フォント色を青  ̄ ̄ 数式: =COUNTIF(nholiday,A7) 書式: フォント色を赤  ̄ ̄ 数式: =MONTH(A7)<>$B$3 書式: フォント色を白  ̄ ̄ちなみに、祝日リストに付けた名前 7.範囲 A7:A14 を選択 ⇒ Ctrl+C ⇒ Ctrlを抑えたままで、  ̄ ̄セル I7、Q7 をツンツン ⇒ Ctrl+Alt+V ⇒“書式”に目玉  ̄ ̄入れ ⇒ [OK] 8.範囲 A11:A14 を選択 ⇒ フィルハンドルをマウスで下方  ̄ ̄に(46行目まで)ズズーッとオートフィル ⇒  ̄ ̄Crtl+C ⇒ Ctrlキーを抑えたままで、セル I11、Q11 を  ̄ ̄ツンツン ⇒ Ctrl+V 9.範囲 A11:A14 を選択 ⇒ Ctrl+C ⇒ セル Q3 をツン ⇒  ̄ ̄Ctrl+Alt+V ⇒“書式”に目玉入れ ⇒ [OK]
お礼
ご解答頂きどうも有難うございました。 難しそうですが頑張って見ます。
お礼
ご解答頂きどうも有難うございました。 私には難しそうですがじっくり取り組んでみます。