Excel テーブルで VLOOKUP 数式が壊れる理由

Excel テーブルで VLOOKUP 数式が壊れる理由

Excelがテーブルとして認識しない生データ(つまり、隣接するセルに単純に値を入れる)を使用するワークシートがあり、ワークシートの別の部分では、そのデータを検索する数式が次のようにあります。

VLOOKUP(D$1, Config!$C$4:$E$8,2,FALSE)

自動フォーマットや自動テーブル拡張などの追加機能を利用するために、生データをテーブルとして宣言 (Ctrl-T) することに決めるまでは、すべて順調に進んでいました。

テーブルが宣言されると、検索領域をセル参照 ( Config!$C$4:$E$8) として参照するか、新しいテーブル名 (名前マネージャーで変更) で参照するかに関係なく、すべての数式でそのテーブル内の #N/A が検索されます。

手掛かり(それがどれだけ価値があるかは分かりませんが)、ルックアップ キー (D$1私の数式では ) とデータ キー ( の左端の列Config!$C$4:$E$8) は数値 ( のような値) です。Excel はテーブル内ではテキスト ルックアップを使用しているようで、 (テーブル内で) と( から)2015の一致に失敗します。これは単なる手がかりで、間違っているかもしれません。2015"2015"D$1

数式を壊さずにテーブルを使い始めるにはどうすればいいでしょうか (自動拡張は本当に便利です)?

編集 :ルックアップキー ( D$1) がテーブルの一部になると、状況は変わります。2015 は数式では「2015」と表示されます。

答え1

sicarius92 がコメントで指摘しているように、変更されたデータ型を「キャスト」することで処理するとD$1 + 0うまくいきます。

それでも、これは単なる回避策であり、テーブルにデータを入れるとなぜデータ型が魔法のように変わるのかは説明されていません。

答え2

Excel 2010 では (2007 ではどのように機能していたかはよくわかりません)、範囲をテーブルに変換すると、ヘッダーの内容が内容とは関係なくテキストに変換されます。ヘッダーに数字を入れたい場合は、セルの書式を「数値」または「標準」(または必要な書式) に設定し、以前のデータを再度挿入する必要があります。どうやら Excel では互換性のないデータ型のチェックも無効になっているようです (自動ソリューションである小さな緑色の矢印とそのメニューも無効になっています)。

答え3

慈悲の法則をみんなに...

この問題は簡単にIFERROR()解決できます。ルックアップ値がルックアップ テーブルでは数値である可能性があるが、ルックアップ値セルでは数値ではないことがわかっている場合は、次のようにします。

=IFERROR(VLOOKUP(D$1,Config!$C$4:$E$8,2,FALSE),  VLOOKUP(VALUE(D$1),Config!$C$4:$E$8,2,FALSE))

上記は、式を一般化するためのものです。他の場所にコピーしたくない場合は、検索値がテキストとして扱われる数値であることを知っているので、式の「失敗」の半分だけが必要です。確実にわからない場合、またはまったくわからないが、この種の問題に対して証明したい場合は、すべてを使用してください。

逆の場合も同様です。数値の参照値があるとします (Excel はそれを数値であると認識します {ここでは、Excel は参照値がテキストであると認識します})。 のTEXT()代わりにを使用してVALUE()解決します。

=IFERROR(VLOOKUP(D$1,Config!$C$4:$E$8,2,FALSE),  VLOOKUP(TEXT(D$1,"@"),Config!$C$4:$E$8,2,FALSE))

(そして、どちらも解決しない場合は、どこかでゴミ文字を探すという悪夢に陥ります... ヘッダーは通常、安全で管理された世界の外部から取得されたデータではないため、まずルックアップ範囲の資料を試してください。ヘッダーがある場所にヘッダーをインポートしない限り (つまり、ルックアップ値の取得元の資料全体をインポートした場合)、または両方のデータ セットをインポートした場合。)

関連情報