dポイントプレゼントキャンペーン実施中!

少しデフォルメしているのですが、写真のような配置です。
写真には載っていませんが、「第一週」から「第五週」まであります。
A列に日付があり、CからHまでの範囲にカレンダーとして使いたい範囲があり、その中の黄色の部分に日付をいれたいのですが、カレンダーのように、月により一日の曜日が変わってきます。
どんな年月にも対応できるように関数を入れて黄色の部分に月日を差し込むようにできますか?
(写真では第一週のみ例として日付が入れてあります)

「関数でカレンダーに日付を差し込みたい」の質問画像

A 回答 (1件)

標準の関数では難しいのではないでしょうか(少なくとも私には無理です)


そこで、ユーザ定義関数を作りましょう。
下記のユーザ関数は、指定したカレンダ範囲の中から、第n週のm曜日に該当する日付を返すものです。
具体的にはセルに、=MyWeekday("A2:A32",2,1) と指定するとA2~A32の中から第2週の日曜日に該当する日を返します。(セルの書式は日付型にしてください)
ちなみに曜日は、日曜=1、月=2、・・・土=7 で指定します。

Function MyWeekday(MyRange As Range, MyWeek As Variant, MyDay As Variant) As Variant
Dim Rng As Range, wkWeek, wkDay
MyWeekday = ""
wkWeek = 1
For Each Rng In MyRange
wkDay = Weekday(Rng)
If wkWeek = MyWeek And wkDay = MyDay Then
MyWeekday = Rng
Exit Function
End If
If wkDay = 7 Then
wkWeek = wkWeek + 1
End If
Next
End Function
    • good
    • 1
この回答へのお礼

ありがとうございます!
すばらしいご回答です!
これができれば大助かりです。
質問してよかったです。ありがとうございました!

お礼日時:2016/02/26 21:59

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