- ベストアンサー
複数の検索文字を列から集めるエクセルマクロ
ある特定の名前が混在して大量にある下のようなリストがあります。 A B C D 1 山田太郎 08/30 もも 桃太郎 2 桜井花子 08/09 苺 栃乙女 3 山田太郎 08/08 苺 あまおう 4 山田太郎 08/07 ナシ 20世紀 5 佐藤純一 07/20 林檎 青森の 2 桜井花子 07/09 ナシ 20世紀 現在、このA列の名前を選択してボタンをクリックすると その名前がある行を集計して テキスト出力するマクロを使っています。 ただ、なにせ大量の名前があり、 定期的に更新され名前も増えます。 名前順に並べ替えをしてから、出力するにしても非常にたいへんです。 そこで、 (1)A列を検索して、名前のリストを作る (同姓同名はいないので、 A列に複数同じ名前があっても1つだけ表示させる) (2)そのリストを、順に選択し既存のマクロを動かす。 という(1)(2)の手順を自動化するマクロが作りたいのですが 色々検索したりして調べても 文字を指定して検出する例は結構あるのですが 検索文字を列から集める方法は見つかりませんでした。 もしかしたら、VBAでは非常に難しいのかもしれませんが 私は、その判断もまったくつかないほど無知ですので 何か解決法がありましたら どなたか、ご指導して頂けると幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
リスト表示が目的ではなく集計だけなら Sub Test2() Dim myDic As Object Dim c As Range, d As Variant Set myDic = CreateObject("Scripting.Dictionary") For Each c In Range("A1", Cells(Rows.Count, "A").End(xlUp)) myDic(c.Value) = Empty Next For Each d In myDic.keys MsgBox "ここで " & d & " の名前で、既存のマクロを動かす。" 'その名前がある行を集計してテキスト出力するマクロを使っています。 'Call 集計マクロ Next d End Sub
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
>検索文字を列から集める方法 データメニューのフィルタから「フィルタオプションの設定」という機能で一意のリストを書き出させたり データメニューの統合で一意のリストの書き出しと数値データの集計まで一気にやらせたり データメニューのピボットテーブルレポートで一意のリストの書き出しと各種複雑な集計までやらせたり といった事がエクセルに出来ます。自動記録マクロで録れば,それをマクロに翻訳するとどの命令になるのかもすぐ判ります。 「集計」とは具体的に何をしているのかご質問に書いてありませんが,Advancedfilter辺りがお薦めかなと思います。 それと >(2)そのリストを、順に選択し既存のマクロを動かす。 マクロの連携ですから,できれば選択して動かすとかやめて sub macro1() dim h as range for each h in range("F1:F10") macro2 h next end sub sub macro2(x as range) msgbox x.address end sub とかなんとかの具合で,セレクトしないマクロにも挑戦してみてください。
お礼
なるほどー。ありがとうございます。 ぜひ、挑戦してみようと思います! でも現状、セレクトするマクロでもかなり怪しいほど 私は、基礎が抜けてます。
- watabe007
- ベストアンサー率62% (476/760)
>(1)A列を検索して、名前のリストを作る >(同姓同名はいないので、 >A列に複数同じ名前があっても1つだけ表示させる) ユーザーフォームにリストボックスを設け 重複のないリスを表示すれば良いでしょう Sub Test() Dim myDic As Object Dim c As Range Set myDic = CreateObject("Scripting.Dictionary") For Each c In Range("A1", Cells(Rows.Count, "A").End(xlUp)) myDic(c.Value) = Empty Next With UserForm1 .ListBox1.List = myDic.keys .Show End With End Sub
お礼
早速のご返答 ありがとうございます! 私、全くこの機能をを知りませんでした。。 超初心者です。。。 今、リストからフォームでA列のリストボックスを 作成してみたりと少し試してみたのですが、 使えるようになるのに、ちょっと時間がかかりそうです。
お礼
再びのご回答 重ねてありがとうございます!! 少し、言葉足らずで、お手間をとらせてしまい 大変申し訳ありませんでした。。 まさに、集計だけが目的です。 分からない事などがまだあるかもしれませんが 早速試してみたいと思います。