• 締切済み

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を左上隅として表示 したいと思っています。 検索や本を見ましたが、似たようなケースがあってもそこから自分で 作るということができませんでした; 今後の参考にもしたいので、もしよろしければコードの解説もよろしく お願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>csvファイルから この書き方は、質問文のその先に書いている、質問者のやろうとしていることから考えて、表現がおかしいと思う。 エクセルにCSVファイルを読み込んだら、対照データは、エクセルデータと考えれば良いと思う。拡張子はCSVとなっているかもしれない(2003まで)が、データの来歴を気にする必要はない。 ーー CSVファイルのままで(ちょうどメモ帳で開いたような状態で 第何位のデータの、「CSVファイル内のデータ行」を探すのは、それなりに工夫が要るが、そんなことを考えてないのでしょう。 ーー すなわち、直接にセルに手入力したデータと考えて良いと思う。 だから、エクセルシートで    A    B    C    D    E 1  ○位  名称  県名 住所 電話番号 2  ×位  ・・・ ・・・ から指定した順位のデータ行を見つける方法を考えれば良い。 一種の「検索」だ。 ーー 「検索」のコードなどは、マクロの記録を採ればわかる。 フィルタでも出せるとおもう。 普通は操作(データーフィルターフィルタオプションの設定など) を考える。 関数を使ってでもでも出来る。 ーー まだ初心者で、全く見当がつかないらしいが、勉強が先と思う。あまりにも、付帯的なことも判ってないのでは。 この課題(に限らず課題に)に着手するのが早過ぎるのだと思う。 このままだと、回答は丸投げ要求になり、回答の丸写しになる。 >もしよろしければコードの解説もよろしくお願いします。 まで要求するとは、(親切な回答者は行コメントぐらいを書いてくれるかもしれないが)行き過ぎだ。 ーー 上の行から1つずつIF文で判別して、見つけるコードででも辛抱せねばなるまい。その他のコード部分は出来るのかな。 2つのファイルを扱うなど、早すぎる。別シートぐらいに抜き出すで我慢すべきかと思う。

trowgum
質問者

お礼

詳しい説明ありがとうございます! あと、おこがましい質問をしてすみませんでした・・・ 回答を参考に自分でやってみたいと思います。 他のコード部分も、どうしてもわからないときにだけ追記で質問します。

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

CSVから抽出しようとするから難解なのでしょう。 CSVは普通にあWrokbookとしてOpenできます。 Openした後は1つだけのシートを持ったBookとして扱えるので 後はVlookupなりmatch関数でできるのではないでしょうか。 もちろんVBAで処理する場合も同様の手順でできます。

trowgum
質問者

お礼

回答ありがとうございます。 まずVlookupやmatch関数を調べてみて、またわからなくなったら 改めて質問します。

関連するQ&A