Chiquilin Site■05.12.02_Excel:ゴミ収集日を計算する

その1:今日は何曜日?
その2:今日は第何何曜日?
その3:今日は何ゴミの日?

その1:今日は何曜日?

この計算は簡単です。TEXT関数を使えば簡単に曜日が分かります。
例えば A1セルに日付データがあるとして
■任意セル
 =TEXT(A1,"aaa")
これで曜日が表示されます。表示形式は沢山ありますが曜日の指定の場合
表示形式 表示のされ方
aaa 「月」「火」「水」「木」「金」「土」
aaaa 「月曜日」「火曜日」「水曜日」「木曜日」……
ddd 「Mon」「Tue」「Wed」「Thu」「Fri」「Sat」「Sun」
dddd 「Monday」「Tuesday」「Wednesday」……
※「d」や「dd」は「曜日」ではなく「日(day)」の表示形式になります。
このようなものがあります。よくある「WEEKDAY」関数を使う方法は意味がないと思います。
ページの一番上へ

その2:今日は第何何曜日?

第何週かを計算するのと違って、これは簡単です。1週間は7日ですから
例えばA1セルに日付データがあるとして
■任意セル
 =INT((DAY(A1)+6)/7)
でその曜日が第何回目なのかが分かります。第何何曜日かを表示するなら
■任意セル
 =TEXT(INT((DAY(A1)+6)/7),"[DBNum3]第0")&TEXT(A1,"aaaa")
となります。
因みにその日が第何週なのかを計算する場合は
■任意セル
 =INT((13+DAY(A2)-WEEKDAY(A2))/7)
などで求まります。とりあえず今回は使いませんが。
ページの一番上へ

その3:今日は何ゴミの日?

市町村や地区で違うでしょうが、私の住んでる所ではこんな感じです。
ゴミ収集日チェック表1
この作りで見ると 「可燃ごみ」と「他のごみ」とで表示のされ方が大別されます。
なので数式も C4セルと D4:F4セルとで分けた方が良いでしょう。
ゴミ収集日チェック表2
まず「次の収集日」欄を作成します。数式は
■C5セル
 =F1+CHOOSE(WEEKDAY(F1),1,0,2,1,0,3,2)
■D5セル
=$F1+MATCH(0,INDEX(ISNA(MATCH("*"&TEXT(INT((DAY($F1+ROW(1:31)-1)+6)/7),
"[DBNum3]第0")&TEXT($F1+ROW(1:31)-1,"aaa")&"*",D4,))*1,0),)-1
 普通に Enter で確定
 F5セルまでオートフィルコピー
こんな方法で可能です。D5セルの数式は「その1」「その2」の数式を応用しています。
ただこの C5セルの数式では C4セルの収集日程が変更されると いちいち数式を見直す必要があります。それは面倒なので 少し数式を変更します。
■C5セル
 =F1+MATCH(0,INDEX(ISERR(FIND(TEXT(F1+ROW(1:7)-1,"aaa"),C4))*1,0),)-1
■D5セル
=$F1+MATCH(0,INDEX(ISNA(MATCH("*"&TEXT(INT((DAY($F1+ROW(1:35)-1)+6)/7),
"[DBNum3]第0")&TEXT($F1+ROW(1:35)-1,"aaa")&"*",D4,))*1,0),)-1
 F5セルまでオートフィルコピー
こんな感じでどうでしょうか。これなら内容が変動しても対応するはずです。ただFIND関数は全角半角を区別するので 万全を期すなら C4:F4セルに入力規則の[ユーザー定義]で
「=EXACT(JIS(C4),C4)」を設定しておくと良いかもしれません。
最後に該当するゴミの日を表示するようにします。
ゴミ収集日チェック表3
数式は
■C7セル
 =TEXT(INT((DAY(F1)+6)/7),"[DBNum3]第0")&TEXT(F1,"aaaa")
■D7セル
 =IF(ISNA(MATCH(F1,C5:F5,)),"",INDEX(C3:F3,MATCH(F1,C5:F5,))&"の日です")
としてみました。C7の数式は「その2」の方法を使っています。D7セルは単純な検索系の関数にエラー処理を加えただけのものです。結局「次の収集日」欄を作成してしまえば あとは簡単です。
→参考ファイル(014.xls)
→少しだけ修正版(014b.xls)
ページの一番上へ
ChiquilinSite トップページへ  Copyright(C) Chiquilin_site. All Rights Reserved.
inserted by FC2 system