質問: cells(行, 曜日列).interior.colorindex
回答: こういうのを標準モジュールに貼り付けて function rota(sday as date, tday as date, rt as long) as string dim c as variant 'sday 当番開始日 'tday 判断日 'rt 何人でローテーションか set c = worksheets("祝日表").range("a:a").find( _ format(tday, "m月d日"), lookin:=xlvalues, lookat:=xlwhole) '↑祝日表の書式と併せるため if not c is nothing then 'find で条件に見合うものが有った場合 rota = trim(str(rt + 3)) exit function end if select case weekday(tday, vbmonday) case 1 to 5 '週(7)で割った商を rt で割った余りを求めています rota = str((datediff("d", sday, tday) \ 7) mod rt + 1) case 6 rota = str(rt + 1) case 7 rota = str(rt + 2) end select rota = trim(rota) end function ワークシートのセルに日付が入っているとしてb列に名前を出したい。 c列に当番者の名前がある。としたら たとえば4人の例ですが a1 12月1日 b1 c1 たなか a2 12月2日 b2 c2 さとう a3 12月3日 b3 c3 すずき a4 12月4日 b4 c4 やまだ a5 12月5日 b5 c5 土 a6 12月6日 b6 c6 日 a6 12月7日 b7 c7 祝 a6 12月8日 b8 c8 ・・・・・・・・・・・・・・・ シートをもうひとつ用意して(上記モジュールではシート名を祝日表としています) a列に年間の祝日の一覧を作成 a1 1月1日 a2 1月2日 a3 1月3日 ・・・・・ としたら、sheet1のb列のセルに =indirect("c" & rotano($a$1,a1,4)) で ズズーとコピペで名前が入ります。