
Sheet1のA列に例えば群馬県内の住所のリストがあります。(架空の住所です。)
前橋市池端町3-2-21……(セルA1)
桐生市黒保根町水沼7-3-5
高崎市大沢町1-18-204
沼田市佐山町8-6-5-402
勢多郡北橘村下箱田396
多野郡吉井町岩井27-5
以下1,000件程度
Sheet2のA1:B1538に郵政公社からダウンロードした群馬県内の郵便番号一覧表があり、A列に市郡町街大字等、B列に対応する郵便番号があります。(名前定義を仮に「〒」とします)
Sheet1の住所の郵便番号を検索する必要がありますが、そのためには住所の丁目地番より左の部分(市郡町街大字等)を分離しなければなりません。
これをマクロを使わずに1個の計算式で表示したいといろいろ工夫しましたが、どうもいい知恵が浮かびません。仕方なく一旦B列(B1)に
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,9,1),8,1),7,1),6,1),5,1),4,1),3,1),2,1)
という長たらしいネスト式を使って「2~9」の数値をすべて「1」に置き換え、
C列(C1)に =LEFT(A1,FIND(1,B1)-1)
と計算式を入れて市郡町街大字等を抽出し、D列(D1)に
VLOOKUP(C1,〒,2,FALSE) と入れてようやく郵便番号を検索しております。
結果としてはこれで正しい答は出るのですが、標準搭載の関数だけで(マクロを使わずに)何かもっと簡単な方法がありはしないかという気がしてなりません。
ご存知の方があればどうか教えてください。(OS等はWinMe→Excel2000Proです。)
No.1ベストアンサー
- 回答日時:
=LEFT(A1,LENB(A1)-LEN(A1))
でどうでしょうか?
A1で言えば"3-2-21"と削除するべき部分が1バイト文字になっていますので、バイトで文字数を数えた時の長さを文字数で数えた時の長さを引けば、
2バイト文字で構成される文字の長さがでます。
イヤー驚きました。番地が半角文字であることに着目し、バイトで数えた文字数と単なる文字数との差が漢字部分の文字数になるなんて、正にコロンブスの卵。何かありそうだとは思ってましたけど私のボケ頭では思いつきませんでした。
こんな簡単なことだったんですね。仮に番地部分が全角数字&記号だったとしてもASC関数で半角にすればよいし、眼からウロコが落ちました。ありがとうございました。
No.4
- 回答日時:
こんばんは。
紹介されている数式をみて、私のオリジナルということで出しておきます。
=LEFT(A1,MATCH(FALSE,INDEX(ISERROR(MID(A1,ROW($A$1:$A$256),1)*1),,),0)-1)
これは、住所の後ろのほうに、全角が入っても区切ることが出来ます。正確に言うと、最初に出てきた数字の手前で切り分けます。
配列数式ですが、配列の確定が必要ありません。
イヤーいろんな方法があるもんですね。今のところ数式を解析して理解するまでには至ってませんが、とりあえず試してみて正しい答えが出ることが分かりました。今後ほかの面で使えそうなので参考にさせていただきます。
ありがとうございました。
No.3
- 回答日時:
ご掲示のURLを開いたところ、ASCによる全角文字の半角化部分を除き、ANo2、masa_019さんの回答と同じでしたが、説明等もあり、ある程度は理解できました。
ありがとうございました。
No.2
- 回答日時:
こんばんは。
住所の文字列の中の最初に出てくる数値より左を取り出します。
A1に住所:前橋市池端町3-2-21があったとして、B1に
=LEFT(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&1234567890))-1)
これで、前橋市池端町が取り出せると思います。
エラー防止のための1234567890の結合、FIND関数による0位置の検索までは分かりましたが、数値の最小値を求めるMIN関数でなぜ数値左端の位置が算出されるのか、その仕組みが今のところボンクラ頭では理解出来ておりません。しかし結果として正しく答えが出ることが分かりましたのでお礼申し上げます。
ただ、数式としてはBLUEPIXYさんの「=LEFT(A1,LENB(A1)-LEN(A1)) 」の方が簡明だという感じがしています。
いずれにしてもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
Excelで住所を2つ(町名迄と番地以降)に分けるには?
Excel(エクセル)
-
エクセルの関数で1つのセルに入っている住所を丁目までと番地以降に分けたい
Excel(エクセル)
-
住所録を市区町村、番地、建物名の3分割にする方法
Excel(エクセル)
-
-
4
エクセルで住所を県と市・郡と町以降の住所に分割したい
Excel(エクセル)
-
5
エクセル関数で住所から丁目番地、建物名を抽出したい
Excel(エクセル)
-
6
エクセルで住所の混在する「丁目番号番地」を「-」に一括変換する方法ってありますか?
Excel(エクセル)
-
7
エクセルにおいて、住所データからマンション名のみを取り出したいです。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
このカテゴリの人気Q&Aランキング
-
4
エクセルのセル内の余白の設定...
-
5
エクセルの2ページ目の作り方
-
6
セル入力文字が、「右のセルに...
-
7
グラフの横・縦項目が全部表示...
-
8
Excel列条件×行条件=合計の計算
-
9
Excel関数で、文字を数字に変換...
-
10
EXCELで2つの数値のうち大きい...
-
11
エクセル: セルの枠を超えて表示
-
12
エクセルウィンドウのサイズ変...
-
13
エクセルで年齢の計算
-
14
セルの文字を「印刷時だけ非表...
-
15
EXCEL VBAで全選択範囲の解除
-
16
EXCELで特定のセルに表示...
-
17
Excelで罫線を引いていな...
-
18
EXCELで高さ0で隠れた行の素早...
-
19
DATファイルをEXCELで開きたい
-
20
Excel に貼り付けた図形が、保...
おすすめ情報
公式facebook
公式twitter