[[20230707104724]] 『曜日を見る』(休日を見る関数) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『曜日を見る』(休日を見る関数)

日付を横計表示で各日付に対して「休み」を設定します。
設定と言ってもVLOOKUPで別のシートからもって来るだけですが…

当日が休みの場合は値を「0」休みではない場合は計算式(1日前の数字を見る)
しかし、当日が休みでなく、前日が休みの場合は休み前の数字を見る

通常の月曜日なら金曜日を見る
金曜日を休みに設定している場合は、木曜日を見る

このような計算式を作るにはどうしたらいいでしょうか?

関数でもマクロでも良いのですが…

     |[A]     |[B]                    |[C]                    |[D]                    |[E]                    |[F]                    |[G]                    |[H]                    |[I]                    |[J]                    |[K]                    
 [1] |商品CD|3月10日                |3月11日                |3月12日                |3月13日                |3月14日                |3月15日                |3月16日                |3月17日                |3月18日                |3月19日                
 [2] |        |=VLOOKUP(B$1,$M:$N,2,0)|=VLOOKUP(C$1,$M:$N,2,0)|=VLOOKUP(D$1,$M:$N,2,0)|=VLOOKUP(E$1,$M:$N,2,0)|=VLOOKUP(F$1,$M:$N,2,0)|=VLOOKUP(G$1,$M:$N,2,0)|=VLOOKUP(H$1,$M:$N,2,0)|=VLOOKUP(I$1,$M:$N,2,0)|=VLOOKUP(J$1,$M:$N,2,0)|=VLOOKUP(K$1,$M:$N,2,0)
 [3] |KEY1    |                       |                       |                       |                       |                       |                       |                       |                       |                       |                       
 [4] |KEY2    |                       |                       |                       |                       |                       |                       |                       |                       |                       |                       
 [5] |KEY3    |                       |                       |                       |                       |                       |                       |                       |                       |                       |                       
 [6] |KEY4    |                       |                       |                       |                       |                       |                       |                       |                       |                       |                       
 [7] |KEY5    |                       |                       |                       |                       |                       |                       |                       |                       |                       |                       
 [8] |KEY6    |                       |                       |                       |                       |                       |                       |                       |                       |                       |                       
 [9] |KEY7    |                       |                       |                       |                       |                       |                       |                       |                       |                       |                       
 [10]|KEY8    |                       |                       |                       |                       |                       |                       |                       |                       |                       |                       
 [11]|KEY9    |                       |                       |                       |                       |                       |                       |                       |                       |                       |                       
 [12]|KEY10   |                       |                       |                       |                       |                       |                       |                       |                       |                       |                       

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


$M列には日付が入りますね。
$N列には何が入るのですか?

例えば、B2には0または1日前の営業日を返すのでしょうか?
3行目以降のKEYの意味もよくわからないですが。
(ゆたか) 2023/07/07(金) 11:31:59


ごめんなさい、
=VLOOKUP(B$1,$M:$N,2,0)
M列に3月10日
N列に休 とか 曜日を入れてます。
(休日を見る関数) 2023/07/07(金) 14:21:44

説明なさ過ぎてごめんなさい。

2行目に入れたのはミスです!
3行目以降のKEYを軸にして別のシートから読み取る形にしてます
別シートの同じキーを読みに行くようにして、しかも、休みだったらという感じにしたいと思ってます。
(休日を見る関数) 2023/07/07(金) 14:25:24


N列を見れば休みかどうかはわかるわけですね。

1日前の日付は何故必要になるのですか?
読みに行く別のシートのシート名が日付にでもなっているのでしょうか?
(ゆたか) 2023/07/07(金) 14:36:36


とりあえず、B1で指定された日から見た1日前の営業日は以下の式で求められます。

=WORKDAY(B1,-1,休日を指定する範囲)

休日を指定する範囲には、祝日や休日にしたい日を指定します。

参考
https://excelkowaza.com/workday/
(ゆたか) 2023/07/07(金) 16:08:24


1日前の日付を見るのは、
他のシート(20シート)ぐらいで計算をしているのですが
その際に、現在のシートに反映させるのに求めた数値が
金曜日が「5」だとして
土曜日や日曜日や祝日の場合は、その数字をまんまもってきたくないので

木:5 金:5 土:0 日:0 月:5

しかし、金曜が祝日の場合は、
木:5 金:0 土:0 日:0 月:5
この様にしたい。

その為の計算式が分からないので(-_-;)

(休日を見る関数) 2023/07/07(金) 17:21:24


I2セルに式を入れたとして
=IF(VLOOKUP(I$1,曜日!$A:$B,2,0)="休",0,IF(WORKDAY(I$1,-1,曜日!$D$2:$D$20),H2,0))

I1が「休」の場合は、0
以外の場合は、その前の平日の2行目のセルを持ってくる
この様な式は可能ですか?
(休日を見る関数) 2023/07/07(金) 17:47:24


どうも、良くわかりません。

I2に入るのは、

休みであれば0
休みでなければ直前の営業日の2行目の値

だと思うのですが、それでは循環してしまわないですか?

I2にH2の値を入れるとします。
しかし、H2はさらにその直前の営業日の2行目、つまりG2の値を参照しています。
しかし、G2はさらにその直前の営業日の2行目、つまりF2の値を参照しています。
しかし、F2はさらにその直前の。。。(以下省略)

どこまでも前の営業日の値を参照ということになりませんか?
(ゆたか) 2023/07/11(火) 13:15:24


その通りです、どこまでも前の営業日の値を入れ続けます。
そして、休みの場合は0を持ってくる
別のテーブルなどを使用して値を持ってくる形になりますが
特に循環はしないと思います。

このようなマクロや関数などわかりますか?
(休日を見る関数) 2023/07/11(火) 16:09:22


どうも合っているように思えないんですが、とりあえず以下のように作ってみました。

	A	B	C	D	E	F	G	H	I	J	K
1	商品CD	3月10日	3月11日	3月12日	3月13日	3月14日	3月15日	3月16日	3月17日	3月18日	3月19日
2		ABC	0	0	ABC	ABC	ABC	ABC	0	0	0

3月10日については、前を参照できないので、ここにABCと入れてあります。
C,D,I,J,Kについては、休なので、0を返します。

C2には以下の式が入れてあります。K2までドラッグしてコピーしてください。

=IF(VLOOKUP(C$1,曜日!$A:$C,3,0)="",0,HLOOKUP(VLOOKUP(C$1,曜日!$A:$C,3,0),$1:$2,2,0))

曜日シートは以下のようになります。

	A	B	C	D
1	3月10日			金
2	3月11日	休		土
3	3月12日	休		日
4	3月13日		3月10日	月
5	3月14日		3月13日	火
6	3月15日		3月14日	水
7	3月16日		3月15日	木
8	3月17日	休		金
9	3月18日	休		土
10	3月19日	休		日

A列は日付です。
B列は休みの場合に「休」と入力します。
C列に参照すべき平日(1つ前の営業日)を求めています。
D列は参考までに曜日が入れてありますが、特に必要はありません。

C1は前を参照できないので、空白としています。
C2には以下の式が入れてあります。C10までドラッグしてコピーしてください。

=IF($B2="休","",IF(COUNTIF($B$1:$B1,""),INDEX($A$1:$A1,MAX(INDEX(($B$1:$B1="")*ROW($A$1:$A1),))),NA()))
(ゆたか) 2023/07/11(火) 16:50:02


すみません、コロナで見れませんでした。
上記ありがとうござい御座います。

IF($B2="休","",IF(COUNTIF($B$1:$B1,""),INDEX($A$1:$A1,MAX(INDEX(($B$1:$B1="")*ROW($A$1:$A1),))),NA()))
この式はどこに入れるのでしょうか?

値を求めたい場所には、最初の「=IF(VLOOKUP(C$1,曜日!$A:$C,3,0)="",0,HLOOKUP(VLOOKUP(C$1,曜日!$A:$C,3,0),$1:$2,2,0))」が入っているのでという事です。
(休日を見る関数) 2023/07/18(火) 11:23:35


>IF($B2="休","",IF(COUNTIF($B$1:$B1,""),INDEX($A$1:$A1,MAX(INDEX(($B$1:$B1="")*ROW($A$1:$A1),))),NA()))
>この式はどこに入れるのでしょうか?

曜日シートのC2に入力して下にコピーしてください。
この式はA列に入っている日付より前の平日を求めています。

>値を求めたい場所には、最初の「=IF(VLOOKUP(C$1,曜日!$A:$C,3,0)="",0,HLOOKUP(VLOOKUP(C$1,曜日!$A:$C,3,0),$1:$2,2,0))」が入っているのでという事です。

こちらの式では、曜日シートのC列で求めたその日より前の平日を参照しています。
つまり、両方入れないとうまく機能しません。
(ゆたか) 2023/07/19(水) 08:42:29


休みの日の#N/Aと表示されるのであってますか?

(休日を見る関数) 2023/07/19(水) 09:10:50


休みの日の#N/Aと表示されるのであってますか?
(休日を見る関数) 2023/07/19(水) 09:10:50
取り消します
(休日を見る関数) 2023/07/19(水) 09:25:29

曜日シートで、もし当日よりも前に平日(B列に"")がなければ、#N/Aを返すようにしています。
C列にはその日より前の平日を求めたいので、平日がなければ困るからです。
(ゆたか) 2023/07/19(水) 10:35:39

お世話になってます。

=IF(VLOOKUP(C$1,曜日!$A:$C,3,0)="",0,HLOOKUP(VLOOKUP(C$1,曜日!$A:$C,3,0),$1:$2,2,0))
こちらの式ですが、
タイトル行があり
2行目から明細が始まります。
2行目はこの関数で値が表示されるのですが

3行目からも2行目の値が表示されてしまいます。
どのようにすれば良いのでしょうか?
(番号の割り振り) 2023/07/20(木) 16:28:48


3行目以降も2行目と同じことをやりたいということでしょうか?

その式の代わりに以下をC2に入力して、右、下にコピーしてみてください。

=IF(VLOOKUP(C$1,曜日!$A:$C,3,0)="",0,HLOOKUP(VLOOKUP(C$1,曜日!$A:$C,3,0),INDIRECT("$1:"&ROW()),ROW(),0))

	A	B	C	D	E	F	G	H	I	J	K
1	商品CD	3月10日	3月11日	3月12日	3月13日	3月14日	3月15日	3月16日	3月17日	3月18日	3月19日
2		ABC	0	0	ABC	ABC	ABC	ABC	0	0	0
3		DEF	0	0	DEF	DEF	DEF	DEF	0	0	0
(ゆたか) 2023/07/21(金) 10:31:01

コメント返信:

[ 一覧(最新更新順) ]


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