[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『半月毎の日付と曜日の自動表示』(yomogi)
半月毎の日誌の日付を「西暦」と「月」のみを入力するだけで、「日」「曜日」を自動表示させたいのですが、前半月は1〜15日(15日間)の固定なので問題ありませんが、後半月は28、29、30、31と変わるため上手く表示出来ません。
どなたかご教示ください。
<やりたいこと>
A B C D
1 年
2 月
3 前
4
5 1 木
6 2 金
・
・
・
14 火
15 水
================
A B C D
1 年
2 月
3 後
4
5 16 木
6 17 金
・
・
・
27 月
28 火
※上記は2017/2の例です
※A1には2007と入力
※A2には2と入力
※A3には 前・後 のいずれかを入力
※5月の後半月の場合は、29・30・31も表示される
どうぞよろしくお願いします
< 使用 Excel:Excel2013、使用 OS:Windows7 >
まず、A5:A20セルの書式設定は、ユーザー定義で d としておきます。同様に、B5:B20セルは aaa。
A5:B20セルの数式は、以下のようにします。 =DATE($A$1,$A$2,ROW()+IF($A$3="前",-4,11))
次に、このセル範囲に条件付き書式を設定し、翌月分は文字を白にすることで、見えなくしてはどうでしょうか。 =MONTH(A$5)<MONTH(A5) (???) 2017/01/12(木) 10:22
A5 =IF(OR(AND(A$3<>"後",ROW(A5)=20),MONTH((A$1&-A$2)+(A$3="後")*15+ROW(A1)-1)<>A$2),"",(A$1&-A$2)+(A$3="後")*15+ROW(A1)-1) B5 =IF(A5="","",A5)
A5:B5 を20行目までコピー。
A列 表示形式 d B列 表示形式 aaa (GobGob) 2017/01/12(木) 10:24
というわけで、前半16日を消すため、A5:B20セルの数式は、以下のように変えてください。 =IF(AND($A$3="前",19<ROW()),"",DATE($A$1,$A$2,ROW()+IF($A$3="前",-4,11))) (???) 2017/01/12(木) 10:29
表示形式「標準」でOK案っす。
A5 =IF(OR(A4=15,MONTH((A$1&-A$2)+(A$3="後")*15+ROW(A1)-1)<>A$2),"",(A$3="後")*15+ROW(A1)) B5 =IF(A5="","",TEXT(A$1&-A$2&-A5,"aaa"))
A5:B5 20行目までコピー。
※ A4 空白のこと。 (GobGob) 2017/01/12(木) 10:32
ちょっと見直し
A5 =IFERROR(IF(A4=15,"",TEXT((A$1&-A$2)&-((A$3="後")*15+ROW(A1)),"d")*1),"")
でもOK。 (GobGob) 2017/01/12(木) 10:38 ⇒ 10:39 見直し
最初は考えたって判らないのだから、5足したり引いたり、試行錯誤して身につけて欲しいところです。ROW()は、対象となるセルの行を得る関数です。 =IF(AND($A$8="前",24<ROW()),"",DATE($A$6,$A$7,ROW()+IF($A$8="前",-9,6))) (???) 2017/01/12(木) 11:34
オイラの二つ目、三つ目案はROW関数の引数だけA1に戻せばOK。 (GobGob) 2017/01/12(木) 12:55
A5=IF(AND($A$3="前",ROW()<20),ROW()-4,IF(MONTH(DATE($A$1,$A$2,ROW()+10))=$A$2,ROW()+10,"")) 下方向にコピー (mm) 2017/01/16(月) 18:11
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.