- 締切済み
csvファイルからデータを抽出したい
はじめまして。VBA初心者です。 【元となるデータの入ったCSVファイル(改竄禁止)】 A B C D E 1 ○位 名称 県名 住所 電話番号 2 ×位 ・・・ 3 △位 ・・・ 【抽出したデータを書き出したいxlsmファイル】 B C 2 順位 3 県名 この二つのファイルがあるのですが、 (1)xlsmファイルのC2に順位を入力し、その順位の建物のデータを csvファイルから抜き出し、xlsmファイル同シートのB5:F5に表示 (2)同じく県名もC3に入力し、抜き出した結果をB7を左上隅として表示 したいと思っています。 検索や本を見ましたが、似たようなケースがあってもそこから自分で 作るということができませんでした; 今後の参考にもしたいので、もしよろしければコードの解説もよろしく お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
>csvファイルから この書き方は、質問文のその先に書いている、質問者のやろうとしていることから考えて、表現がおかしいと思う。 エクセルにCSVファイルを読み込んだら、対照データは、エクセルデータと考えれば良いと思う。拡張子はCSVとなっているかもしれない(2003まで)が、データの来歴を気にする必要はない。 ーー CSVファイルのままで(ちょうどメモ帳で開いたような状態で 第何位のデータの、「CSVファイル内のデータ行」を探すのは、それなりに工夫が要るが、そんなことを考えてないのでしょう。 ーー すなわち、直接にセルに手入力したデータと考えて良いと思う。 だから、エクセルシートで A B C D E 1 ○位 名称 県名 住所 電話番号 2 ×位 ・・・ ・・・ から指定した順位のデータ行を見つける方法を考えれば良い。 一種の「検索」だ。 ーー 「検索」のコードなどは、マクロの記録を採ればわかる。 フィルタでも出せるとおもう。 普通は操作(データーフィルターフィルタオプションの設定など) を考える。 関数を使ってでもでも出来る。 ーー まだ初心者で、全く見当がつかないらしいが、勉強が先と思う。あまりにも、付帯的なことも判ってないのでは。 この課題(に限らず課題に)に着手するのが早過ぎるのだと思う。 このままだと、回答は丸投げ要求になり、回答の丸写しになる。 >もしよろしければコードの解説もよろしくお願いします。 まで要求するとは、(親切な回答者は行コメントぐらいを書いてくれるかもしれないが)行き過ぎだ。 ーー 上の行から1つずつIF文で判別して、見つけるコードででも辛抱せねばなるまい。その他のコード部分は出来るのかな。 2つのファイルを扱うなど、早すぎる。別シートぐらいに抜き出すで我慢すべきかと思う。
- rivoisu
- ベストアンサー率36% (97/264)
CSVから抽出しようとするから難解なのでしょう。 CSVは普通にあWrokbookとしてOpenできます。 Openした後は1つだけのシートを持ったBookとして扱えるので 後はVlookupなりmatch関数でできるのではないでしょうか。 もちろんVBAで処理する場合も同様の手順でできます。
お礼
回答ありがとうございます。 まずVlookupやmatch関数を調べてみて、またわからなくなったら 改めて質問します。
お礼
詳しい説明ありがとうございます! あと、おこがましい質問をしてすみませんでした・・・ 回答を参考に自分でやってみたいと思います。 他のコード部分も、どうしてもわからないときにだけ追記で質問します。