- ベストアンサー
VBAでEXCELファイルからデータを抽出する方法
VBAで、サーバーにある大量のデータを含むCSVファイルから、ある条件に一致するデータを抽出する方法を教えてください。 (例) コード 名称 在庫数 その他データ A12300 ○○○ 999 XXXXXXXX A12400 ○○○ 999 XXXXXXXX B12500 ○○○ 999 XXXXXXXX B11100 ○○○ 999 XXXXXXXX C11200 ○○○ 999 XXXXXXXX 上記データからコードの一桁目が「A」と「C」のものを抽出する場合の、VBAを教えてください。 抽出後、EXCELの別ファイルに上書き保存します。 デイリーで処理をするので、VBAで自動化したいのです。 よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 参照URLの下の方に、代替関数があります。 buf = Split(tmp, ",") 3番目を抽出したいなら、buf(3) 5番目を抽出したいなら、buf(5) になるかと思います。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
>データを抽出する方法を・・ エクセルファイルを作るのか、どちらか不明だが、 条件に合うレコードを抜き出したCSVファイルを作るのなら Sub test01() Dim n As Long, buf As Variant, tmp As String, ctmp As String n = FreeFile() p = FreeFile() + 1 Open "C:\Documents and Settings\OTO\My Documents\Test01.txt" For Input As #n Open "C:\Documents and Settings\OTO\My Documents\Test02.txt" For Output As #p Do Until EOF(1) Line Input #n, inputa fld = Split(inputa, ",") cmp = Left(fld(0), 1) 'A列の場合。C列ならfld(2) If cmp = "a" Or cmp = "c" Then '大文字ならA,C Print #p, inputa End If Loop Close #n Close #p End Sub でしょう。
お礼
ありがとうございます! 自宅ではできました! しかしながら、会社のPCではエクセルのバージョンが古い為?SPLIT関数が使用できません。 その場合はどうしたらいいでしょう? また、3列めと5列目のデータだけを抜き出すとすれば、どう記述すればいいでしょうか? 誠に申し訳ないのですが、ご教示願います。
- kokorone
- ベストアンサー率38% (417/1093)
返事が遅れて申し訳ありません。 C列って、先頭から何文字めでしょうか? ctmp =Left(tmp,1) を次のように変えます。 10文字目ならば、 ctmp =Mid(tmp,10,1) これは、10文字目から1文字を取り出すという命令です。
お礼
ありがとうございます! 自宅ではできました! しかしながら、会社のPCではエクセルのバージョンが古い為?SPLIT関数が使用できません。 その場合はどうしたらいいでしょう? また、3列めと5列目のデータだけを抜き出すとすれば、どう記述すればいいでしょうか? 誠に申し訳ないのですが、ご教示願います。
- kokorone
- ベストアンサー率38% (417/1093)
Sub Sample22() Dim n As Long, buf As Variant, tmp As String,ctmp As String Dim idx As Integer,cnt As String n = FreeFile Open "D:\Test.txt" For Input As #n idx = 1 Do Until EOF(1) Line Input #n, tmp buf = Split(tmp, ",") ctmp =Left(tmp,1) If ctmp = "A" Or ctmp = "C" Then cnt ="A" & idx & ":D" & idx Worksheets("Sheet1").Range(cnt) = buf idx = idx +1 EndIf Loop Close #n End Sub テキストデータで読み込み、1文字目(左から1番目の文字)をチェックします。
補足
ありがとうございます! 大体はできました。 しかしながら、実はコードが「C列」にあるのです。 その場合の記述はどのようにすれば?
お礼
ありがとうございました! 結局、少し違う方法でできました。 が、大変参考になりました。 お二人ともありがとうございました。