• ベストアンサー

行を挟んでの列の一括文字挿入

いつも拝見しております。 Windows 10 Homeでexcel2013を使用しています。 画像の表ですが毎月毎に更新しています。A列の曜日の変更ですが いつも日ごとに一つ一つ消しては書き込んでいます。 質問ですが、何とかまとめて曜日の挿入が出来ないのでしょうか? ご指導よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • aokii
  • ベストアンサー率23% (5210/22063)
回答No.1

曜日を自動で表示するには、そのセルに実際の年月日を記入し、そのセルの書式設定をユーザー定義のaaaにするだけでいいのですが、色も変える必要がありそうですので、以下を参照してみてください。 まずは自動カレンダーを作るのがお勧めです。

muko205
質問者

お礼

ご解答頂きどうも有難うございました。 私には難しそうですがじっくり取り組んでみます。

その他の回答 (5)

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

質問の標題の表現が適当でない,と思う。 ーーー ・カレンダー表であること、は平凡な内容・課題です。 しかし ・普通と比べ、日付、曜日、など変わった配置になっていること。(とびとびになっていること、や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のところをシート名の文字列に置き換える。 そのシートは白紙のシートを指定する。

muko205
質問者

お礼

ご解答頂きどうも有難うございました。 >これでは手作業で、マスターシートを作って、毎月コピーしてやった方が >簡単でしょう。 毎月更新ですが、言われている様に今まで通り、毎月曜日だけの書換でやって行きます。

  • msMike
  • ベストアンサー率20% (368/1813)
回答No.5

「何とかまとめて」と贅沢を所望する初心者向けの別解 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 [条件付き書式]を含む書式は先の回答に同じ。 でも、貴方には難しスギ?

muko205
質問者

お礼

ご解答頂きどうも有難うございました。 >でも、貴方には難しスギ? その通りです・・(涙) でも何とか頑張って見ます。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.4

>質問ですが、何とかまとめて曜日の挿入が出来ないのでしょうか? 給料を貰っている仕事の範囲ですよね? 上司や先輩に手解きしてして貰うのが先決です。 万年カレンダーの作成手法で年月を入力すると自動的に作成できるSheetを作成すれば良いことになりますが、図解と文章では1回の回答で解決できません。 取敢えず、完成図を貼付しますので社内(団体内?)の有識者と相談してください。

muko205
質問者

お礼

ご解答頂きどうも有難うございました。 表まで作って頂き感謝しています。 リタイヤ組のテニスなかまで、他の人はパソコンを扱えず、相談はできません。3月分から出来る様に頑張ります。

  • msMike
  • ベストアンサー率20% (368/1813)
回答No.3

[No.2]への補遺、 ステップ7において、 「ちなみに、祝日リストに付けた名前」 を次のように訂正します。 「ちなみに、nholiday は祝日リストに付けた名前」

muko205
質問者

お礼

2回もコメント戴き有難うございます。

  • msMike
  • ベストアンサー率20% (368/1813)
回答No.2

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]

muko205
質問者

お礼

ご解答頂きどうも有難うございました。 難しそうですが頑張って見ます。

関連するQ&A

専門家に質問してみよう