プロが教える店舗&オフィスのセキュリティ対策術

エクセルに詳しい方、得意な方、ご回答をお願いいたします。
エクセル2007で、予定表とカレンダーを作成しております。
エクセルの予定表シートG列(G14~下の列)のイベント(予定)内容を、1月シートA12:H41の各日付に合致した場所(1/1の場合A13~A17(日にちが入力されているセル(A12)は除く)へ反映させたいのですが、その場合のマクロコードもしくは数式を教えて下さい。
なお、添付資料では、カレンダーシートは1月のみ表示となりますが、実際は、月ごとに分かれた1月~12月までのシートがあります。
ご回答いただくのに、大変お手間になると思いますが、どうぞよろしくお願いいたします。

「エクセル2007 カレンダーに予定を反映」の質問画像

質問者からの補足コメント

  • うれしい

    tom04さん、再びご回答いただきまして、ありがとうございます。
    本日、教えていただいた方法で、カレンダーに予定表の内容を無事に反映することが出来ました。
    tom04さんのおかげで、とても便利なカレンダーに仕上がりそうです。
    最後にもう1つ教えていただけないでしょうか?
    祝日の塗りつぶし(条件付き書式)ですが、私の設定ミスなのか、日にちの入っていない部分にも塗りつぶしされてしまいます。
    添付画像ですと、1月31日以降の11マスが塗りつぶしされています。
    その部分(日にちが表示されていないマス)を塗りつぶしされないようにするには、どうしたらよろしいでしょうか?
    大変図々しくて申し訳ございませんが、そちらも教えていただけたら、とても助かります。

    「エクセル2007 カレンダーに予定を反映」の補足画像1
    No.4の回答に寄せられた補足コメントです。 補足日時:2016/11/01 21:06

A 回答 (5件)

No.4です。



条件付き書式の設定について・・・
この際ですので、日・祝日・土曜の色付けも条件付き書式でやってしまった方が簡単だと思います。
前回回答した最後の日・土曜の塗りつぶしは「なし」にしておいてください。
そして祝日データに関しては「祝日」と名前定義してあるとします。

画像の配置だとA11~A14セルすべてに同じ条件付き書式の設定を行います。
(数式はすべて同じです)
一つのセルに条件付き書式を二つ設定します。
① 日・祝日の設定
A11を選択 → 条件付き書式 → ・・・中略・・・ → 数式欄に
=OR(WEEKDAY(A11)=1,COUNTIF(祝日,A11))
として → 書式 → 塗りつぶしから「赤」を選択しOK
この操作をA14セルまで行う。

② 土曜の設定
同様にA11セルを選択 → 条件付き書式 → ・・・中略・・・ → 数式欄に
=WEEKDAY(A11)=7
という数式を入れ → 書式 → 塗りつぶしから「青」を選択しOK
この操作をA14セルまで行う。

複数の条件付き書式を設定すると優先順位がありますので、
↓の画像のように「赤」の条件付き書式が上になるように赤丸部分の▲・▼をクリックし優先順位を入れ替えます。

最後にA11~A14セルを範囲指定 → A14セルのフィルハンドルで右へコピー → そのまま4行ずつ下へコピー!

これでなんとかお望みどおりにならないでしょうか?m(_ _)m
「エクセル2007 カレンダーに予定を反映」の回答画像5
    • good
    • 0
この回答へのお礼

ついに、で、出来ました!!!
めちゃくちゃ嬉しいです。
これで、明日、会社でカレンダーを仕上げることが出来ます。
本当に、本当に、ありがとうございました。
教えてgooにも、回答リクエストがあれば良いのにな……。
違う件で質問させていただいた際は、また是非、tom04さんご回答をよろしくお願いいたします。

お礼日時:2016/11/01 22:12

こんにちは!



https://oshiete.goo.ne.jp/qa/9483136.html
のサイトの関連質問ですね。
画像を拝見すると何とかカレンダーは作成できているようですので・・・

まず、
① 「予定表」SheetのA列すべてを範囲指定 → 名前ボックスに 月日 と入力し、A列を「月日」と名前定義します。
② 「予定表」SheetのG列すべてを範囲指定 → 同様に イベント と名前定義

以上の準備をしておきます。

そして各月SheetのA13セルに
=IFERROR(INDEX(イベント,MATCH(A12,月日,0))&"","")
という数式をいれます。

最後にA12~A16(5行をまとめて範囲指定)しA16セルのフィルハンドルで
列方向にコピー → そのまま下へ5行ずつコピーしてみてください。m(_ _)m
この回答への補足あり
    • good
    • 0
この回答へのお礼

tom04さん、再びご回答いただきまして、ありがとうございます。
再度、教えていただきたいことがございます。
tom04さんのご回答に、補足でコメントを付けさせていただきました。
お手数ですが、そちらを確認していただけないでしょうか。
どうぞ、よろしくお願いいたします。

お礼日時:2016/11/01 21:41

補足要求


いち日にふたつ以上のイベントがある日はイベント(G列)にどのように入力されるのですか。
    • good
    • 0

長い複雑な式を埋め込むより、複数シートの処理を一気にマクロでやってしまった方がかえって簡単です。

参考まで。

Sub test()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim ws_name As String
Dim i As Long, imax As Long
Dim wk_Range As Range, wRange As Range
Application.ScreenUpdating = False
Set ws1 = Worksheets("予定表")
With ws1
imax = .Cells(Rows.Count, "G").End(xlUp).Row
For i = 14 To imax
If .Range("G" & i).Value <> "" Then
ws_name = Month(.Range("A" & i).Value) & "月"
Set ws2 = Worksheets(ws_name)
Set wk_Range = ws2.Range("A12:G42")
For Each wRange In wk_Range
If wRange.Value = .Range("A" & i).Value Then
wRange.Offset(1, 0).Value = .Range("G" & i).Value
Exit For
End If
Next wRange
End If
Next i
End With
Application.ScreenUpdating = False
End Sub
    • good
    • 1
この回答へのお礼

ご回答に時間を割いて頂き、ありがとうございます。
とても勉強になりました。
今後の参考にさせていただきます。

お礼日時:2016/11/01 22:15

DATE関数、WEEKDAY関数、VLOOKUP関数を組み合わせてなんとかできました。


ヒントです。勉強してください。
そのうち、だれか教えてくれるでしょう。
どうしても無理なら、また質問をあげてください。
    • good
    • 0

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