- ベストアンサー
vlookup関数で日付の計算結果をうまく参照できません。
ワークシートが2枚あります。 <ワークシートA>(日付の計算) 2009/2/7|=A1-14|ほげ1 2009/2/8|=A2-14|ほげ2 2009/2/8|=A3-14|ほげ3 ・・・ <ワークシートB>(ほげの検索) =vlookup(today(),ワークシートA!B1:C500,2) このようにして、ワークシートBにて"ほげ?"を表示しようとすると 表示されません。 どなたか、原因及び解決策を分かる方がいらっしゃったら お教えください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 >vlookup(today(),ワークシートA!$B$1:$C$500,2)⇒「0」を返します。 >vlookup(today(),ワークシートA!$B$1:$C$500,1)⇒「-14」を返します。 なんとなく原因が分かった気がします。 1行目から500行目まで全ての行にデータが入っているわけではないのですね? 例えばA1からA100までは日付が入っているけど、A101からA500は空欄。 こんな感じになっているのでは? これだと、B1からB100までは順当に計算されるのに、B101以降は-14になると思います。おそらくこれが返ってきているのでしょう。 vlookupでtrue指定をすると昇順にソートされている必要があることはご存知かと思いますが、これではソートされていないのと同じですね。 ですので、例えば B1 =IF(A1="","",A1-14) というような感じで、A列が空白なら計算しないようにするというのはどうでしょうか?
その他の回答 (1)
- piro19820122
- ベストアンサー率38% (256/672)
「表示されません」というのが具体的にどういう問題なのか分かりませんが… (違う値になるのかエラーなのか) まず、参照範囲は絶対指定した方が良いでしょうね。 それからオプションのfalseも指定した方が良いかと思います。 あと気になるのは、シートAの方で2/8が2回あるのですが、それも意図しない表示になっている原因ではありませんか? 以上、確認してみてください。
補足
迅速な対応有難うございます。 >「表示されません」というのが具体的にどういう問題なのか分かりませんが… vlookup(today(),ワークシートA!$B$1:$C$500,2)⇒「0」を返します。 また vlookup(today(),ワークシートA!$B$1:$C$500,1)⇒「-14」を返します。 >それからオプションのfalseも指定した方が良いかと思います。 vlookup(today(),ワークシートA!$B$1:$C$500,2,FALSE)⇒「#N/A」 vlookup(today(),ワークシートA!$B$1:$C$500,1,FALSE)⇒「#N/A」 となります。 >あと気になるのは、シートAの方で2/8が2回あるのですが、それも意図しない表示になっている原因ではありませんか? 伝わりにくくて申し訳ありません。この2/8の重複はわざとです。 2009/2/7|=A1-14|ほげ1 2009/2/8|=A2-14|ほげ2 2009/2/8|=A3-14|ほげ3 2009/2/9|=A4-14|ほげ4 2009/2/10|=A5-14|ほげ5 2009/2/12|=A6-14|ほげ7 のように、日付は昇順で並ぶものの、複数ある場合を想定しています。 以上、よろしくお願い致します。
お礼
返事が遅くなり申し訳ありません。 ご指導して頂いた方法でうまくいきました。 どうもありがとうございました。