- ベストアンサー
IF関数について
IF関数について A列のセルに住所が入力されていて、「中野区」という文字列が含まれているときに「○」そうでない場合は「-」をB列セルに表示させる方法で B列セルに、 =IF(COUNTIF(A1,"*中野区*"),"○","-") を入力すれば良いことがわかりました。 この条件に加えて、A列のセルが空白の場合上の行を参照するという条件を加えたいと思います。 例A3のセルが空白の場合A2を参照しB3に表示させる。 因みに、A2も空白の場合A1を参照する。 って感じにしたいです。 宜しく御願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
B1セルに次の数式を入力した後、B1セルをコピーして、B2以下に貼り付けると良いと思います。 =IF(ROWS($1:1)>COUNTIF($A:$A,"><"),"",IF(SUMPRODUCT(ISNUMBER(FIND("中野区",OFFSET($A$1,,,MATCH("(有)(株)",$A:$A))))*(COUNTIF(OFFSET($A$1,,,ROW(OFFSET($A$1,,,MATCH("(有)(株)",$A:$A)))),"><")=ROWS($1:1))),"○","―"))
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
こういう質問をするということは、エクセルの関数の経験が少なく、関数の特徴を捉えられていない証しです。 初心者は、別列に、空白の場合は直前列の値をセットするデータ列を作り、その列で式を組み立てること。 続いたデータが目障りなら条件付書式で、上と同じ値なら文字を白色にするなどがエクセルを使う限りの便法かなと思う。 エクセルは具体的なルールがあっても、そのルールを実現化したデータ列をつくらないと、関数式は使にくいと心得ること。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
「上の行と同じだから空白」ってのは、データとしては最悪の設計 です。それだと目的の行を取り出した時に、住所が存在しないじゃ ないですか。ちゃんと全部住所を記入した上で、「上の行と同じ だったら文字色を背景と同じにする」条件書式を設定するのが安全 ですよ。 ちなみにB3から見てA3が空だったらA2を見て、そこも空だったらA1 を見て、のように遡って最初に見つかった空じゃない行を見つける 式は、if関数では書けません。「1行目から自分の行までの中で、空 じゃないという論理値と行番号をかけ算した配列の最大値の行番号 の要素を返せ」という意味の =index($A$1:$A3,max(index(not(isblank($A$1:$A3))*row($A$1:$A3),0))) と言う風に書きます。これをあなたの式のA1の代わりに書けば、当 座はしのげるでしょう。
A1からA80まで住所データがあるとします。 =IF(A1="",INDEX($A$1:$A$80,ROW(A1)-1),IF(COUNTIF(A1,"*中野区*"),"○","-")) 80行以上ある場合は$A$80の数値を上げてください。 これでいかがでしょうか? 空白が2行続く場合のことは今回質問文にはありませんでしたので割愛させていただきます。