[[20260804111031]] 『別シートを参照した出勤、欠勤表』(今年度の悩みの種) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『別シートを参照した出勤、欠勤表』(今年度の悩みの種)

別シートの曜日別出勤予定を参照して、休む日が自動で灰色に塗りつぶされるカレンダーを作りたい。
カレンダーは
2026  年  4  月
        1 2 3 4
        月 火 水 木
       ア
  ○○さん イ
       ウ
       ア
  △△さん イ
       ウ
別シートの曜日別予定表は
        月 火 水 木 金 土 日
  ○○さん  ×   ×     × ×
  △△さん          × × ×
               (×が休みです)

・カレンダーの「年」「月」を変えると自動で日付と曜日が出てくるようにしています。
・カレンダーの名前の部分は3行を結合しています。
・別シートの×をいじるだけでカレンダーに反映し、×の曜日がすべて灰色で塗りつぶされるようにしたいです。
・2枚に分けて印刷。1枚目は18日まで2枚目は19日以降になっていて、
1枚目2枚目の左端には名前とアイウの表記を入れます。
・3行すべてを塗りつぶす点は、ROWからQUOTIENTを使って割り出す等してみたのですが、オートフィル等をすると反映されなかったりでうまくいきませんでした。
・別シートの曜日を参照する点は、INDEXとMATCH関数を組み合わせてみたのですが、使い慣れておらず上手くいきませんでした。

ご回答いただけますと幸いです。

< 使用 Excel:unknown、使用 OS:unknown >


 エクセルのバージョンと、それぞれのシートのレイアウト(何列目、何行目に何のデータが入力されているか)を
 明記したほうがいいのでは。
(ねむねむ) 2026/08/04(火) 13:10:56

失礼しました。
使用EXCEL MICROSOFT365 バージョン2410
使用OS  Windows11

●Sheet1(印刷1ページ目)
A1 「2026」 
A2A3結合「氏名」
A4〜A6「山田 太郎」
A7〜A9「佐藤 次郎」
最大35名想定でA106〜A108まで。

B1「年」B2B3は空白
B4「出欠」B5「出勤」B6「退勤」
B7「出欠」B8「出勤」B9「退勤」
以下同様に最大35名想定で106〜108行まで。

C1「8」
C2「=DATE(A1,C1,1)」
C3「=WEEKDAY(C$2)」

D1「月]
D2「=C2+1」
D3「=C3+1」

C〜T列までが1〜18日

●Sheet1(印刷2ページ目)
U2U3「氏名」
U4〜U6「山田 太郎」
U7〜U9「佐藤 次郎」

V2V3は空白
V4「出欠」V5「出勤」V6「退勤」
V7「出欠」V8「出勤」V9「退勤」

W2「=T2+1」
W3「=T3+1」

W〜AI列までが19〜31日

●Sheet2
A1A2結合「氏名」
A3「山田 太郎」
A4「佐藤 次郎」
最大35名想定でA37まで。

B1〜H1結合で「出勤」
B2「月」C2「火」D2「水」E2「木」F2「金」G2「土」H2「日」

●その他(自分で設定できたと思われる個所)
・祝日や休業日に関してはSheet2のQ列に手入力しSheet1の条件付き書式「=COUNTIF(Sheet2!$Q:$Q,XEV$2)」を設定し灰色に塗りつぶしています。
・29日30日31日とその曜日をを月によって非表示にしたいためSheet1の条件付き書式「=NOT(AND(YEAR(AG2)=$A$1,MONTH(AG2)=$C$1))」
「=NOT(AND(YEAR(AG3)=$A$1,MONTH(AG3)=$C$1))」を設定し文字を白色にしています。

●最終的な目標
・Sheet2のB3:H37に「×」を手入力し、それを参照してSheet1の該当箇所を3行毎灰色に塗りつぶしたいです。
・3行に分けている理由としては、罫線で表にし出勤・退勤時間を入力したいからです。ここがややこしい原因になってるかもしれません。

分かりにくくて申し訳ありません。よろしくお願いいたします。

(今年度の悩みの種) 2026/08/04(火) 16:11:55


●補足
・「3行で分けて出勤退勤時間を入力したい」というのは「印刷して他の人が手書きで記録しやすいようにしたい」ということです。
(今年度の悩みの種) 2026/08/04(火) 16:14:12

 C4セルを先頭に、以下の条件付き書式を設定

 条件式:
 =AND(INDEX(XLOOKUP(INDEX($A:$A,FLOOR(ROW()-1,3)+1),Sheet2!$A$3:$A$37,Sheet2!$B$3:$H$37,""),WEEKDAY(C$2,2))="×",C$2<=DATE($A$1,$C$1+1,0))

(半平太) 2026/08/04(火) 19:13:59


 既に回答がありますが、こんな考え方もあるかと思いコメントします。(返事を下さいね。)

 姓名は結合セルとして表示しているようですが、
 すべての行にデータを入れることで計算が単純になりそうです。

 どうしても3行の中間のセルだけ表示するように見せたければ、
 ・それらのセルのフォントの色をいったん"白"にセットしたうえで、
 ・条件付き書式で、「前の行と同じ、かつ次の行と同じ」場合だけフォント色を黒とする
 ことでよいと思います。(結構出てくる考え方ではあります)

 その前提(全行に氏名を入力)のうえで、休暇のセルを灰色で塗りつぶすには、
 条件付き書式で、ルールを
 =VLOOKUP($A4,Sheet2!$A$3:$H$37,WEEKDAY(C$2,2)+1,FALSE)="×"
 とすればよいと思います。

 検討漏れがあるかもしれませんが、その場合は適宜修正してください。
(xyz) 2026/08/04(火) 22:11:07

お礼が遅れて申し訳ありません。
解読を進めてなんとか理解が進みました。
ファイルを二つ用意して、お二人の回答を入れましたが、どちらも上手く機能しました。
●ねむねむさん
初めに情報不足をご指摘いただきありがとうございました。
●半平太さん
・INDEXの部分は理解が及ばす、自分なりに考えてみます。
・最後のC$2<=DATEは日付が翌月ではなく今月なら、ということですよね。
・複雑な要望に応えていただき感謝申し上げます。
●xyzさん
・別視点での解決策ありがとうございます。
・表示したくないものを白にしたことはありましたが、全部白にしてから表示したいものを黒にしたことは
ありませんでした。
・シンプルな数式、感謝申し上げます。

4月から悩み続けていたのがウソのように解決いたしました。
改めて感謝申し上げます。
また、質問させていただくこともあるかもしれませんがよろしくお願いいたします。
(今年度の悩みの種) 2026/08/05(水) 17:40:05


 氏名の箇所のフォント色は、全部黒(自動のまま)にしておいて、
 =NOT(現在の式)
 の時にフォント色を白にするのが普通でしたね。
 # 自分でも、どうしてそういうことにしたのか、記憶がはっきりしないですな。(熱中症?)
(xyz) 2026/08/05(水) 18:41:27

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.