VBAでCSVファイルを途中行まで読んだ後で最初の行から読み直す方法を探しています。
【例】aaa.csvというファイルに5行分のデータが入っている。
これを3行目まで読んだ後で、また1行目から読みたい。
【処理対象ファイル】
ファイル名:aaa.csv
ファイルの中身:5行
1,1,1,1
2,2,2,2
3,3,3,3
4,4,4,4
5,5,5,5
【読み込み順イメージ】
1,1,1,1
2,2,2,2
3,3,3,3
1,1,1,1 ←aaa.csvの1行目から読み直し。
2,2,2,2
3,3,3,3
4,4,4,4
5,5,5,5
現在は処理が思いつかなかったので、読みたいファイルを一度閉じてまた開いてという下記のような無駄な動作にしてしまっています。
for xxx=0 to zzz
open #ファイル番号
Do Until EOF(1)
Line Input #1, 変数
1度目に3行目が来たら抜ける
Loop
close #ファイル番号
next xxx
しかし、使用するファイルは数十MB~数百MB、Open/Closeも数千は軽く行うので、さすがにこれでは処理が遅すぎてどうにもならなくて困っています。
どなたか良いお知恵をお貸しください。
No.4
- 回答日時:
「照らし合わせつつ処理」の内容にもよりますが他の手段があります。
aaa.csvの番号とbbb.csvの番号が同じものを取り出す
というものなら、予め番号でソートしておくことで、両方のファイルを先頭から順番に読むだけで照合することができます。
例) aaaの先頭が 2 、bbbの先頭が 5 なら、 bbbには 5より小さい番号は無いので、2がbbbにあるかを調べる必要はありません。
読み進めても、 aaa=2へ戻る必要はありません。
許されるなら、CSVをSQLServer等の大量のデータに耐えられるデータベースに取り込んで、
JOIN で結合したりして、必要なデータだけ抽出してCSVへ。
そのCSVをExcelで処理、とするのがいいように思います。
回答ありがとうございます。
ソートをしておく、というのも一つの手なんですね。
勉強になります。
大容量すぎた場合はSQLServerをかませる方法もあるということも、頭に入れておきます。
ありがとうございました。
No.1
- 回答日時:
全部とりあえず読み込んだ後に3行をコピー&挿入したらダメですか?
回答ありがとうございます。
挿入したい、というわけではなくデータを確認したいのです。
処理を簡略化して書いてしまったのが原因でわかりにくくなってしまい申し訳ございません。
実際はもうひとつファイル(bbb.csv)があり、そのもうひとつのファイルを1行ずつまわしてaaa.csvと照らし合わせつつ処理をする形を取っています。
bbb.csvを1行読んで、それに対するaaa.csvの対象行が見つかったらbbb.csvを一行進めてaaa.csvをまた最初から読み込みたいという状態です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- XML PHP.laravelについて 1 2023/07/06 15:26
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
あなたにとってのゴールデンタイムはいつですか?
一週間の中でもっともテンションが上がる「ゴールデンタイム」はいつですか? その逆で、一週間でもっとも落ち込むタイミングでも構いません。 よかったら教えて下さい!
-
忘れられない激○○料理
これまでに食べたもののなかで、もっとも「激○○」だった料理を教えて下さい。 激辛、でも激甘でも。 激ウマ、でも激マズでも。
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
【VBA】テキストファイルを指定行数からの読み込み
Visual Basic(VBA)
-
ReadLineでの読み出し行を指定する
Visual Basic(VBA)
-
VBAでCSVファイルが使用中かどうかの確認
Visual Basic(VBA)
-
-
4
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
5
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
6
VBA:Openステートメントで開いたCSVファイルの特定行を削除する方法
その他(プログラミング・Web制作)
-
7
csvファイル 項目数取得
Visual Basic(VBA)
-
8
EXCELのVBAでEOFを誤認識
Visual Basic(VBA)
-
9
テキストファイルの途中行から読み込む方法について
Visual Basic(VBA)
-
10
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
11
VBでのテキストファイルへ参照の際の指定行への移動
Visual Basic(VBA)
-
12
ファイルが開かれているかどうかの判断
Visual Basic(VBA)
-
13
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
14
Access サブフォームでの選択行の取得
その他(データベース)
-
15
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
16
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
17
変数をコントロール型で使用する方法
Visual Basic(VBA)
-
18
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
19
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
20
フルパスから最後のディレクトリ名を取得したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCSVファイルの特定行を書...
-
VBAでCSVファイルを途中行まで...
-
エクセルVBA コードが同じでも...
-
VBAで巨大なファイルの途中から...
-
ExcelをCSV書き出す場合のシー...
-
動画像から静止画を取り出すには
-
ReadLineでの読み出し行を指定する
-
Monster'sの改造・・・ボスモン...
-
openした後、closeしないでプロ...
-
JavaでCSVファイルを高速に読む...
-
Perlの変数に文字数制限(容量...
-
awkスクリプトでダブルクォーテ...
-
close()で例外が投げられる理由
-
window.open でのファイル指定方法
-
perlのcdについて
-
MATLABのm-fileについて
-
ディレクトリ名を取得したい
-
PerlからのCSV出力
-
バッチファイルの作り方(CSV→...
-
Firefox で file:// で始まる U...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCSVファイルを途中行まで...
-
VBAでCSVファイルの特定行を書...
-
ExcelをCSV書き出す場合のシー...
-
エクセルVBA コードが同じでも...
-
openした後、closeしないでプロ...
-
ReadLineでの読み出し行を指定する
-
VBAで巨大なファイルの途中から...
-
JavaでCSVファイルを高速に読む...
-
perlで、後ろの行を読んで、前...
-
perlで容量の大きいCSVファイル...
-
MATLAB グローバル変数の宣言
-
Perlの変数に文字数制限(容量...
-
VB6.0でDB接続する際に切断時の...
-
エクセルマクロについて CSVフ...
-
C言語でのファイルのデータ更...
-
データファイルをプロットする(...
-
ファイルからのデータ読み込み...
-
2つのCSVファイルをマッチング
-
csvファイル改行コードの置換に...
-
行の途中のデータを置き換えたい
おすすめ情報