csvファイルの内容は、
"ID_A","ID_B","C","D","E" の5列でできたCSVがあります。
1行目は項目名です。
※デフォルトではShift-JIS、改行LFですが、可変可能です。
IDは13桁で、アルファベット大文字小文字、数字が入り混じっています。
ID_AとID_Bはほぼ同一なのですが稀に異なる場合があるのでそれだけ抽出したいのです。
CSVを選択して、ID_AとID_Bが異なる場合のみシートに書き出すようにするには
どうしたらよいでしょうか?
問題は、このCSVは300万行以上あるのでExcelシートで開くには分割する必要があり、
マクロで必要行だけ抽出できれば助かるのですが。。。
※また、最下行には7行のフッター情報が記載されており無視する必要があります。
よろしくお願いいたします。
A 回答 (13件中11~13件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ん?
普通にテキストファイルに対して、行単位の処理を行って「別のファイルに抽出」するようにすれば良いだけで、
そこにExcelやらVBAは不要だよ。
例えば、souce.csv から、「abc」の文字を含む行だけを取り出したいなら、
コマンドプロンプトで、
>find "abc" souce.csv >> make.scv
とすれば、make.csv ファイルに「abc」のテキストを含んだ行だけが抽出される。
いや、VBAの制限なんて無い。マジで。
・・・本題・・・
1カラム目(ID_A)と2カラム目(ID_B)が異なる行だけを抽出したいということなので、ちょっと工夫が必要。
findを使う時と同様にコマンドプロンプトの、
「forコマンド」の /f とそのオプションを使って1行をカラムで分けてしまおう。
>for /f "tokens=1,2,3,4,5 delims=, ” %i in ( souse.csv ) do ( if not %%i==%%j ( @echo %%i,%%j,%%k,%%l,%%m >> make.csv ) )
こんな感じになる。
何をやっているのかを、コマンドプロンプトの上で /? を付けて起動して【必ず】使い方を確認してください。
悪戯で元のファイルを消してしまうようなコマンドを示されたらアウトだろ?
>for /?
これでコマンドの使い方を確認できる。
ポイントは delims で区切り文字にカンマを指定し、tokens で5カラムあることを宣言してしまうということ。
あとは1カラム目と2カラム目が等しくなければカンマで区切った文字列を make.csv に出力するという単純作業。
(これ、環境変数は %i しか宣言してないけど、そこから連続して5つ使うことを tokens で指定しているので、いきなり %j とか出てきても問題ない)
こんな感じで、コマンド1行で済ませられるんだ。
VBAでやってたら凄く面倒だよ。
・・・余談・・・
いつもなら「自分で作れるようにがんばれ」と言うところですが、
流石にこれを自力で作れとは言わない。
急いでいるということなんで、基礎が無い人には無理な話だからね。
代わりにVBAが分かるという前提なので、正解を書いてそれを確認させるようにしています。
あと、300万行ってことなんで処理に時間はかかる。
echoをオフってるのでサイレントに処理が進むため、ハングアップしたような錯覚に陥りますが、慌てないでください。
20行程度の試験用のファイルを作って、まずはそれで試してみることを勧めます。
DOSプロンプトでもそんな工夫ができるのですね。ちょっと試したらファイル生成できましたが、ちょっと求める結果ではなかったのでVBAの方へ傾いてますが、
後程再度試してみたいと思います。
勉強になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) PowerQueryで行数の指定はできますか? 2 2022/08/26 11:13
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- その他(プログラミング・Web制作) DOSコマンドに詳しい方、お知恵をお貸しください 5 2022/11/04 20:55
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
csvファイルを開かずに文字を検索し行を抽出したい
Visual Basic(VBA)
-
100万件越えCSVから条件を満たす行のみ抽出し、編集してエクセルシートに出力するには?
Ruby
-
CSVファイルの指定列だけを読み込んでEXCELに表示したい
Excel(エクセル)
-
-
4
CSVファイルの特定行の削除
Visual Basic(VBA)
-
5
100万行のCSVを10万行ずつのファイルに区切るには?(UTF-8、改行LF)
Excel(エクセル)
-
6
【VBA】テキストファイルを指定行数からの読み込み
Visual Basic(VBA)
-
7
エクセルVBA C列に特定の文字列を含む行のみを抽出し、一つのExcelにまとめたい。
Excel(エクセル)
-
8
<csv>複数条件で検索・抽出し、別シートに順次保存したい
Visual Basic(VBA)
-
9
VBAマクロ実行時エラーの修正について
Visual Basic(VBA)
-
10
エクセルVBA 2千万行のCSVファイルを開きたい
Visual Basic(VBA)
-
11
エクセルVBAでCSVファイルの指定行データの取得
Excel(エクセル)
-
12
csvファイルのデータの一部を取り出したい
Visual Basic(VBA)
-
13
VBAでの100万行以上のデータの取り込み
その他(プログラミング・Web制作)
-
14
VBA:Openステートメントで開いたCSVファイルの特定行を削除する方法
その他(プログラミング・Web制作)
-
15
[エクセル VBA]テキストファイルから特定の行のみを抜き出したい 下記のようなテキストファイルから
Excel(エクセル)
-
16
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
17
テキストファイルから特定の文字列が入った行を取得したいです。 例えば下記のような文が記載されたテキス
Visual Basic(VBA)
-
18
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
19
Rangeメソッドは失敗しました。globalオブジェクトについて
Excel(エクセル)
-
20
エクセルでエラーが出て困っています。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ExcelVBA】300万件越えCSVか...
-
ダブルコーテーション付きでCSV...
-
VBA csvファイルのデータを...
-
Excelマクロ 空白セルを無視し...
-
pythonでリストをCSVに出力する...
-
vbaマクロについて 次のような...
-
複数のファイルをまたぐエクセ...
-
バッチコマンドで指定行を抽出...
-
【C#】 csvファイルをバイナリ...
-
EXCEL→CSV保存時のダブルクォー...
-
CSVで余計な空行が入る
-
エクセルの任意のシートをcs...
-
VBAでcsvファイルもシートもあ...
-
fortranでデータの抜き出しをし...
-
バッチ処理 特定の文字以降を...
-
[コンパイルエラー 修飾子が不...
-
pythonのエラーについて
-
fortranでNAのあるデータを読み...
-
Access VBA エラー2448について
-
VBA テキストボックスを選択状...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロ 空白セルを無視し...
-
【ExcelVBA】300万件越えCSVか...
-
VBAでcsvファイルもシートもあ...
-
ダブルコーテーション付きでCSV...
-
EXCEL→CSV保存時のダブルクォー...
-
VB.netでShellExecuteがしたい
-
VBAで複数のCSVからレコードセ...
-
StringGridの中身をCSV形式で保...
-
CSVで余計な空行が入る
-
複数のファイルをまたぐエクセ...
-
pythonでリストをCSVに出力する...
-
エクセルの任意のシートをcs...
-
VBA csvファイルのデータを...
-
ブラウザ上でcsvファイルの編集
-
Sikulix2.0.5(Jython2.7.3)でcs...
-
vbaマクロについて 次のような...
-
ファイル名を変数で書きこむfwr...
-
pythonのこのエラーがわかりません
-
バッチコマンドで指定行を抽出...
-
シート内容の文字列を置換してV...
おすすめ情報