• 締切済み

複数の条件を指定する関数について教えてください

お世話になります。 ウンドウズ7 エクセル2007を利用しています。 フォーム(添付)へシート1とシート2からVLOOKUP関数を使って月 毎の実績をまとめる表を作成しています。 シート1、シート2は、月で合算された、取引先毎の1品番のデータになります。 E・J・O列で困っています。 未来の月のセルは0として表示しておきたいので 対比させる本年の実績が検索出来るようになったら前年も実績も 表示させたいので、 C・H・M列には、=VLOOKUP($A4,シート1!$A:$AW,3(4・5),0)) E・J・O列には、=IF(C(H・M)4=0,0,VLOOKUP($A4,シート2!$A:$AW,3(4.・5),0)) という式を考えてみました。 精査してみると本年の実績が無い時もあるので、この式だと、前年の実績が あったにもかかわらず、必要な数字を検索してこないところがありました。 何か、もう一つ条件を追加すればいいのだとは思うのですが、 何を追加すればいいのか全く、検討がつかず行きづまってしまいました。 分かりやすく説明できなくて申し訳ございません。 簡単な質問かもしれませんが、 どなたか、ご教示お願いいたします。

みんなの回答

  • nonamochi
  • ベストアンサー率62% (228/365)
回答No.1

おはようございます 現在の式ではC, H, M が0の場合を判断の条件として処理をしてますが、逆にC, H, M が0で無い場合を判断の条件とした方がすっきりするのではないでしょうか(それでもかなり複雑になりますが)。 つまり、 1. C, H, M が0でない場合はシート2からデータを読み込む(1つ目のIF文) 2. C, H, M が0の場合は、シート2のデータの状態を判断して、0で無い場合はデータを読み込む(2つ目のIF文) 3. これ以外の時は0を入れる 関数が複雑になる様であれば、VBAでプログラム化すればすっきりします。

関連するQ&A

  • 複数条件を満たすVLOOKUP関数

    Excel独習者です。 次の3つのシートがあります。 「入力窓口」「M1組」「M2組」「M3組」 シート「M1組」「M2組」「M3組」には各クラスの生徒の出席番号(B列)と氏名(C列)が名票としてあります。 シート「入力窓口」のcells(C,6)にクラス名を入力します。 シート「入力窓口」のcells(H,7)に出席番号を入力するとcells(I,7)に該当クラスの該当番号の氏名が 表示されるようにcells(I,7)に次の式を入力しましたがエラー表示でうまくいきません。 =IF(H7="","",IF(C6="M11",VLOOKUP(H7,'M11'!$B$4:$C$11,2,IF(C6="M12",VLOOKUP(H7,'M12'!$B$4:$C$11,2, IF(C6="M13",VLOOKUP(H7,'M13'!$B$4:$C$11,2,))))))) どのような式を入力すべきかご助言いただけたら幸いです。 なお、OSはVISTA、Excelは2007です。 よろしくお願いいたします。

  • 複数条件での値参照をする関数

    Excel2007を使っています。 以下のような表があります。 店番  月度  個数 111     4    1 111     5    0 113     4    0 112     4    1 113     5    2 別のシートに以下の表があります。 店番  4月個数  5月個数 111 112 113 この4月個数の列と、5月個数の列に関数で値を参照させたいと思います。 店番をA1セルとすると、B2セルには店番が111の4月の個数を表示させたいです。 B2に =IF(ISERROR(VLOOKUP(A2,元!A:B,2,0)),"",IF(VLOOKUP(A2,元!A:C,2,0)<>4,"",VLOOKUP(A2,元!A:C,3,0))) C2に =IF(ISERROR(VLOOKUP(A1,元!A:B,2,0)),"",IF(VLOOKUP(A1,元!A:C,2,0)<>5,"",VLOOKUP(A1,元!A:C,3,0))) このような式を入れると、4月か5月どちらか上に書いた方しかデータが表示されませんでした。 更新ボタンやトリガーを使わずにできるといいので、ピボットやVBAではなく関数でやりたいと思っているのですが、どのようにすれば良いか分かりません。 使える関数があれば、ぜひ教えて下さい。

  • マクロ 複数のVLOOKUP関数をまとめる

    1.シート1のH1・I1・J1に項目名を入力 H1「テスト1」・I1「テスト1(正式)」・J1「テスト2」 2.それぞれに他シートから引用の計算式を入力し、3列まとめてオートフィルで最下行までコピーする H2【=VLOOKUP($F2,シート2!$C:$M,5,0)】 I2【=VLOOKUP($F2,シート2!$C:$M,6,0)】 J2【=VLOOKUP($F2,シート2!$C:$M,11,0)】 以上のマクロの記述方法を教えてくださいますか? 宜しくお願いします。

  • VLOOK関数で#N/Aエラーの回避法

    お伺いします。 sheet1のA列に商品コード、B列に前月実績があるとします。 sheet2に10月実績表があるとします。 sheet1のB1セルに =VLOOKUP(A1,sheet2!$A$3:$H$1200,5,0) が入力されています。 10月に実績がゼロの時はsheet2の表にはその商品コードの行がない。 これを前提にするとsheet1のB1セルには#N/Aが表示されてしまいます。 すると合計ができません。#N/A を空白または実績なしと表示したいのです。 また、合計値を正確に出したいのです。 どうか、お知恵をお貸しください。

  • vlookup関数の挙動について

    エクセルシートzzzに以下のデータがあります。 全部で140行あります。 A列  B列 ・ ・ ・ 5/31 1000 5/31 1000 5/31 1000 収入 10000 支出 2000 あるシートで =VLOOKUP("収入",'zzz'!A1:H300,1)とすれば 当然、「収入」という文字列が戻ってきます。 また、 =VLOOKUP("5/31",'zzz'!A1:H300,1)とすれば 当然、「5/31」という文字列が戻ってきます。 ところが、 =VLOOKUP("支出",'zzz'!A1:H300,1)とすると なぜか、「支出」ではなく、「5/31」が戻ってきます。 しかし、H300をH500にすると、つまり =VLOOKUP("支出",'zzz'!A1:H500,1)とすると データは140行しかないにかかわらず なぜかきちんと「支出」が戻ってきます。 ちなみにA列の書式はすべて文字列です。 何か考えられる原因がありましたら 教えていただけないでしょうか。 zzzシートで直接、=VLOOKUP("支出",A1:H300,1)としても 同様に5/31という値が返ってきます。 A1:H300とA1:H500の差の200行には何もデータは入っておりません。 動作環境はXP SP2 Excel2000です。

  • excelの複数の条件が一致したカウントの関数

    excelのファイル内に、 「商品登録」、「販売実績」の2つのシートがあります。 「商品登録」シートのA列に商品コードが大量にあり、B列にサブ商品コードがあります。 「販売実績」シートのA列にも「商品登録」シートと同じ商品コードの羅列があります。 (販売実績データなので、同じ商品コードが複数あったりします。) 「商品登録」シートのA列と「販売実績」のシートのA列を比較し、 商品コードが一致した場合で、かつ、「商品実績」B列のサブ商品コードの指定した値が入ったセルの 数を数える関数を「商品登録データ」シートのC列に表示したい。 この関数設定方法はお分かりになりますでしょうか? 分かり辛くて申し訳ございません。 必要情報あれば加筆いたします。 どうぞよろしくお願いいたします。

  • VLOOKUP関数をIFで条件付けしたのですが。。

    シートが2枚あり1枚は名簿シートです。 別シートのセルA1に名簿シートのコード番号を入力し セルA2にVLOOKUP関数で式を下記のように入れています。 =VLOOKUP(A1,名簿!N:P,3,FALSE) このとき値がブランクになるときがあるので そのときは隣の列から数値を拾い出したいのです。 そこで =VLOOKUP(A1,名簿!N:Q,4,FALSE) だと思うのですがですが、自分でIFで式を組んだら =IF(VLOOKUP(A1,名簿!N:P,3,FALSE)="",VLOOKUP(A1,名簿!N:Q,4,FALSE),VLOOKUP(A1,名簿!N:P,3,FALSE)) となりました。 一応、希望通りの答えが返されるのですが、 もっと簡潔な組み方はあるのでしょうか?? IFでなくても何か方法があるのでしょうか?? よろしくご教授お願いします。

  • 複数条件でVLOOKUPのような事はできませんか?

    複数条件でVLOOKUPのような事はできませんか? 例えば <シート1> コード 名前 部屋 間取り 1  あああ 101 1LDK 1  あああ 203 2LDK 1  あああ 105 1LDK 2  たたた 201 1R 2  たたた 202 1DK 3  さささ 303 2DK ※シート1は、コード列の昇順に並んでいます <シート2> コード 部屋 間取り  3  303 1  203 2  202 2  201 ----------- シート2の間取り列に、 シート2:コード & シート2:部屋と一致するものをシート1から探し出し、シート1:間取りの情報を表示したいのです。 補足。 (1)シート1に該当するコード、間取りがない場合が稀にあります。その場合はブランクを出したいです。 (2)シート1、シート2の内容は追加されて行くので範囲を選択する事が出来ません。 その為、名前を取得する時はVLOOKUP関数を使用しているのですが、 VLOOKUP(A7,Sheet1!$A:$B,2,0) (IFとISERROR関数でエラー回避してます)。 このように、範囲を列ごと指定してます。 (3)のデータ件数が5000件くらいあります。 VLOOKUPに拘っているわけでは無いので なにか関数で、対応できる方法があったら教えて下さい。 わかり難くてすみません。 非情に困っています。どうぞよろしくお願いします。

  • VLOOKUP関数の範囲をセルで指定したいと思っています。

    VLOOKUP関数の範囲をセルで指定したいと思っています。 B1:参照シート名(VLOOKUP関数で使用する範囲があるシート) C2:範囲の開始位置 E2:範囲の終了位置 B3:G3:列番号(B3の値は、B6:B8の範囲で使用する列番号、 D3の値は、D6:D8の範囲で使用する列番号) これらのセルに入力された情報をもとにB6:G8の範囲にVLOOKUP関数を 反映させたいと思っています。 例えば、 B1に参照シート名「2ケタ」 C2にVLOOKUP関数の範囲の開始位置「A5」 E2にVLOOKUP関数の範囲の終了位置「G7」 B3に範囲の列番号「2」がある場合 B6に「=VLOOKUP(A6,'2ケタ'!A5:G7,2,0)の関数を入力。 B2に参照シート名「3ケタ」 C5にVLOOKUP関数の範囲の開始位置「B5」 E2にVLOOKUP関数の範囲の終了位置「H7」 C3に範囲の列番号「3」がある場合 C6に「=VLOOKUP(A6,'3ケタ'!B5:H7,3,0)の関数を入力。 といった感じです。 現在、B6に「=VLOOKUP($A6,INDIRECT($B$1&"!a5:g7"),INDIRECT("$b$3"),0)」と 関数を入力して、VLOOKUP関数の「範囲の参照シート名」と「列番号」の情報は セルから持ってくることができました。 しかし、「a5:g7」という範囲だけは、INDIRECT関数をうまく入れることができません。 どのように関数を入力したら、上手くいくのか、教えていただけないでしょうか。

  • オートフィルター複数条件含む検索の関数化

    例えばA列に住所が入力されているときに、「中野区」という文字列があればB列に「○」を、そうでない場合に「-」をB列に表示させたいとします。B1に「=IF(COUNTIF(A1,"*中野区*"),"○","-")」とすればよいのですが、今回は検索条件が複数で(or検索)、かつ検索条件に追加がありうるので、できれば、別につくった検索語の表(仮にSheet2!A1:A5)をもちいたあいまい検索をしたいのですが、どのようにするのが適切でしょうか。 オートフィルターのオプションをつかえば、抽出できましたが、検索語の追加や住所録原簿の修正がありえ、かつ件数が多いので、できれば関数でやりたいとおもっています。 過去記事を検索して類似のもの、とくにVlookupで含む検索を行う方法等を試しましたが、うまくいきませんでした。 詳しい方に、ご教示願えましたら幸いです。どうぞ宜しくお願いいたします。

専門家に質問してみよう