計算列で XLOOKUP を実行すると問題が発生します。
ソース テーブルには、列タイプが [一般] に設定され、1########## と入力された電話番号のリストがあります。これらの値は計算されません。
私の参照テーブルには、(NNN)NNN-NNNN としてフォーマットされた同じ電話番号のリストがあり、参照用に電話番号を正しくフォーマットする列を作成しました。
="1" & SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(E2,"(",""),")",""),"-","")," ",""),".","")
これにより、一致が正しく生成され、視覚的にはソース テーブル (C) とルックアップ テーブル (F) が一致しているように見えます。
ソーステーブル
ルックアップテーブル
ただし、次の XLOOKUP を使用しても一致するものは見つかりません。
=XLOOKUP([@[Phone Number]],'Data'!F:F,'Data'!G:G,"No Match", 0,1)
簡単なテストとして、まったく同じデータを手動で列 H に入力して変更すると、XLOOKUP が機能します。
両方の列を「テキスト」と「一般」としてフォーマットしてみましたが、うまくいきませんでした。Excel で「この列は文字列なので、そのように扱ってください」と言う方法はありますか?
答え1
Phone Numbers
正しく理解すれば、Source Table
は数値/一般としてフォーマットされていますが、Lookup Table
-->1
を使用して連結された追加部分があるため、テキストとしてフォーマットされます。&
Ampersand
さらに調査すると、Excel
デフォルトでは数字は配置をフォーマットしないright aligned
限りテキストは配置されますleft aligned
が、スクリーンショットからはそうではないようです。Source
データの書式設定。また、数値を入力すると、Excel
事前に書式設定されていない限り、 と表示されますGeneral
。
するべきこと?
empty string
-->""
を連結し[Lookup_Value]
てSource Table
次のように数式を適用すると、うまくいくはずです。
• セルで使用されている数式G4
=XLOOKUP(F4&"",B4:B8,C4:C8,"No Match",0,1)
上記は次のようにも書けます:
=XLOOKUP(F4:F5&"",B4:B8,C4:C8,"No Match",0,1)
OP のコンテキストでは、式は次のようになります。
=XLOOKUP([@[Phone Number]]&"",'Data'!F:F,'Data'!G:G,"No Match", 0,1)
また、 にアクセスできる場合は、 の倍数関数の代わりMS365
に次の式を使用することを強くお勧めします。Person Account Mobile
SUBSTITUTE()
Lookup_Table
=1&CONCAT(TEXTSPLIT(A4,{"(",")","-"," ","."},,1))
double unary
-->--
またはが上記の式に1
掛け算または割り算または加算される場合、 inは空の文字列に連絡する必要はありません。0
[Lookup_Value]
XLOOKUP()
注記:表示されている電話番号はランダムに作成された偽の番号です。また、参照番号と範囲は必要に応じて変更してください。