プロが教えるわが家の防犯対策術!

次のようなリストがあります。
A1 トヨタボクシー
A2 トヨタ ヴォクシー
A3 ホンダ ステップワゴン
A4 本田フィット
A5 アコード
A6 スズキアルト
A7 ワゴンR
A8 日産スカイライン
A9 ニッサンプレセア

このリストから、抽出条件のリスト
トヨタ
ホンダ
本田
スズキ
鈴木
ダイハツ
・・・

を使って、メーカー名を抽出したいのですが、どのような方法があるでしょうか?
抽出元のリストには、メーカー名が入っていたりいなかったり、漢字であったりカナであったりと統一性がありません。そのリストから、「日産~」「ニッサン~」と入力されているものは、「ニッサン」として抽出したいのです。
しかも、抽出した残りの、社名「ニッサンスカイライン」の「スカイライン」を、「日産プレセア」の「プレセア」の部分をついでに抽出したいのです。
ご存じの方、よろしくお願いいたします。

A 回答 (4件)

◆Sheet1


      A            B       C
1   トヨタボクシー     トヨタ     ボクシー
2   トヨタ ヴォクシー    トヨタ     ヴォクシー
3   ホンダ ステップワゴン  ホンダ   ステップワゴン
3   本田フィット       ホンダ    フィット
4   アコード         #N/A     #N/A
5   スズキアルト       スズキ    アルト
6   ワゴンR         #N/A     #N/A
7   日産スカイライン    ニッサン   スカイライン
8   ニッサンプレセア    ニッサン   プレセア

◆Sheet2
     A        B
1   トヨタ    トヨタ
2   ホンダ    ホンダ
3   本田     ホンダ
5   スズキ    スズキ
6   鈴木     スズキ
7   ダイハツ   ダイハツ
8   日産     ニッサン
9   ニッサン   ニッサン

1)Sheet2にB列に統一メーカー名を入力します
2)Sheet1のB1の式
B1=LOOKUP(1,0/FIND(Sheet2!$A$1:$A$8,A1),Sheet2!$B$1:$B$8)
★下にコピー
C1=TRIM(SUBSTITUTE(A1,LOOKUP(1,0/FIND(Sheet2!$A$1:$A$8,A1),Sheet2!$A$1:$A$8),))
★下にコピー
3)ただし、メーカー名のないものは、エラーになります

この回答への補足

早速のご回答ありがとうございました。
がんばってやってみます。結果はまたいれさせていただきますが、取り急ぎお礼まで。

補足日時:2007/10/27 11:38
    • good
    • 0
この回答へのお礼

お礼が遅くなりました。
教えていただいたとおりで見事にできました。しかし、lookup(1,0~の式の「1、0」のところの意味が分からず、長い間悩んでおりました。もしよろしければ、lookupとfindの間の数字が表すところの意味を教えていただけますでしょうか。

お礼日時:2007/11/10 17:23

これは仮の例ですか。


まずVBAででもやらないと複雑になると思う。
まず4つのやらなければならないことがある。
(1)表記の統一
  日産ー>ニッサン、スカイラインー>プレセアの類
  別列作業列ににSUBSTITUTE関数で右辺の文字に変換
  間のスペースも置換操作でなくす。
(2)抽出メーカー名の入力
   どういう形式で抜き出したものをシートに表示したいのか
   質問に出さないと、質問にならない。
(3)抽出
   関数でやりたいのかな。およその方法で、質問に明記すべし。
   VBAとかある。
(4)作表
   関数でやる場合は(3)と一体だが、作表が必要。
ーーー
この課題に対し。、質問者はどれほど勉強しましたか。どこでつまずいたのか。何も書いてない。○投げの類です。
ーー
ホンダは2行以上に出てくるわけだが、MATCHやVLOOKUP関数は最初のものしかヒットしない。
ですから複数該当抜き出しは非常に技巧的な手法が必要。
それにホンダなどの文字列が分離されていないのが痛い。
トヨタニッサンといった2社名が含まれる社名は無いものとする。
ーー
社名ー車種 分離方法の例
例データA2:A4  スペースはなしに統一して後に下記を考える
ホンダフィット
トヨタボクシ
ニッサンティーダ
ーー
G2:G4 社名一覧(分離用)
トヨタ
ニッサン
ホンダ
ーー
ユーザー関数
作り方は
http://www.excel.studio-kazu.jp/mag2/backnumber/ …
などにあります。 WEB照会 「エルセル ユーザー関数」で。
Function fnd(a, b)
Dim cl As Range
For Each cl In b
p = InStr(a, cl)
If p <> 0 Then
fnd = Len(cl)
Exit Function
Else
End If
Next
fnd = "NF"
End Function
ーー
C2セルに
=MID(A2,1,fnd(A2,$G$2:$G$4))
と入れてC4まで式を複写
D2セルに
=MID(A2,fnd(A2,$G$2:$G$4)+1,LEN(A2)-fnd(A2,$G$2:$G$4))
と入れてD4まで式複写
結果C2:D4
ホンダフィット
トヨタボクシ
ニッサンティーダ
ーー
後は上記C列で並べ替えするなりして、者別ー車種名を知ってください。
ーー
その後
ちょっと変わったやり方で例示してみる。
例データ A1:B
A列  B列  (A列のfとB列のfは関係ありません。
例作成手抜きのため使っただけ)
社名車種
ax
sd
dw
fs
ax
de
fg
wq
sf
sd
ay
dw
sy

データーピボットテーブル・・
レイアウトのボタンを押したところで
行ー>社名  列ー>車種  データー>車種
ーー
出来上がった表
データの個数 / 車種車種
社名defgqswxy総計
a213
d123
f112
s2114
w11
総計21111122213
これでA列に社名、第4行に車種名が出て表に出てきた頻度がわかる。
ーー
関数でやりたければ、2条件の検索になる

この回答への補足

大変詳細なご回答をありがとうございました。○投げですみません。どのような方法があるのか広く知りたかったので。
かなり難しそうですが、がんばってやってみます。結果はまたいれさせていただきますが、取り急ぎお礼まで。

補足日時:2007/10/27 11:41
    • good
    • 0

会社名と商品名に分けていきたいと言う事でしょうか?


車メーカー+車名は例題ですか?

この回答への補足

まさに「車メーカー+車名」のリストになります。

補足日時:2007/10/27 11:31
    • good
    • 0

>抽出元のリストには、メーカー名が入っていたりいなかったり、漢字であったりカナであったりと統一性がありません。



統一性のない場合、まず統一することから始めた方がいいのでは?
自動車メーカーなんて10社も無いと思うので、
そんなに大した作業にはならないと思います。
しかし、社名が入っていない車に関しては、
車に疎い私には車名を聞いてもどこのメーカーの車か分からないので、
どうしようもありません。

統一させる1つの案として、編集 → 置換 より、
検索する文字列に 日産
置換え後の文字列に ニッサン
と、入れれば漢字の日産をニッサンに変えることが出来ます。
これを何度か行って会社名を統一していけば、
オートフィルタを使って、
オプションより”ニッサン” ”で始まる”
とすれば、ニッサンの車が抽出できます。
これを別のセル等にコピーして、
置換より、
検索する文字列に ニッサン
置換え後の文字列に 『空白』 ← 無入力
とすれば、会社名を消す事が出来ます。
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございます。参考にさせていただきます。

お礼日時:2007/10/27 11:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!