こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

WEEKDAY関数と条件付書式について

excel2010で家計簿を作成しているのですが、条件付書式がうまく設定できずこまっています。

A列に日付
B列に曜日(A列をそのまま引用して、表示設定aaaで曜日表示)
C列~U列 項目

という構成で、日曜日の行をA列~U列まで赤色に変えたいです。

条件付書式の設定を数式:=WEEKDAY($A3)=1にしたのですが
なぜか金曜日の行が赤くなります。

※1列目と2列目は項目行に使っていて、3列目からデータが入っています。

種類の因数を入力して($A3,1)=1にしてもだめでした。

ためしにV列に=WEEKDAY($A3)を入力したところ、これは正しく1~7が表示されます。

最悪、V列の数字を値で貼付けて=V3=1で設定することも考えたのですが
できればそんな余計な列は増やしたくありません。
どなたか原因と解決策を教えていただけるとありがたいです。

投稿日時 - 2013-08-24 22:02:02

QNo.8234209

困ってます

質問者が選んだベストアンサー

モノは試し、と言うことで、実験してみてください。


例えば・・
・既存の条件付き書式をすべて削除
・A3セルに「2013/8/25」←日曜日ですね。
・C3セルに条件付き書式「式が:=WEEKDAY($A3)=1」「書式:塗りつぶし(任意の色)」
 ※おそらく、ですが、色がつくはずです。
・A3セルを「2013/8/1」に変更
 ※木曜日ですから、色が消えるはずです。
・(色が消えるのを確認したら)A:C列を行方向にフィル
以上で、「金曜日に色が付かないこと」を確認しましょう。

このように、フォーカスがあるセルの行列を基にして、
条件付き書式を設定すると上手くできますね。

そこを確認できたら、条件付き書式を削除して、本題に入ります。



ココから先は、あなたが作っている実際のデータの上で
「A3セルに入力された“日付”が2013年8月1日である」
と言うことを前提にしています(いや、こんな前提は無くても良いんですが、念のため)。

上記前提に「あなたが行っている操作に関する推論」を重ねます。
条件付き書式を設定する範囲としてC1セルから、あるいはC:U列全体を選択していませんか?

その場合、「フォーカスはC1セルにある」はずですので、
ここに条件付き書式「式が:=WEEKDAY($A3)=1」「書式:塗りつぶし(任意の色)」を設定すると
C1セル(1行目)に対して「3行目を見なさい」という条件が設定されてしまうのです。
残りの範囲はいわゆる相対参照によって行だけが変わっていきます。

なので2行分ズレて、金曜日の行に塗りつぶしがかかる、という「設定ミス」が発生します。


対応策は
・前述の通りの方法で起点を決め打ちしてあとはコピー(フィル)する
・C3を起点に範囲を選択して条件付き書式を「式が:=WEEKDAY($A3)=1」で設定
・C1を起点に範囲設定して条件付き書式を「式が:=WEEKDAY($A1)=1」で設定
の3つが主に挙げられます。

要点をまとめて表すと、
「範囲を選択して条件付き書式の条件式を設定するときは、
 フォーカスを持つセルに対する条件式・書式を設定する」
ということですね。



なお、私はあなたの操作を見ていたわけではないので、
あくまでも推論として、参考までにお受け取りくださいませ。





追記)
> 1列目と2列目は項目行に使っていて、3列目からデータが入っています。
「1行目・2行目を項目行に。3行目からデータ」の間違いですね。
行・列の区別はしっかりつけておくと後が楽ですよ。

> 種類の因数を入力して($A3,1)=1にしても
これは「引数」ですね。
一般的に「ひきすう」と読みます。

投稿日時 - 2013-08-25 00:55:04

お礼

お礼が遅くなってしまって申し訳ありません。
回答のとおりにひとつすつ設定してみたところ、無事に日曜日の色が変わるようになりました!
また間違いの訂正もありがようございます。
思い込みは敵ですね・・・

投稿日時 - 2013-09-08 18:31:16

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

恐らくは皆さんのご回答のとおり、条件式中の行番号が違っているだけかな、という感じなのですが。

No.2 さんが説明してくださっているとおり、条件式を入力する際は、「選択しているセル範囲中のアクティブセルの行列番号」を基準として記述してあげることになっています。アクティブセルというのは、青色で表示されている選択範囲の中で、1 つだけ白色になっているセルですね。これの位置は、Enter や Tab キーで動かすこともできます。

さて、そのように正しく入力するのは何だか難しいという場合は、次の手順による設定も可能ですね。

1. どれか 1 行だけに対して、条件付き書式を設定。
2. その行をコピー。
3. 「形式を選択して貼り付け」で、書式のみを他の行にも貼り付け。ただしその際の貼り付け先には、コピー元の行も含める。
4. 条件付き書式の「ルールの管理」ダイアログを開き、「このワークシート」と指定して一覧を表示させ、コピー元の行に対して設定されている条件付き書式を削除。


>最悪、V列の数字を値で貼付けて=V3=1で設定することも考えたのですが
 できればそんな余計な列は増やしたくありません。

その作業は不要なので、大丈夫です。WEEKDAY 関数は、問題なく条件式に導入できます。曜日ごとに色を塗り分けるという設定は、たぶん世の中でたくさん行われていると思いますよ。

投稿日時 - 2013-08-25 11:34:05

お礼

御礼が遅くなってしまって申し訳ありません。
丁寧な説明をいただきありがとうございました!
weekdayを使うのが初めてで、もしかしたらすごくマイナーなやりかたなのかもと不安になりましたが、回答を拝見して安心しました。

投稿日時 - 2013-09-08 18:29:20

ANo.1

こんばんは!

A3セルから範囲指定を行わずにA~U列すべてを範囲指定して条件付き書式を設定してみてください。
その場合の条件付き書式の数式欄は
=WEEKDAY($A1)=1
とすればOKだと思います。

※ 余談ですが、仮に土曜日を色付けしたい場合は
=AND($A1<>"",WEEKDAY($A1)=7)
のように空白セルを除外してやる必要があります。
Excel的には 空白セル=0 とみなしますので、
0 はシリアル値「1」の一つ前と判断してしまい。
1=1900/1/1 は 日曜日 になりますので、
0=1900/1/0 となり「土曜日」と判断してしまうようです。

どうも長々と失礼しました。m(_ _)m

投稿日時 - 2013-08-24 22:23:54

お礼

お礼が遅くなってしまってすみませんでした。
回答をいただきありがとうございます!
余談部分、知らずにやっていたら、また泥沼にはまってしまうところでした。
土曜日の色付けを行うときに活用させていただきます。

投稿日時 - 2013-09-08 18:33:55

あなたにオススメの質問