アプリ版:「スタンプのみでお礼する」機能のリリースについて

EXCELの書式設定に

・条件付き書式(数式を使用して書式設定)機能を使用したいのですが・・・・・・。

任意の2セルの左側のセルに下記設定を行い
100、0と各セルに入力しても指定した書式表示が実行されません。

設定記述:
="and(OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())), 0,0)>0,
OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())), 0, 1)=0)"

固有セルを指定しないのは、この書式を、同じ列の下位行にコピーして使いたいからです。

(セルに直接記述した書式は、相対セル記述した場合、コピーするとアドレスも変化しますが
 条件付き書式設定の中の数式記述はコピーしてもアドレスが変わりません)

EXCEL2007,EXCEL2010で確認しています。

尚、andで指定している各条件を単一で指定すると正しく動作します。

いろいろとネットで調べましたが、解決できず。

解決方法は他にもあると思います。

実現したい仕様:
隣接した2つのセルに対して
Aセルの右隣のセルBセルと仮定して
(1)Aの値>Bの値 の時 表示色=緑
(2)Aの値<Bの値 の時 表示色=黄
(3)Aの値>Bの値 且 Bの値=0 の時 表示色=赤

(1)は
(OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())), 0,0) >
OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())), 0, 1)

(2)は
(OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())), 0,0) <
OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())), 0, 1)

で実現できています。

アドバイスありましたらお願いいたします。

A 回答 (3件)

読んでいてワークシート関数式が不可解でなりませんでした


基本としてOFFSET構文とINDIRECT構文は 目的としては同じ動きをさせるもの
「自ら」を指定したい時は確かにありますが、その自らを指定する時の「自ら」に参照関数を指定し、
その関数中の「自ら」を指定するのに参照関数を…
………
……




際限ないですよね?
止めましょう

実際時折私もこのパラドクスに度々陥りますが
この「自ら」を
A1から見て何処、
とか
直ぐ左上のセルから見て、1,1の位置、
とかに 指定してやる様にしています。

あと、OFFSET構文の第4番目と第5番目の引数を省略するのはお勧めできません
関数式は一種のプログラムです。
ですから、基本に立ち返り 判読性も重視した方が良いですよ。

ところで各構文の基本的な使い方ですが、
=OFFSET($a$1,ROW()-1,column()-1,1,1)
=OFFSET($a$1,ROW()-1,column(),1,1)
A5にOFFSET構文を書くときは
=OFFSET(A4,1,0,1,1)
=OFFSET(A5,O,1,1,1)
(※注:$で固定されていない領域指定はフィルやコピーとともに相対的に書き換えられる
そのため領域A5に書かれた式でA5と指定されていた場合、
この指定は常に移動先の領域を示すものに、セルの移動・コピーと同時に書き換えられる。
ので、ROW()やCOLUMN()を意識して使う必要はない)
=INDIRECT("R"&ROW()&"C"&COLUMN(),FALSE)
=INDIRECT("R["&0&"]C["&1&"]",FALSE) (※注:これは相対参照の書き方)

なんてのが一般的では?

なので
緑 =AND(INDIRECT("R"&ROW()&"C"&COLUMN(),FALSE)>INDIRECT("R"&ROW()&"C"&COLUMN(),FALSE),INDIRECT("R"&ROW()&"C"&COLUMN(),FALSE)<>0)
赤 =AND(INDIRECT("R"&ROW()&"C"&COLUMN(),FALSE)>INDIRECT("R"&ROW()&"C"&COLUMN(),FALSE),INDIRECT("R"&ROW()&"C"&COLUMN(),FALSE)=0)
黄 =(INDIRECT("R"&ROW()&"C"&COLUMN(),FALSE)<INDIRECT("R"&ROW()&"C"&COLUMN(),FALSE))

または、
緑 =AND(INDIRECT("R["&0&"]C["&0&"]",FALSE)>INDIRECT("R["&0&"]C["&1&"]",FALSE),INDIRECT("R["&0&"]C["&1&"]",FALSE)<>0)
赤 =AND(INDIRECT("R["&0&"]C["&0&"]",FALSE)>INDIRECT("R["&0&"]C["&1&"]",FALSE),INDIRECT("R["&0&"]C["&1&"]",FALSE)=0)
黄 =(INDIRECT("R["&0&"]C["&0&"]",FALSE)<INDIRECT("R["&0&"]C["&1&"]",FALSE)

で良いのでは?

アクティブセルが仮にA5の領域指定したセルに条件書式指定する場合
=AND(OFFSET(A5,0,0,1,1)>OFFSET(A5,0,1,1,1),OFFSET(A5,0,1,1,1)<>0) …緑
=AND(OFFSET(A5,0,0,1,1)>OFFSET(A5,0,1,1,1),OFFSET(A5,0,1,1,1)=0)  …赤
=(OFFSET(A5,0,0,1,1)>OFFSET(A5,0,1,1,1))                  …黄

でも単純に
=AND(A5>B5.B5<>0) …緑
=AND(A5>B5.B5=0)  …赤
=A5<B5         …黄

と、他の方々が指定したこの方法の方がスマートですよ?

ところで範囲指定して条件書式を指定する場合ですが、
アクティブセルが何処にあるかを十二分に意識して式を書かないと
トンデモ!! な動作になり、心を折られそうになります。
お気を付けあそばせ。

お役に立てていたなら幸いです。

因みに条件書式では特例としてINDIRECT構文では
特別に他シートに書かれた領域も参照できたはず、お試しあれ。

他の描き方(A1的描き方やOFFSET構文など)では、
条件書式中の他シート参照は、確かエラーになりますよね?
ヘルプにも確か「他シートは参照できない」旨、書かれていたはず。

でも実は出来ちゃうんですよね
… 仕様変更されていなければですが …
    • good
    • 0
この回答へのお礼

ご返答ありがとうございました。
長々とお手数おかけしました。

お礼も遅れてすいません。

非常にいろいろと参考になりました。

今回はありがとうございました。

お礼日時:2013/05/02 13:03

c2セルを選択して[条件付書式]で、入力画面が出てきますから、セルの値ではなく式を選択して、


=AND(A2>B2,B2=0)
を書く。
そして書式を指定したら、
条件を追加を繰り返しすだけですが??
    • good
    • 0
この回答へのお礼

ご返答ありがとうございました。
ただ、コピーしてもセルのアドレスが変更されないので・・・。

お礼日時:2013/05/02 13:01

例えばC3セルにて、


条件1) =AND(A2>B2,B2=0)  赤
条件2) =A2>B2         緑
条件3) =A2<=B2         黄
厳しいほうを先に書く。$A$2としなければコピーできる--書式のみコピー

この回答への補足

優先条件を先に記述して「条件を満たす場合は中止」のチェックボックススにもチェックしています。 AND条件の数式一つだけの設定でも、期待の動作しません。 

数式指定条件に'AND'条件が指定できるか否か。
できるとしたら記述方法をご伝授頂けたらと思います。

今回は指定した書式のセルをVBプロシージャーでコピーしています。
設定した数式の対象セル記述を相対しても、コピー先では同じアドレスを参照していて、直接セルに数式を設定した時と
動作は異なります。

最悪はEXCELシートの書式設定ではなく、プログラムを記述して
書式をせってするしかないのか???
簡単にEXCELシートに設定した、「条件付書式」の設定で実現できるかが問題です。

引き続き、ご指摘お願いいたします。

補足日時:2013/04/05 09:50
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!