• ベストアンサー

IF関数で検索範囲の表記の仕方?

   A       B     C             形式    数量  用途 1 AW-E-55    145  使用 2 SY-A-35    234    使用 3 SY-X-40    650    使用 4 CH-A-77    210    禁止 5 CH-B-50    300    禁止 6 CH-B-35    250    禁止 7 GS-P-40    450    使用 8 HJ-L-55    150    禁止 9 HJ-M-20    200    禁止 上記のような表があり、A列の値によってC列の用途をIF関数を用いて表示するにはどうすればよいのでしょうか?   A列の値でA1~A9の値がCH-○○以上CH-○○以下は禁止またHから始まる物は禁止というような条件でC列の用途表示区分を表示させる方法、論理式がよく分かりません。  子供の頃から算数が苦手で>,=,<>等の等号や不等式の理解が弱いので教えていただけないでしょうか?  どのような方法、論理式を入れると良いのでしょうか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

>A列の値でA1~A9の値が 1. CH-○○以上CH-○○以下は禁止 2. Hから始まる物は禁止 実際の禁止は、この二種類よりも多いのですか? そうすると、今の式ではもたないくなりますね。 C1:~ =IF(COUNT(FIND("CH-",A1))*(AND(--RIGHT(A1,2)>29,--RIGHT(A1,2)<81)),"禁止",IF(COUNT(SEARCH("H?-",A1)),"禁止","使用")) 1の設定部分: AND(--RIGHT(A1,2)>29,--RIGHT(A1,2)<81) 「30」以上「80」以下 ここを実際の値に設定してください。 そのカッコの中に入れれば出来ると思います。 2. Hから始るような、単純設定で、複数ある場合は、 {"H?-","U?-"} このように設定できるはずです。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

VLOOKUP関数は、FALSE型が質問に多いですが、本家(出生の始まり)はTRUE型のようです。 FALSE型では表が膨大になるとのことですね。であれば TRUE型で、表を作れば10行(数行で)以内ですむかもしれません。 TRUE型は普通は数値(封筒の重さグラム数とかの数)で段階を判別する(逆にいえば、表を構成する)のですが CH-A01 禁止 CH-B09 許可 CH-X20 禁止 のような表が作れないか、試しに考えてみてください。 第1列目の形式の記号数字は、文字列のソート昇り順にしないとなりません。予想では、無理かなとも思いますがそういうものもあるということで アドバイス。 例データ 表としてD1:E4に a NEAR c OK f No j OK A1:A10に A列   B列(関数式結果) a NEAR b NEAR c OK d OK e OK f No g No h No i No j OK B1に =VLOOKUP(A1,$D$1:$E$4,2,TRUE) と入れてB10まで式複写。結果上記B列。

回答No.3

> データーテーブル表が膨大な物になり、頻繁にコードが変更になる > ので都度、テーブルの修正が追い付かないもので 全部のコードを常時網羅するのが面倒くさいからルールで済ませ ちゃおうって、そういう時こそvlookup()関数ですが。 ヘルプでvlookup()関数の第4パラメータがTRUEの場合の使い方を読 んで下さい。この場合、表に CH-A-77 210 禁止 CH-B-51 300 使用 と書いておくと、CH-A-77以上CH-B-51未満を禁止にします。 H 150 禁止 I 400 使用 なら、Hで始まるヤツは全部禁止です。 簡単でしょ。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

複雑な条件はVLOOKUPなどを使用した方が解りやすいと思います。 「CH-○○以上CH-○○以下」は数字じゃないですし。 条件が例に挙げたものだけで、形式が固定長なら =IF(OR(LEFT(A2,1)="H",AND(LEFT(A2,2)="CH",VALUE(RIGHT(A2,2))>=35,VALUE(RIGHT(A2,2))<=77)),"禁止","使用")

1960ken
質問者

お礼

ご返答有難うございます。ご指摘のように数値でないアルファベットの並んだ商品表を取り扱っているもので、条件設定が分からず、困っています。  VLOOKUPでもできるのは知っていますが、データーテーブル表が膨大な物になり、頻繁にコードが変更になるので都度、テーブルの修正が追い付かないものでIF関数で表示させたいのです。  連絡いただいた数式を当てはめて作りたいと思います。有難うございました。

関連するQ&A