• ベストアンサー

条件によって答えを導き出したい

入力出されたデータによって答えを求めたい。 IF関数を使って記述しましたが、求める答えが31パターン有り1回のIF関数の制限を越えているようで処理できません。なにかよい方法があればご教示くださいませ。

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

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

>EXCELです。 よろしくお願いいたします。 >IF関数を使って記述しましたが、求める答えが31パターン エクセル関数を使うということは、「値を求めている」ということです。関数は「値を出す(返す)」、それしか出来ません。 それにふさわしいのが、VBAによるFunctionProcedureといわれるもので、私製関数をVBAで作れるのです。だから 「EXCELです。 よろしくお願いいたします」は的外れで、このユーザー関数も「エクセルです」から。 例えば標準モジュール(ツール-マクロ-VBE-挿入- 標準モジュール)に Function kansu(a) Select Case a Case 1 kansu = "one" Case 2 kansu = "two" End Select End Function (本当は Case 31 kansu="thirty-one" まで書きたいが、しつこいので略す。) を作り、 B4セルに=kansu(A4) と入れると、twoがB4セルに入ります。 Select Case文は Case Is >=100などの使い方も出来ます。 これが、#2で 「VBならSWITCH関数かSELECT CASE文で作成」と書いておられる意味なのです。

tolucky
質問者

お礼

ありがとうございます。 具体的な記述方法までお教えいただき、感謝です。 トライしてみます。

その他の回答 (3)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

パターンと結果の対応表を作成してやれば =VLOOKUP(検索値,対応表,表示する列位置,検索方法)で表示できます。 パターンを作成する必要がありますが、どのような内容でしょうか? 例ですが 0<=X<100,100<X<200....の様な場合は 000 A 100 B 200 C で上記の式の検索方法をTRUEにします。 (この場合は昇順にて並べ替えが必要です。) 0<=X<100の場合、Aが表示します。 特定の文字の場合は A 100 B 200 C 300 で上記の式の検索方法をFALSEにします。 該当する場合は結果を、しない場合は、#N/Aを返します。 複数の条件の組合せの場合はお知らせください。 検索値を数式にすることである程度対応できます。

tolucky
質問者

お礼

具体的なご指示ありがとうございます。 ここまで教えていただけば、できそうな予感がします。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

VBならSWITCH関数かSELECT CASE文で作成 エクセルの関数なら別途対応表を作って VLOOKUP,HLOOKUP等の検索関数を利用する。

tolucky
質問者

お礼

早速の回答ありがとうございます。 試してみます。

tolucky
質問者

補足

EXCELです。 よろしくお願いいたします。

  • S-Fuji
  • ベストアンサー率36% (592/1624)
回答No.1

 何の事でしょうか?。 プログラム言語は?。

関連するQ&A