Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
セルに入力した住所によってデータを反映させたい
投稿日時: 19/05/15 08:39:18
投稿者: okaisa

セルA1に○○町3丁目
セルA2に△△町4丁目
セルA3に□□町1丁目
セルA2に△△町2丁目
 
と住所録があるとします。
 
セルAの町名で判断しセルBに自動的にデータを反映させたいです。
 
反映させたいデータを以下とします。
○○町・・・AAA
△△町・・・BBB
□□町・・・CCC
 
イメージは以下のとおりです。
セルA           セルB
A1 ○○町3丁目    B1 AAA
A2 △△町4丁目    B2 BBB
A3 □□町1丁目    B3 CCC
A3 △△町2丁目    B4 BBB
 
なにとぞご指導よろしくお願いします。

回答
投稿日時: 19/05/15 09:09:59
投稿者: メジロ2

任意の隣り合った2列(仮にG,H列)に、つぎのような照合表を作ります。
    G     H
 1  ○○町  AAA
 2  △△町  BBB 
 3  □□町  CCC 
 
B1: =VLOOKUP(LEFT(A1,FIND("町",A1)),$G$1:$H$3,2,FALSE)

投稿日時: 19/05/15 11:28:30
投稿者: okaisa

メジロ2様
お返事ありがとうございます
  
町がつかない地域もあるので
それを考慮に入れた場合はどうなるでしょうか?
  
A1 ○○町3丁目    B1 AAA
A2 △△町4丁目    B2 BBB
A3 □□町1丁目    B3 CCC
A4 △△町2丁目    B4 BBB
A5 ××3丁目     B5 DDD
  
のようになってほしいです。
ご指導お願いします。
 
どうしても前半の関数をどう変更してよいのか・・・うまくいきませんでした・・・

回答
投稿日時: 19/05/15 13:04:45
投稿者: メジロ2

>××3丁目
何丁目を表す「数字」の前には数字はないことが前提です。
 
B1: =LEFT(A1,AGGREGATE(15,6,ROW(A1:A20)/ISNUMBER(MID(A1,ROW(A1:A20),1)*1),1)-1)

投稿日時: 19/05/15 13:20:24
投稿者: okaisa

メジロ2様
早速の回答ありがとうございます。
 
=LEFT(A1,AGGREGATE(15,6,ROW(A1:A20)/ISNUMBER(MID(A1,ROW(A1:A20),1)*1),1)-1)
 
この数式だと
ご指導いただいた任意の適合表
 
任意の隣り合った2列(仮にG,H列)に、つぎのような照合表を作ります。
    G     H
 1  ○○町  AAA
 2  △△町  BBB 
 3  □□町  CCC
 
はどこで参照するのでしょうか?
 
現在は以下の表が出来上がっています
セルAの値からセルGを参照し,セルBに対応するセルHの値を入力したいです。
ご指導お願いいたします。
 
セルA         セルB(実際はまだ数式が入ってないので空欄) セルG  セルH
A1 ○○町3丁目    B1 AAA                 ○○町  AAA
A2 △△町4丁目    B2 BBB                 △△町  BBB
A3 □□町1丁目    B3 CCC                 □□町  CCC
A4 △△町2丁目    B4 BBB                 ××   DDD
A5 ××3丁目     B5 DDD                 ●●   EEE

回答
投稿日時: 19/05/15 13:29:24
投稿者: メジロ2

ごめんなさい。
 
>B1: =VLOOKUP(LEFT(A1,FIND("町",A1)),$G$1:$H$3,2,FALSE)
上の式中の「LEFT(A1,FIND("町",A1))」の部分を入れ替えます。
 
B1: =VLOOKUP(LEFT(A1,AGGREGATE(15,6,ROW(A1:A20)/ISNUMBER(MID(A1,ROW(A1:A20),1)*1),1)-1),$G$1:$H$3,2,FALSE)

回答
投稿日時: 19/05/15 13:31:54
投稿者: メジロ2

それと
 
B1: =VLOOKUP(LEFT(A1,AGGREGATE(15,6,ROW(A1:A20)/ISNUMBER(MID(A1,ROW(A1:A20),1)*1),1)-1),$G$1:$H$3,2,FALSE)
 
式中の「$G$1:$H$3」は現状に合わせて修正してください。

投稿日時: 19/05/15 14:14:03
投稿者: okaisa

メジロ2様
大変感謝しております。
ありがとうございます。
 
数式の ROW(A1:A20) は何を示しているものでしょうか?
 
実際のものは
住所がS2〜261
表示させるセルがTの行
 
適合表ががセルV1〜112,W1〜112
です。
 

回答
投稿日時: 19/05/15 14:31:13
投稿者: メジロ2

============================================
実際のものは
住所がS2〜261
 表示させるセルがTの行
  
適合表ががセルV1〜112,W1〜112
です。
===========================================
これらのことはそちらで直していただくとして、
「ROW(A1:A20)」は「{1,2,3,......,18,19,20}」(配列)を表しており、左から順番に1文字づつ
取り出すために使っています。
取り出した1文字が数字かどうかを判断して町名と何丁目との
境を特定します。
 
夕方に出かけて数日おりませんので対応が出来ません。あしからず!

投稿日時: 19/05/16 10:49:43
投稿者: okaisa

1行目はできました。
そのまま2行目以下をドラッグしていったのですが,
3行目以降はエラーになってしまいます・・・なぜでしょうか

投稿日時: 19/05/20 11:21:02
投稿者: okaisa

$で絶対数設定することでできました。
コメントいただけた方がいたのですが消えてしまった・・・
みなさんありがとうございました。
 
またご指導のほどよろしくお願いします。