お世話になります。複数の連番テキストファイルの処理方法にて教えていただきたいです。
現在スペース区切りのテキストファイルで1番から~最終番まで連番で名前が付けられたファイルがあります。(data1.txt data2.txt data3.txt・・・・・data1000.txt…場合によってはdata10000.txtぐらいまで)
そのファイルの中身は、data1.txtを開くと
1 dataA dataB dataC dataD dataE ・・・ data
2 dataA dataB dataC dataD dataE ・・・ data
1000000 dataA dataB dataC dataD dataE ・・・ data
といった具合に行列形式にて格納される形となっております。実験区の数(列数)は不定であり、そのデータの行数は不定でありますが、全部のtxtファイルに同じ行数および同じ列数で入っております。(ファイル間でのデータの抜けはありません)
今回やりたい事は、エクセルに指定した列のデータを連番順に列に張り付けたいという事です。最終的処理したいデータはエクセル上に展開してグラフを作成するため、できればVBAを使い行えればと思っております。
例えば、二列目のデータのみをエクセルに抽出しろという指示を出すと
A列には必ずdata1.txtの1列目を張り付けて、B列にはdata1.txtの2列目を張り付けて、C列にはdata2.txtの2列目を張り付けて、D列にはdata3.txtの2列目を張り付けてといった具合です。
エクセルにこだわる理由としては、使用するコンピュータのデータは持ちだすことは出来ず、新規ソフトのインストールも禁止のPCであるためエクセル2010内にあるVBAしかプログラム作成ツールがないからです。(cmdはユーザーからは使えないように設定されています。)
現在は年内中にどうにかしなければならないために手作業で展開して張り付けてるのですが、いかんせんファイルも大きく、はかどっていないのが現状です。
当方、エクセル内に展開したデータの抽出などに関してのVBAは組めるのですが、外部データ参照した経験が無く、作成方法が思いつきませんでした。勉強しておけばと後悔中です。
今回は一応100万行以内に収まっているためいきなりエクセルが対応できると思うのですが、今後200万行を超えてくるのが確定しているため、上記でエクセルに展開というところは直接新規テキストファイルに並べるという方がありがたいですが、こちらは可能なのでしょうか?(その集計ファイルの名前は任意でつけれるともっと嬉しいです)
わがままなお願いなのはわかっておりますが、受け入れてくださるとありがたいです。
No.2
- 回答日時:
(´・ω・`)?
簡素化すると、DATA1.txtからはA列、DATE2.txtからはB列にしたいという事でしょうか。
この場合、DATA1.txtを取り込んだ後、DATA2.txtをDATA1.txtで埋めたセルの右の列へ取り込めばよい。
そして必要な列をデータとすればいいという事なんですけど...。
このやり方では列数が16384列では足りないという事でしょうか。
そうであれば、シートごとに取り込んで必要な列だけを別に設けたシートへコピーすれば良いと思うんです。
全部Excelに読み込んでしまえば、あとは何とでもできるのではありませんか?
No.1
- 回答日時:
>最終的処理したいデータはエクセル上に展開してグラフを作成するため、
ええと、それならデータの列を指定するだけでグラフを作成できると思うのですが、なにか都合の悪いことがあるのでしょうか。
外部データをインポートする形にしても良いですし、(「データ」→「テキストファイル」で空白をセパレータとして設定して取り込む)
テキストデータなのでそのまま取り込み、「区切り位置」機能で列に分ける、(上のインポートと同じ処理)
…というやり方で良いと思いますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Java 動かなくなったのでJavaソースを手直しお願いします。 2 2022/04/30 05:35
- Excel(エクセル) ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存 2 2022/04/18 13:15
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA指定行削除
-
VBA一覧取得 再投稿
-
VBAコンボボックスで選択した値...
-
エクセルVBAについて
-
【ExcelVBA】値を変更しながら...
-
FileCopy時のエラー
-
VBA 複数のエクセルから一つの...
-
VBA ユーザーフォーム ボタンク...
-
コードを直していただきたいで...
-
2つのマクロでチェックボックス...
-
VBAに詳しい方教えてください。
-
ExcelのVBAコードについて教え...
-
VBA listBoxについて
-
VBA実行後に元のセルに戻りたい
-
Vba 実数および実数タイプの変...
-
エクセルVBAについて
-
現在のブックを閉じないで、マ...
-
Excel VBA 定義されたプロージ...
-
エクセルのマクロについて教え...
-
Excelのマクロについて教えてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 定義されたプロージ...
-
Excel-VBAのmsgBox()の不思議
-
【VBA】マクロの入ったファイル...
-
VBA 複数条件の分岐処理の上手...
-
現在のブックを閉じないで、マ...
-
VBAで各列の"+"と"o"の合計数を...
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ユーザーフォームに別シートか...
-
エクセルのマクロについて教え...
-
ExcelVBA シート名を複数セルか...
-
エクセルのマクロについて教え...
-
VBA listBoxから
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
おすすめ情報
補足いたします。
data1.txt data2.txt data3.txt・・・・・data1000.txt…場合によってはdata10000.txt
というのは、数値解析を行ったデータであり、1列目に対する時刻歴データが入っております。
例えば、data1.txtの一列目は対応するとある座標の名称であり、2列目には水平方向の変位がかかれており、3列目には鉛直方向の変位がかかれているといった具合です。4列目以降にも同様に解析結果が記載されております。
そのため、data1.txtの1というのは解析ステップ時刻歴データ1番目、data2.txtの2というのは解析ステップ時刻歴データ2番目を表しております。data1からdata1000やdataの末尾までのデータを解析ステップ時刻歴データ1から解析ステップ時刻歴データ最後までを列方向に並べて、グラフを書いてこそ意味が出てきます。
少々書き方がまずかったようですね。
例えばdata1.txtのファイルの中には
座標名称 水平変位 鉛直変位 水平速度 鉛直速度 水平加速度 鉛直加速度
の順番で並べられています。同様data2.txt data3.txtといったファイルの中にも同じ順番で記載されてます。例えば、data10.txtの 10は10ステップ目の解析数値を一纏めにしてあるものなのです。行いたいことは何百何千のファイルから水平加速度のみをステップ毎に横並びにしたファイルを作りたいということです。同様に水平変位のみ鉛直変位のみと解析結果ごとのになったファイルを作りたいという内容です。のため、行方向には座標名称、列方向には座標名称に対するステップ毎の解析結果が載っていて欲しいという案件であります。座標名称が200万行以上並ぶ事が予測されるのでvbaをエンジンとしたテキストファイル出力プログラムがありがたいです。
今後の計画を加味して計算してみました。最大150万行でdataがdata6000.txtとなる予想であります。
data1.txtあたりの大きさは最大の一列文字数(空白含む)は10バイトとなるので、一行サイズが
10バイト×10列×150万行=150MB
でありました。
作成しようとするファイルは
最大の一列文字数は10バイトとなるので、一行サイズが
10バイト×6000ファイル=60,000バイト
それが150万行のため
60,000バイト×1.500,000=9.0E+10バイト=90Gバイト
となりました。
ファイルあたり制限が2GBということならば100ファイルずつまでは何とかなるという計算ですか。それでも実現できたらずいぶん楽になりそうです。
メインメモリーは256GBあり有効メモリーは192GBなのでメモリーはおそらく余裕があると思われます。
(なおHDDは150TBあります)
よくよく考えれば、解析プログラムのベース言語がrubyなので、ruby動きますね・・・。自身がrubyをプログラム言語として使ったことがないから失念していました。すみません。
cmdはwinキー+Rを押して、ファイル名指定からの実行では起動しないようにされているという状態です。(過去にこれでユーザーミスで痛い目に見たようで自分からは使えないようになっているとのことです。)
cmdはwinキー+Rを押して、ファイル名指定からの実行からcmdを入れた場合は、起動権限がない旨が表示されますの間違いでした。
Rubyバージョンはディレクトリを探してみると2.0が入っていることになっております。
改善版、最高です。めちゃくちゃ早い。
年明けに本解析を始まるため、非常にありがたいです。
先ほどお礼を書いたため、補足の部分に記載させていただいています。
これ場手作業で延々と張り付ける作業から分析作業だけに集中できるようになります。
本当にありがとうございました。