- ベストアンサー
2つのファイルで大分類の項目が部分一致し小分類の項目が完全一致の数を出す方法
- 2つのエクセルファイルの大分類の項目と小分類の項目を比較する方法について教えてください。
- 2つのファイルで部分一致と完全一致の数を数える方法を教えてください。
- 関数の組み合わせ方がわからず、手入力しか方法がないのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
「1つめのエクセルファイルの空欄を埋めたい」 ということでしょうかね? 1つめのファイルの表はこういう雰囲気なのでしょうか? A B C D 10 テレビ修理 ビデオ修理 ラジオ修理 … 11 ネジA 12 ナットA 13 … で 2つめのファイルの表はこういう雰囲気なのでしょうか? A B C D 1 ネジA ナットA … 2 テレビ修理 50 30 3 ビデオ修理 50 30 4 ラジオ修理 50 30 5 … 行と列が入れ替わってるだけならば 関数でも全く難しくないですね 何せ検索する場所を変えるだけですから 2つめのファイルの名を仮に「ファイル2」とします 双方のファイルが開いている状態で 1つめのファイルのB11に =OFFSET([ファイル2.xls]Sheet1!$A$1,LOOKUP(1,{1},MATCH(B$10,[ファイル2.xls]Sheet1!$A:$A,0))-1,LOOKUP(1,{1},MATCH($A11,[ファイル2.xls]Sheet1!$1:$1,0))-1,1,1) と入れてみてください 問題ないはずです その他の説明については やっていることがほぼ同じですので http://oshiete.coneco.net/kotaeru.php3?q=2570100 http://oshiete.coneco.net/kotaeru.php3?q=2569996 をご参照ください なお双方ともファイルが開いていない状態で更新をかけたり 式を確定されるとエラーになりますのでご注意ください
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
(1)VBAでやればなんと言うこともない。 (2)しかしエクセル関数では、部分一致はFIND関数しかなく、それは1セル内だけで考えるには良いが、表の複数セル中からどこにあるか探してくれるものではない。 MATCH関数、VLOOKUP関数は完全一致を探すもので役にたたない。 (3)VBA的になるが、列内範囲指定して、最初に部分一致した行を返すユーザー関数を作れば、本件できるかもしれない。 (4)ひょっとしたら配列数式の回答が出るかもしれない。 ーー テレビ修理としてテレビ、修理はわかるがテレ、ビ修理、テレビ修 などがくる恐れはないのですか。 大分類をありえる語句にブレークダウンした表を作ることを考えたほうが得策では?
補足
ありがとうございます。 (1)VBAは思いつきませんでした。使えないので余計にxxx (2)は私も色々探しましたが、「表の複数のセル」から探し当てる関数はないし、MATCHやVLOOKUPは完全一致のものなのであきらめました。 (3)参考にVBAを教えてくださいますでしょうか? (4)配列数式のほうが使い勝手はいいかなと思いましたが、「集計をする」目的でないのと、本を読んでも「???」となってしまいました。 それと テレビ修理としてテレビ、修理はわかるがテレ、ビ修理、テレビ修 などがくる恐れはないのですか。 >それはありません。一くくりの言葉になっています。 大分類をありえる語句にブレークダウンした表を作ることを考えたほうが得策では? >大分類を一つずつ置換するか、別のセルに対応させるというのも手かなと思ったのですが、数が多いので挫折しました。
補足
ありがとうございます。 表の雰囲気はその通りです。 ただ「テレビ修理」の記載がファイル1と2で微妙に違うんです。(コードで揃っていればやりやすいのですが・・・) 文字の置換をしてみます。一度試してみます。