- ベストアンサー
エクセルの関数、セルの参照について
- エクセルの関数やセルの参照について質問です。土曜日と日曜日の数字の変動がない場合、見た目を考慮して空欄にしたいと思っていますが、どのような数式が最適でしょうか?また、セルの参照方法についてもお知りになりたいようです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
回答No.2です。 不明な点に関する情報を未だに補足頂けない様ですので、取り敢えずとの話として、 ●数字を表示しないのは土日だけであり、祝日や振替休日には平日と同様に数字を表示しなければならない ●初日が土日であるか否かには関わらず、D5セルには前月からの累計が必ず入力されている という条件の下で話を進めさせて頂きます。 数字が表示されないのは土日だけであり、火曜日~金曜日の場合は特に問題が無いのは無論の事、土日の日の場合もD列とE列に何も表示しないのですから、計算が問題になるのは月曜日だけであり、月曜日の場合にのみ3日前のデータを参照すれば良いという事になります。 尚、祝日にも数字が入力されるという条件なのですから、金曜日の日の所に数字が入力されていないという事を心配する必要は無い筈です。 そして、2日目か3日目が月曜日である場合には、1日目のデータを参照する様にすれば良い訳です。 ですから、E10セルに入力する関数の一例は次の様なものとなります。 =IF(AND(ISNUMBER($D10),ISNUMBER(INDEX($B:$B,ROW()-MOD(ROW()-ROW($A$3),5)))),IF(WEEKDAY(INDEX($B:$B,ROW()-MOD(ROW()-ROW($A$3),5)),2)>5,"",$D10-INDEX($D:$D,MAX(ROW()-5*(1+2*(WEEKDAY(INDEX($B:$B,ROW()-MOD(ROW()-ROW($A$3),5)))=2)),ROW($D$4)+MOD(ROW()-ROW($D$4),5)))),"") もし、E11セルやE12セルの値も、E10セルの場合と同様に、D列の同じ行にあるセルの値から前日の累計(但し、E11の参照先はE10の参照先の1つ下で、E12の参照先はE10の参照先の2つ下)を差し引いた値とする場合には、上記の関数をE10セルに入力してから、E10セルをコピーして、E11~E12の範囲に貼り付けて、その上で、E8~E12の範囲をまとめて範囲コピーして、E13~E157の範囲に貼り付けて下さい。
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 一案です。 A列・B列をすべてシリアル値としてみてはどうでしょうか? A1(結合セル)の表示形式はユーザー定義から 0年 としておいて、2013と数値のみを入力 同様にD1セルの表示形式もユーザー定義から 0月 としておき 11 のように数値のみを入力 A3~A7セルを結合し → セルの表示形式はユーザー定義から d としておき、 =IF(MONTH(DATE(A$1,D$1,ROW(A5)/5))=D$1,DATE(A$1,D$1,ROW(A5)/5),"") という数式を入れておきます。 B3~B7セルを結合 → セルの表示形式はユーザー定義から aaa としておき =IF(A3="","",A3) としてA3・B3セルを選択 → B3セルのフィルハンドルで31日分オートフィルで下へコピー! 次にE5セルを選択 → 条件付き書式 → 新しいルール → 「数式を使用して・・・」 → 数式欄に =AND(A3<>"",WEEKDAY(A3,2)>5) として → 書式 → フォントの「白」を選択しOK (ここでは条件好き書式だけ設定し、セルに数式は入力しません) D3~E7を範囲指定 → E7セルのフィルハンドルで下へ5行だけコピー! ここでE10セルに数式を入れます。 =D10-E5 と入れてOK 最後にD8~E12を範囲指定 → E12セルのフィルハンドルで最終行(31日)まで 5行ずつ下へコピー! これで数式もコピーされますし、条件付き書式で土日のフォントは白になり見えなくなると思います。 ※ その月の初日だけは手入力となります。 こんな感じではどうでしょうか?m(_ _)m
お礼
ありがとうございます
- kagakusuki
- ベストアンサー率51% (2610/5101)
確認したいのですが、 >そうすると、4日のE20はD20-D5になるので、数式のコピーではうまく行きません。 と書かれている所から考えて、4日の日は振替休日であるにもかかわらず数字を表示するという事だと思われます。 そうしますと、数字を表示しないのは土日だけであり、祝日や振替休日には数字を表示しなければならないという事なのでしょうか? それから、1日の日が土日の場合には、前日の日のデータを、一体どうやって知れば良いのでしょうか?
- mshr1962
- ベストアンサー率39% (7417/18945)
土日を白文字でいいなら =WEEKDAY(INDIRECT("B"&FLOOR(ROW()+2,5)-2),2)>5 でD3:D7はB3を参照、D8:D12はB8を参照します。 あとWEEKDAY(参照セル,2)にすれば土=6,日=7になるので、>5でまとめられます。
お礼
ありがとうございます
お礼
ありがとうございます