-1

私は2つのテーブルを持っています。

  • 表 1 の内容: 電話番号リスト

  • 表 2 の内容: プレフィックスと宛先リスト

電話番号のプレフィックスと宛先を調べたい。

行データテーブルと結果テーブルの下に与えられます

表01(電話番号一覧)

Phone Number     
------------
12426454407       
12865456546       
12846546564       
14415332165       
14426546545        
16496564654       
16896546564        
16413216564       

表 02 (プレフィックスと宛先リスト)

PREFIX |COUNTRY              
-------+---------------------
1      |Canada_USA_Fixed     
1242   |Bahamas              
1246   |Barbados             
1268   |Antigua              
1284   |Tortola              
1340   |Virgin Islands - US  
1345   |Cayman Island        
144153 |Bermuda-Mobile       
1473   |Grenada              
1649   |Turks and Caicos     
1664   |Montserrat           

表 03 (結果)

Phone Number  | PREFIX | COUNTRY            
--------------+--------+-------------------
12426454407   | 1242   | Bahamas           
12865456546   | 1      | Canada_USA_Fixed  
12846546564   | 1284   | Tortola           
14415332165   | 144153 | Bermuda-Mobile    
14426546545   | 1      | Canada_USA_Fixed  
16496564654   | 1649   | Turks and Caicos  
16896546564   | 1      | Canada_USA_Fixed  
16643216564   | 1664   | Montserrat        
4

3 に答える 3

0

最長のプレフィックスが6桁の長さであるとすると、表1の電話番号の列の横に6列(B:G)を追加できます(これは列Aだと思います)。列Bでは、を使用して最初の6文字を=LEFT(A2,6)表示し、次の列では5文字を表示します。

次に、さらに6つの列(H:M)を追加し、それぞれ=MATCH(B2,Table2!A:A,0)がこのプレフィックスがプレフィックスのリストにあるかどうかを確認します。

これで、6つの潜在的なプレフィックスのいずれかが一致する場合、プレフィックスの行番号が取得されます。一致しない場合は、#N/Aエラーが発生します。次の数式を列N{=INDEX(H2:M2,MATCH(FALSE,ISERROR(H2:M2),0))}に入力します。-数式を配列数式として入力します。つまり、数式を入力した後にEnterキーを押す代わりに、Ctrl-Shift-Enterキーを押します。{}数式の周りにこれらが表示されるので、手動で入力しないでください。 !。

列Nには、一致するプレフィックスの行が含まれるようになりました。一致するプレフィックスがない場合は、#N/Aが含まれます。したがって、=IF(ISNA(N2,'No matching prefix',INDEX(Table2!B:B,N2))次の列に入力すれば完了です。

列を減らして数式を複雑にする上記のアプローチも可能ですが、お勧めしません。

于 2012-12-18T20:16:34.017 に答える
0

電話番号が列 A にあると仮定して、列 B でプレフィックスを抽出する必要があります。このようなもの:

=LEFT(A1, 4)

ただし、Canada_USA_Fixed は、Antigua モバイルと同様に問題を引き起こします。この問題はあなたに解決してもらいます。IF ステートメントから始めます。

プレフィックスを抽出したので、国を取得するために簡単に使用できますVLOOKUP()

于 2012-12-18T14:10:50.360 に答える
0

私も最長のプレフィックス マッチを行っています。Google が見つけた他のすべての人と同様に、これは国際電話番号のプレフィックスにも対応しています。

私のソリューションは、200 プレフィックスのテーブルで機能しています (ワールド ゾーン 1 を含む、つまり、米国/カナダに 1、バハマに 1242 など)。

まず、この配列数式が必要です (以下では「X」と呼びますが、完全に入力する必要があります)。

(LEFT(ValueToFind,LEN(PrefixArray))=PrefixArray)*LEN(PrefixArray)

これは、論理値に整数を掛けるというトリックを使用しているため、一致しない場合は結果がゼロになります。これを使用して、1 つのセルの最大値を見つけます (これを「MaxValue」と呼んでいます)。

{=MAX(X)}

MaxValue が 0 より大きい (したがって、何らかの一致が見つかった) 場合は、プレフィックス配列で最大値の位置を見つけることができます。

{=MATCH(MaxValue,X,0)}

ここでは重複について心配していません。PrefixArray で個別に確認できます。

初心者向けのメモ:

  • PrefixArray は、多数の $ で記述されるか、「名前付き範囲」として記述される絶対参照である必要があります。

  • ValueToFind、MaxValue、および結果のインデックスを同じ行のセルとして PrefixArray に作成すると想定しているため、列の文字に対して $ がありますが、行番号はありません。これにより、ValueToFind の多数の行を簡単に貼り付けることができます。

  • 配列数式は中かっこで示されますが、中かっこなしでテキストを入力してから Ctrl-Shift-Enter を押して入力します。

于 2013-05-31T10:27:00.370 に答える