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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】住所に郵便番号を付記する方法 3 2022/05/07 17:15
- Excel(エクセル) セル内の一部に別セルを差し込む 3 2022/09/18 04:39
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/06/06 13:57
- Excel(エクセル) substitute関数についての質問です 3 2023/06/21 11:57
- Excel(エクセル) エクセルの数式で教えてください。 3 2023/06/06 10:13
- Excel(エクセル) EXCELでの複雑な複数条件について 4 2022/05/09 16:19
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/11 14:50
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- 政治 市町村のうち、町村って必要ないのではないでしょうか? 町村は人口も少ない、もしくは面積も小さいことが 3 2022/12/22 21:57
- 政治 市町村のうち、町村って必要ないのではないでしょうか?少なくとも役場はいりませんよね。 町村は人口も少 4 2022/11/12 22:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報