![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
csvファイルを開かずに文字を検索し行を抽出したい
Visual Basic(VBA)
-
100万件越えCSVから条件を満たす行のみ抽出し、編集してエクセルシートに出力するには?
Ruby
-
CSVファイルの指定列だけを読み込んでEXCELに表示したい
Excel(エクセル)
-
-
4
エクセルVBA C列に特定の文字列を含む行のみを抽出し、一つのExcelにまとめたい。
Excel(エクセル)
-
5
CSVファイルの特定行の削除
Visual Basic(VBA)
-
6
Excel マクロ VBA プロシージャが大きすぎます のエラー対処方法
Visual Basic(VBA)
-
7
<csv>複数条件で検索・抽出し、別シートに順次保存したい
Visual Basic(VBA)
-
8
VBAマクロ実行時エラーの修正について
Visual Basic(VBA)
-
9
VBA:Openステートメントで開いたCSVファイルの特定行を削除する方法
その他(プログラミング・Web制作)
-
10
[エクセル VBA]テキストファイルから特定の行のみを抜き出したい 下記のようなテキストファイルから
Excel(エクセル)
-
11
エクセルでファイルを開かずに文字を検索し、行を抽出したい
Excel(エクセル)
-
12
【VBA】テキストファイルを指定行数からの読み込み
Visual Basic(VBA)
-
13
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
14
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
15
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
16
エクセルVBAでCSVファイルの指定行データの取得
Excel(エクセル)
-
17
テキストファイルから特定の文字列が入った行を取得したいです。 例えば下記のような文が記載されたテキス
Visual Basic(VBA)
-
18
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
19
【VBA】テキストファイルから特定の文字列を抽出して、エクセルに出力する
Excel(エクセル)
-
20
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IF文、条件分岐の整理方法
-
VBAコードのインデント表示
-
時間短縮のために、テキストフ...
-
Excel VBA 選択範囲の罫線色の...
-
マクロの記録を使用したマクロ...
-
VB.net(VB)で、フォームにExcel...
-
IEを使わないでhtmlテキストを...
-
Excelセルに入力された文字の色...
-
VBAなくなるの?
-
【ExcelVBA】値を変更しながら...
-
VBA 別ブックから条件に合うも...
-
VBAの質問です、複数のテキスト...
-
エクセルのマクロについて教え...
-
ワードVBA どの表か知ることは...
-
エクセルのマクロについて教え...
-
エクセルのVBAコードについて教...
-
エクセルのマクロについて教え...
-
エクセルのVBAコードについて教...
-
エクセルのマクロについて教え...
-
ExcelVBA修正のお願い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【ExcelVBA】300万件越えCSVか...
-
Excelマクロ 空白セルを無視し...
-
ダブルコーテーション付きでCSV...
-
VBAでcsvファイルもシートもあ...
-
ファイル名を変数で書きこむfwr...
-
VB.netでShellExecuteがしたい
-
EXCEL→CSV保存時のダブルクォー...
-
複数のファイルをまたぐエクセ...
-
pythonでリストをCSVに出力する...
-
【C#】 csvファイルをバイナリ...
-
VBAで複数のCSVからレコードセ...
-
rubyを用いたCSVファイルの分割...
-
CSVデータの文字列置換
-
エクセルVBA Application.GetSa...
-
パイソン文法で ファイルオープ...
-
Rubyを使用してcsvファイルを処...
-
vbaマクロについて 次のような...
-
CSVファイルの比較と結果の取得...
-
fortranでデータの抜き出しをし...
-
コマンドプロンプトでファイル...
おすすめ情報