• ベストアンサー

IF文についての質問

31歳の男です。 以前、似たような質問をさせて頂きましたが、表現が悪かったので 再質問させて頂きます。 宜しくお願いします。 ある関数を使って下記のようなモノを作成しようと思っています。(例) シート1→検索するシート E9→食べ物の名前(手入力) E10→どこで買うか(リストから選択) 以上が検索条件 以下が検索結果 E14→いくら(値段) シート2→元データが入っているシート 1行目   メロン 果物屋/スーパー 1500円  2行目   鮭    魚屋      200円 3行目   スイカ 果物屋      500円 この時、 E9→「メロン」を手入力 E10→「果物屋」をリストから選択 をして E14→「いくら」を出力しようとします。 この時の式はどのような関数を使えば良いでしょうか? ※果物屋/スーパーを選択したなら「真」  それ以外なら「偽」の式だと思うのですが  そこがよく分かっていませんので教えて下さい。 以上です。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

またメロンに戻りましたか(^^)。さっきの質問  http://oshiete1.goo.ne.jp/qa3801491.html にも回答しましたが、今回の質問内容と、先の質問内容は似ているようで意味が違いますよ。かえって混乱しなければよいのですが… 今回の例ではC列が数値で書式が「0"円"」になっているなら  =SUMPRODUCT((Sheet2!A1:A100=E9)*(ISNUMBER(FIND(E10,Sheet2!B1:B100)))*(C1:C100)) で「1500」が求められます。ただしこの式では メロン  果物屋/スーパー 1500円 メロン  果物屋      1800円 のように「メロン+果物屋」の条件を満たす行が複数あると両方の値を合算してしまいますので不都合です。また求める値が「文字列」のときは使えません。 もし求める結果が文字列だったり、最初に見つけた行だけを表示するだけでよいのであればこんな式になりますが、結構難しい式になりますよ。  =INDEX(Sheet2!C:C,MIN(INDEX(SUBSTITUTE((Sheet2!A1:A100=E9)*ISNUMBER(FIND(E10,Sheet2!B1:B100)),0,10^5)*ROW(Sheet2!A1:A100),))) ついでに先の質問の追記をしておくと、末尾に書いた式を以下のようにすれば○/×を結果として表示させることが可能です  =IF(SUMPRODUCT((Sheet2!$A1:$A100=E9)*(ISNUMBER(FIND(E10,Sheet2!$C1:$C100)))*(Sheet2!$E1:$E100=E11)*1)>0,"○","×")

tatuya24_2006
質問者

補足

回答ありがとうございます。 度々すみません、前回と変更がありまして 今回はメロンの件でお願いします。 出力したいものは全て「文字列」です。 ・リストには「果物屋」「魚屋」「スーパー」があります。 ・出力は下記のようにしたいです。   ・メロン(手入力)→果物屋(リストから選択)→1500円が出力   ・メロン(手入力)→スーパー(リストから選択)→1500円が出力 ※1レコードに「果物屋/スーパー」が登録されている為、単独で(果物屋orスーパーを)リスト選択した場合、結果が出力されません。 宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

回答No.5

#1です。#2さんありがとうございました。 ところで、配列数式を使っても同じことができますね。 下記の数式をセルに入力して、「Ctrl」+「Shift」を押しながら「Enter」です。 =INDEX(Sheet2!C:C,MATCH(E9,IF(ISNUMBER(FIND(E10,Sheet2!B1:B100)),Sheet2!A1:A100,""),0))

tatuya24_2006
質問者

お礼

回答ありがとうございました。 おかげで上手くいきました。 お知恵を下さいましてありがとうございました。 感謝致します。

全文を見る
すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

#02です >※1レコードに「果物屋/スーパー」が登録されている為、単独で(果物屋orスーパーを)リスト選択した場合、結果が出力されません。 失礼ですが、これは#02の式を実際に試した結果で書かれていますか? 「果物屋/スーパー」のように1つのセルに2つの条件があるためFIND関数でどちらがきてもよいようにしたつもりです。テストして「果物屋」「スーパー」どちらもOKだったのですが… まず「この質問に書かれている通りのシート」を作って試してみて、どんなデータで、どんな式をE14に入力し、どんな値をE9,E10に入れたら、どんな結果になったかを補足してください。 (いきなり元のUNIXコマンドの表に当てはめても動くはずはありませんよ。判定する列が違うのですから、式の修正が必要になります) #03さんの補足回答にもなりますが、類似式の解説はこちらにも書きましたので参考にしてください。 http://oshiete1.goo.ne.jp/qa3796268.html

tatuya24_2006
質問者

お礼

回答ありがとうございました。 上手く結果が出力することができ とりあえず完成しました。 丁寧にご説明下さいましてありがとうございました。 感謝致します。

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

シート2の品名・店名のリストには重複はないものと思っておりましたが、もし重複が許されていて検索条件に一致した行の金額を合算して表示したいのであれば、#2の方が書かれた下記関数で実現できますね。 =SUMPRODUCT((Sheet2!A1:A100=E9)*(ISNUMBER(FIND(E10,Sheet2!B1:B100)))*(C1:C100)) さて、シート2に重複データはないとして、やはり#2の方がステキな関数を書いてくださっていますので、私の追記はひとまずやめます。私の書いた「方法1」「方法2」いずれの結果も、#2の方が書かれた下記の関数と同じになりますので。 =INDEX(Sheet2!C:C,MIN(INDEX(SUBSTITUTE((Sheet2!A1:A100=E9)*ISNUMBER(FIND(E10,Sheet2!B1:B100)),0,10^5)*ROW(Sheet2!A1:A100),))) 便乗で申し訳ないんですが、#2の方、上記2つ目の関数を解説してもらえると嬉しいです。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

二つ方法を思いつきました。 1.シート2に検索キー列を作って、MATCH関数とINDEX関数を組み合わせて検索関数を作る 2.シート2にタイトル行を挿入して、DGET関数を使う(ただし、DGET関数は、検索式を表で指定する必要があるみたいなので、シート1の検索キーワードの入力欄をタイトル付きの表にしないとだめです) お好みの方法があれば、詳しく追記します。

tatuya24_2006
質問者

補足

早速の回答ありがとうございます。 当方あまり知識がないのでよく分かっておりません まずは「1」の方法を詳しく教えて頂けないでしょうか? 宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel2003 IF関数について

    お世話様になります。質問をさせて下さい。 Excel2003を使用しており、IF関数にて下記の点を求めたいのですがご指導願います。 ------------------------------------------------      行A       行B     【リスト】   【ポイント】 (A1) トマト     (B1)  1 (A2) さくらんぼ  (B2)  2 (A3) キャベツ   (B3)  1 ------------------------------------------------ シート1に、上記のような【リスト】・【ポイント】という名前を指定した表を作ってあります。 シート2のセルA2に、トマトorキャベツと入力した場合は「1」ポイント、それ以外は「2」を自動的に表示させたいのですが、 まだ何も入力をしていないセルにも下記のような式をいれておくとすべて「1」が表示されてしまいます。 =IF(OR(A2=リスト!$A$1,A2=リスト!$A$3,),1,2) そもそもこのような式ではなく、A1・A3の場合は「1」で、A2の場合は「2」と指定すればよいのでしょうか? よろしくお願いいたします。

  • エクセル 他シートに特定項目のみ自動入力する方法

    質問 エクセルで、次のように設定することが、関数またはマクロでできませんでしょうか。どうか知恵をお貸しください。 Sheet1(購入一覧)  果物  単価(円)  個数  購入金額(円) みかん    100     2  200 りんご    200 3 600 Sheet2(みかん)  Sheet1の「果物」列で「みかん」と入力すると、「みかん」行全体(「果物」列~「購入金額(円)」列まで)が自動入力される。  一方、Sheet1で「果物」列に他の果物(りんごなど)を入力しても、Sheet2に自動入力されない。 Sheet3(りんご)  Sheet1の「果物」列に「りんご」と入力すると、「りんご」行全体(「果物」列~「購入金額(円)」列まで)が自動入力される。  一方、Sheet1で「果物」列に他の果物(みかんなど)を入力しても、Sheet3に自動入力されない。

  • エクセルのIF文の質問

    お世話になります。 エクセルの条件分岐で、 ・値が0、もしくは空白のときは空白を表示、違ったら値を参照 ・一つ上の行と次の行の値が同じなら空白を表示、違ったら値を参照 という二つのIFを組み合わしたいのですが、どうにもうまくいきません。   A|B|C| 1|あ|い| | 2|あ|0 |う| 3| |0 |う| 例えばこんなデータなら、シート2にその結果を表示させたとして   A|B|C| 1|あ|い| | 2| | |う| 3| | | | こんな感じにしたいのです。 現在、 ・1行目に、空白か0なら空白を表示させる式を入力し IF(OR(A1="",A1=0),"",A1) ・2~データの終わりの行に、上と同じなら空白を表示させる式を入力しています。 IF(A1=A2,"",A2) でもこれをするとなぜかうまくいきません。 A2の値が空白だった時に0が表示してしまいます。 それに、自分の作った計算式もなんかスマートじゃない気がしてなりません。 もっと良い方法はないでしょうか?

  • 入力規則-リスト選択で,リストの頭の行から表示させたいのに。

    1シート目に入力規則-リスト選択したいセルがあり, 2シート目にあるデータから選択するため,名前-定義で「行」に名前をつけて,範囲設定した。 ↓ 入力規則設定では空白を無視にチェックしてみたのですが・・・ 1シート目でプルダウン?(▼)で選択しようとすると,窓には2シート目リストの入力のない行(空欄)がデフォルトとして表示されてしまいます。 ↓ リストの先頭行から表示されるようにするにはどうしたら良いでしょうか?そのような技がありましたら教えて下さい。 (「行」を範囲選択するのがマズイでしょうか?行が増えても1シート目の範囲を設定し直さなくて良いかな,と思って行を範囲設定してみました。) ちなみに,Offset関数(?)は全くわかりません。

  • (マクロ)プルダウンの選択と抽出について

    31歳の男です。 会社でマクロの作成を依頼されましたが、素人なのでチンプンカンプンです。 分かりづらい説明ですが、下記のようなマクロ文が出来れば ありがたいと思っています。 お知恵を貸してください。 よろしくお願いします。 「概要」 ・条件に「好きな果物」・「どこで手に入れたか」・「どうしたか」を入力すると、  実行結果として、「自分はどう思ったか」・「他人はどう思ったか」を実行結果として  表示させるマクロを作る。 (シート1について)  ・条件を指定して実行結果をマクロで表示させるシート セルD4→任意の果物の名前を入力する(例 メロン) セルD5→任意の果物をどこで手に入れるかプルダウンより選択する(例 冷蔵庫) セルD6→任意の果物をどうするかプルダウンより選択する(例 自分で食べる) 以上が条件指定 以下が実行結果 セルD8→自分はどう思ったか(例 うれしい) セルD9→他人はどう思ったか(例 うらやましい) (シート2について) ・シート1のプルダウンで選択するもの(シート1のセルD4~D6)と実行結果は  全てシート2に記載済みです。 A列→メロン・スイカ・バナナ・リンゴ.etc(=シート1のセルD4に該当)→50種類 B列→冷蔵庫・冷凍庫・棚(=シート1のセルD5に該当)→3種類 C列→自分で食べる・人にあげる・棄てる(=シート1のセルD6に該当)→3種類 D列→うれしい・かなしい・うらやましい(=シート1のセルD8に該当)→3種類 E列→うれしい・かなしい・うらやましい(=シート1のセルD9に該当)→3種類 このように果物毎にデータが1行づつあります。 (メロンの例) メロン・冷蔵庫・自分で食べる・うれしい・うらやましい といった具合にデフォルトで固定されています。 以上です。

  • 関数について教えて下さい(再質問)

    過去に下記の質問をさせて頂きました。 「概要」 ・UNIXのコマンド調査で、コマンドを過去に打ったことがあるかどうかを検索して、   ある→今後も打てる   ない→今後も打てない といった具合に結果を出力させる関数を作成する。   (シート1)→条件指定のシート ・過去に打った実績があるかどうかを(3つの条件から)検索して、結果を出力するシート    セルE9→任意のコマンドを(直接)入力→例.df セルE10→どのサーバで打つか(リスト)から選択→例.STサーバ セルE11→目的は何か(リスト)から選択→例.ディスク使用状態の確認  以上が条件指定 以下が検索結果(シート2の情報から出力する) セルE14→コマンド(df)を打った結果→例.プロンプトが戻る セルE15→コマンド(df)の意味→例.ディスク使用状態の表示 セルE16→コマンド(df)を打ったことにより監視装置にエラーメッセージが出力するか→例.出力されない セルE17→コマンド(df)が運用に影響があるか→例.なし セルD18→コマンド(df)が実際に打てるか(例 ○)→ココが本来の主旨    ・まとめるとシート1の表は下記のようになります。       D列                          E列             9行目  コマンドを入力して下さい       df(直接入力) 10行目  場所は?                 STサーバ       11行目  目的は?                  ドライブの使用状況確認      ・ 14行目  どうなる(出力)              プロンプトが戻る 15行目  何の情報                ディスク使用状態の表示 16行目  アラームが出力される         出力されない 17行目  運用に影響がある              なし 18行目  打てる、打てない             ○   (シート2) ・「過去に打ったコマンド名=A列」・「打てる、打てない=C列」・「運用に影響がある=D列」・「場所=F列」・「目的=G列」・「何の情報=H列」・「アラームが出力される=I列」・「どうなる(出力)=J列」の情報が保存されている   DBみたいなモノ →下記の表のように管理しています。(他の列は必要ないので省略します。)      A列    C列    D列   F列           G列                  H列                 I列            J列 7行目   df     ○    なし  STサーバ      ディスク使用状態の確認    ディスク使用状態の表示     出力されない    プロンプトが戻る ・ 88行目 ・1コマンドにつき列ごとに整理されています。  A列7~88行目→打ったコマンドの一覧→88種類(これからも増えます) C列7~88行目→任意のコマンドが実際の環境で打てるか→約2種類(○or×) D列7~88行目→任意のコマンドが運用に影響があるか→約2種類(ありorなし)の2種類 F列7~88行目→コマンドの打った場所のサーバ名→約20種類(こらからも増えます) G列7~88行目→コマンドの打った目的→88種類(これからも増えます) H列7~88行目→何の情報→88種類(これからも増えます) I列7~88行目→コマンドを打った際のアラームの出力→2種類(ありorなし) J列7~88行目→コマンドを打ったらどうなるか →その結果下記の回答を頂きまして、大分完成に近づいてきました。    [Sheet1] F9セルに検索条件を指定するセル関数を入力します =$E$9 & "/" & $E$10 & "/" & $E$11 F10セルに検索結果の該当行を返すセル関数を入力します =MATCH(F9,Sheet2!K7:K88,0) E14~E18結果を表示します =INDEX(Sheet2!$A$7:$J$11,$F$10,@@) ※@@は返したい列を指定してください [Sheet2] k列に検索キーを生成するセル関数を入力します K7セルに検索キーを生成するセル関数を入力します =A7 & "/" & D7 & "/" & E7 K8~K88までK7のセルをコピーします  →(sheet2で)1つのコマンド(df)に対して複数のサーバ名が入力してあるレコード(1行)があります。 A列    C列    D列   F列           G列                  H列                 I列            J列 7行目   df     ○    なし  STサーバ/DBサーバ      ディスク使用状態の確認    ディスク使用状態の表示     出力されない    プロンプトが戻る 「df」で検索しサーバ名が「STサーバ」/「DBサーバ」なら「真」  それ以外の場合、「偽」となる式を教えて下さい。

  • エクセル if文を乱用したら・・・

    教えてください タイトルどおりエクセルのif文をひとつのセル内で ifを15回ぐらい繰り返したところ(=if~、if~、if~、・・・・) 入力時のレスポンスがとても遅くなってしまいました。 内容としては 1を入力するとりんご 2を入力するとみかん・・・・など単純な物が15行ぐらい続くもので、 リストは別なシートにあります。 対処法などありましたら教えてください よろしくお願いします。

  • IFとVLOOKUP関数

    VLOOKUP関数を使って検索結果を出そうと思いましたが、 データ量が93000行X8列になりますので、 共通分けして複数のシート(A、B、C、D)に分けました。 あるセルに『A』と入れると『シートA』の表から検索を行う、 あるセルに『B』と入れると『シートB』の表から検索するといった感じにするには、 IFとVLOOKUPを使用するなら、どのような式を入れたらいいのでしょうか? また、他の関数を使う式があるのでしょうか? マクロやVBAも考えましたが、 あまり知識がありません。 データ量から考えると マクロやVBAで行った方がいいのでしょうか?

  • エクセルの関数のコピー

    エクセルの関数を下のセルにコピーをすると、1つずつ関数の式がずれてくるのですが同じ範囲の関数を同じ様に入力したい場合はどうすればいいですか? 例)=VLOOKUP(F3,Sheet2!A1:E5000,2,0) という関数があったとすると 次の行には=VLOOKUP(F4,Sheet2!A1:E5000,2,0) と検索値のみが1つ変わる感じにしたいのですが・・・ コピーでは無理なのでしょうか。やはり1つ1つ数式を入れてやらないとだめでしょうか。

  • ドロップダウンリストを二つ作る

         A     B 1  果物    りんご 2  野菜   トマト という表があったとします。 A に リストで果物か野菜を選択できるような式を入れ 果物を選択すると、Bはりんごかみかんを選択できるような式を入れたいです。 正し、上記の表は、シート1 選択するためのリストの一覧はシート2に表示させるものとします。 いろいろ調べましたがどうやってもできませんでした。 やり方教えてください。 エクセル2010使用です。

住所録が開けない
このQ&Aのポイント
  • 筆まめver23を使用して保存済み住所録を開こうとするとソフトが終了する
  • 新規住所録作成を選んでも同じ問題が起こる
  • ソースネクスト株式会社の製品・サービスに関する質問
回答を見る

専門家に質問してみよう