IFとVlookUPの合わせ技

このQ&Aのポイント
  • VlookUpを使い検索して一致するものがあった場合は、真を、一致しなければ偽の数式による結果をセルに反映させたいと考え、以下のような式を作ったのですが、エラーをはきます。
  • この式はIF A列の指定範囲内に今日と同じ日がある場合は、B列の指定範囲の合計を、その週の始まりからその日までの日数で割った値をセルに反映させます。一致する日がない場合は、B列の指定範囲の平均値をセルに反映させます。
  • 結局、今日以降の数字を0ではなくnullにすることでエラーを解決しましたが、エラーの原因について教えてください。
回答を見る
  • ベストアンサー

IFとVlookUPの合わせ技

VlookUpを使い検索して一致するものがあった場合は、真を、一致しなければ偽の数式による結果をセルに反映させたいと考え、以下のような式を作ったのですが、エラーをはきます。 この式は IF A列の指定範囲内に今日と同じ日がある TRUE B列の指定範囲の合計を、その週の始まりからその日までの日数で割る。 False B列の指定範囲の平均値を出す というものです。 結局、今日以降の数字を0ではなくnullにすることで解決したのですが、エラーをはいた原因を後学のために教えて下さい。 IF(VLOOKUP((Today()),A2:A10,1,False)), (B2:B8)*5/(MOD(DAY(TODAY()),7)), ROUND((AVERAGE(B2:B8)*5),2)

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

VLOOKUP関数はMATCH関数の場合と同じように検索値に該当するデータが無い場合にはそれ自体でエラーとなってしまいますので、式を改めVLOOKUP関数がエラーとなる場合にはAVERAGEを計算するように、最初に式を組むことが必要です。 次のようにすればよいでしょう。 =IF(ISERROR(VLOOKUP(Today(),A2:A10,1,False)),ROUND((AVERAGE(B2:B8)*5),2),SUM(B2:B8)*5/MOD(DAY(TODAY()),7)) SUM(B2:B8)*5/MOD(DAY(TODAY()),7)の式は正しいとも思われませんが。 あるいは次のような式にします。 =IF(COUNTIF(A2:A10,TODAY())=0,ROUND((AVERAGE(B2:B8)*5),2),SUM(B2:B8)*5/MOD(DAY(TODAY()),7))

tukutukuhosi
質問者

お礼

ありがとうございます。なるほど、エラー前提で式を書くんですね。該当の式はこちらで見なおしておきます。

関連するQ&A

  • Q:エクセルのVLOOKUPで・・・

    VLOOKUPでご相談させてください。 VLOOKUP(検索値, 範囲, 列番号, 検索の型)で、検索の型の部分を FALSEに指定した場合、検索値 と完全に一致する値だけが検索され、 見つからない場合は エラー値 #N/A が返されますが、見つからない 時にそのエラー値#N/Aを表示させずに空欄にさせたいのですが、そん なときどうしたらいいですか? if(VLOOKUP(検索値, 範囲, 列番号, 検索の型)<>"#N/A","○","") ではダメでした。検査値一致の場合には○を、検査値がなければ空欄 としたい表を作成したいのです。 アドバイスお願いします。

  • VLOOKUPで列番号を移動させたい

    すいません。質問なのですが VLOOKUPで=VLOOKUP(検索値,範囲,列番号,FALSE) の式の中で列番号を増やしていくことは可能でしょうか? たとえばA1では=VLOOKUP(検索値,範囲,2,FALSE)であった式がB1では=VLOOKUP(検索値,範囲,3,FALSE)に なるみたいなかんじです。 手動でなくそういう式にできたらと思って ご相談させていただきました。

  • 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関数の質問となります。 =VLOOKUP(C2,Sheet2!$A$2:$E$685,1,FALSE) 検索値  →リストを使用(元データはSheet2の指定したセル範囲の表の2列目のデータ) 範囲 →Sheet2の特定のセル範囲 列番号 →1(ここは100-01、100-02などの番号が入力されています) 検索方法 →false(完全一致) この式で「#N/Aエラー」が発生してしまいます。 単純に「氏名」から「社員番号」を引っ張りたいだけなのですが、 なんでエラーになるのでしょうか? 範囲に指定した表には空白行はありますが、書式設定などは特に問題はないです。 恥ずかしい質問なのは十分に理解していますが、 教えて頂きたく思います。 よろしくお願い致します。

  • EXCEL VLOOKUPで含む検索

    _|    A    |  B   | C  | | Z | 1 |赤いイチゴ |みかん |\30 | |   | 2 |        |リンゴ  |\50 | |   | 3 |        |イチゴ  |\80 | |   | A1に検索値(例:赤いイチゴ)を入力すると、検索範囲(B:C列)のっている単語が含まれていれば値段をZ1に表示したいのですが、うまくいきません。 検索値が一致ならば、=VLOOKUP(A1,$B:$C,1,FALSE)だとおもうのですが、=VLOOKUP("*"&A1&"*",$B:$C,1,FALSE)だと#N/Aエラーが出ます。 どなたか、知恵をお貸しください。

  • VLOOKUPに詳しい方!

    エエクセルのVLOOKUP (=VLOOKUP(A2,得意先!A1:B178,2,0)) この式のどこが間違ってますか? A2は入力する場所を指定してますし、 得意先の範囲もコード(数字)と得意先名の2列だけで、 簡単な式のはずなのですが、なぜかエラーがでます。 分かる方いらっしゃいませんか?

  • =IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $

    いつもお世話になってます。 以下の関数式について、お時間がありましたらどうぞご教示ください。 =IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $12,2,FALSE)) 「シート2の範囲指定した表にA1セルの値と同じ値の右隣になる値を返せ。ただし該当なき場合は空白とせよ。」 純粋になんでこのような構文になるのかが解りません。 1.ISNAってそもそもなんでしょう? 2.同じ式を繰り返すのはなぜ? (模範式で、このように同じ式を繰り返す構文があまり無いように思えたのです。) ・参考となる他所のページがあれば教えて下さい。 ・素人です。お手柔らかにお願いします。 (エクセル2003)

  • VLOOKUP関数の範囲がずれてしまう

    VLOOKUP関数を使用していますが、 たとえばVLOOKUP(B10,A1:B8,2,FALSE)の式を下にドラッグしてコピーしていくとVLOOKUP(B11,A2:B9,2,FALSE) VLOOKUP(B12,A3:B10,2,FALSE)という様に範囲がA1からA2、A3とずれていってしまいます。検索のB10がB11、B12と成るのはいいのですが、範囲は、固定にならないと式をコピーできないように思うのですが誰か分かる方教えてください。

  • VLOOKUP関数が#N/Aで使えません

    こんにちは。 エクセルで表を作っています。 VLOOKUP関数を使いたいのですが、エラー#N/Aが出て使えません。とてもシンプルな式なのに、何がだめでできないのか全く解かりません。 式は、=VLOOKUP(C3&D3,A7:D12,4,FALSE)です。 ちなみに、=VLOOKUP(C2,B7:D12,3,FALSE)にはちゃんと反応して数値を返してくれます。違いは検索値だけなのですが、数字になっているので、文字列に指定もしました。違うセルで=C3&D3は返してくれています。 何がいけなくてできないのか、教えていただけると助かります。 よろしくお願いします。

  • IFとVLOOKUP

    DのコラムにIDaa001アルファベット2文字と数字3桁 Fのコラムに商品名の入ったシートaa DのコラムにID bb001アルファベット2文字と数字3桁 Fのコラムに商品名の入ったシートbb 上記二つのシートからデータを参照したいシートccが有ります。 シートccに入っているIDによって、参照するシートを変えたいので、IF関数を使ってみましたがうまくいきませんどの様にしたら良いのでしょうか? ちなみに私の書いた式は下記です =IF(A3=aa,VLOOKUP(D3,aa!A2:B99,2,FALSE),VLOOKUP(D3,bb!A2:B213,2,FALSE)) どうしたら良いのか分からなく、IDの頭2個のアルファベットをLEFT関数で抜き出して、Aのコラムに貼り付けて上記の式をつくってみましたがダメでした。 よろしくおねがいします。

専門家に質問してみよう