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

添付画像にあるE8に入力する関数について質問です。
条件は以下の通りです。

・住所(E2)に表A列の文字列が含まれている場合、表B列が表示される
・表以外の三重県の市の場合は三重県知事
・表以外の愛知県の市の場合は愛知県知事
・ただし、名張のみ【種別(E4)が△+数値(E6)が500以下】の場合表B列が表示され、名張でもそれに該当しないものは三重県知事
・愛知県一宮市も名張の条件と同様で該当しない場合は愛知県知事

この場合IFにVLOOKUPを入れて・・・と思ったのですが、上手く作る事が出来ず詰まってしまいました。
この場合どのような関数になるか教えてください。

「どの関数を使えばいいのか分からなくなって」の質問画像

質問者からの補足コメント

  • 大変失礼しました。
    △は文字列
    +は&
    です。なので、
    【種別(E4)が文字列△で数値(E6)が500以下】
    の場合となります。

      補足日時:2017/09/07 20:42
  • &=AND

      補足日時:2017/09/07 20:43

A 回答 (2件)

>【種別(E4)が△+数値(E6)が500以下】


が非常にあいまいです。△が数値なのか?
+がAND条件なのかOR条件なのか

とりあえず、△は文字列として、AND条件でのたたき台
表の2行目と3行目に追加(上の行ほど優先順位が低い)
=IF(AND(OR(D4<>"△",D6>500),OR(LEFT(D2,6)={"愛知県一宮市","三重県名張市"})),
LEFT(D2,3)&"知事",LOOKUP(99,MATCH(A2:A8&"*",D2,0),B2:B8))
「どの関数を使えばいいのか分からなくなって」の回答画像2
    • good
    • 0
この回答へのお礼

ご回答いただいきありがとうございます。
たたき台の通りで希望通りの結果を出すことができ、1つ1つなぜそうなるのかと紐解いているうちにお礼が遅くなり申し訳ありません。
色々調べてみたのですが、{}はどう言った意味があるのでしょうか?
そしてLOOKUPの検査値がなぜ99になるのでしょうか?

お礼日時:2017/09/09 16:31

E8だけで記述するのは無理があるので、下ごしらえをします。



1.B列とC列の間に2つ列を追加します。
2.新しいC列には種別+数値が500を超えるときに表示させる文字列を表示します。(津の場合、津市長、名張の場合、三重県知事)
3.7行目と8行目に、三重県、愛知県のみの場合の行を追加します。(A列「三重県」B列「三重県知事」C列「三重県知事」)
4.新しいD列に住所のどの部分にA列の文字が現れるかを調べる関数を入力します。
   =FIND(A2,$G$2) ーーー$G$2は住所欄

以上が下ごしらえ。以下仕上げです。

5.D列が1になるB列もしくはC列を表示したいということになります。B列だけでよいのであれば、
   =INDEX(B2:B8,MATCH(1,D2:D8,0),1)
     B2:B8 表示したい首長の名称
     D2:D8 文字列が見つかった場合1と表示される    
となります。
6.種別と数値による場合わけが必要なのでINDEX関数の一つ目の引数をIF関数で記述します。
   =INDEX(IF($G$4+$G$6<=500,B2:B8,C2:C8),MATCH(1,D2:D8,0),1)
     C2:C8 種別+数値が500を超えるときに表示したい首長の名称

※前提として住所が県名で始まることにしています。住所が県名で始まらないときは、D列のFINDの結果、見つかった場合必ず1を返すように工夫する必要があります。
    • good
    • 0
この回答へのお礼

ご回答いただきありがとうございました。
色々なアプローチの仕方があると大変勉強になりました。
なぜこうするのか、というところまで説明していただいたおかげで、別の作業に活用できそうです。
今回は私の説明不足が原因で、別の方の回答が希望の結果となったためベストアンサーはそちらの方にさせていただきましたが、また質問した際はご回答者いただけると嬉しいです。
ありがとうございました。

お礼日時:2017/09/09 15:20

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