アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。複数の連番テキストファイルの処理方法にて教えていただきたいです。
現在スペース区切りのテキストファイルで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万行を超えてくるのが確定しているため、上記でエクセルに展開というところは直接新規テキストファイルに並べるという方がありがたいですが、こちらは可能なのでしょうか?(その集計ファイルの名前は任意でつけれるともっと嬉しいです)

わがままなお願いなのはわかっておりますが、受け入れてくださるとありがたいです。

質問者からの補足コメント

  • 補足いたします。
    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から解析ステップ時刻歴データ最後までを列方向に並べて、グラフを書いてこそ意味が出てきます。

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/12/25 22:15
  • 少々書き方がまずかったようですね。
    例えばdata1.txtのファイルの中には
    座標名称 水平変位 鉛直変位 水平速度 鉛直速度 水平加速度 鉛直加速度
    の順番で並べられています。同様data2.txt data3.txtといったファイルの中にも同じ順番で記載されてます。例えば、data10.txtの 10は10ステップ目の解析数値を一纏めにしてあるものなのです。行いたいことは何百何千のファイルから水平加速度のみをステップ毎に横並びにしたファイルを作りたいということです。同様に水平変位のみ鉛直変位のみと解析結果ごとのになったファイルを作りたいという内容です。のため、行方向には座標名称、列方向には座標名称に対するステップ毎の解析結果が載っていて欲しいという案件であります。座標名称が200万行以上並ぶ事が予測されるのでvbaをエンジンとしたテキストファイル出力プログラムがありがたいです。

    No.2の回答に寄せられた補足コメントです。 補足日時:2016/12/26 00:37
  • 今後の計画を加味して計算してみました。最大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あります)

    No.3の回答に寄せられた補足コメントです。 補足日時:2016/12/26 10:50
  • よくよく考えれば、解析プログラムのベース言語がrubyなので、ruby動きますね・・・。自身がrubyをプログラム言語として使ったことがないから失念していました。すみません。

    cmdはwinキー+Rを押して、ファイル名指定からの実行では起動しないようにされているという状態です。(過去にこれでユーザーミスで痛い目に見たようで自分からは使えないようになっているとのことです。)

    No.4の回答に寄せられた補足コメントです。 補足日時:2016/12/26 12:19
  • cmdはwinキー+Rを押して、ファイル名指定からの実行からcmdを入れた場合は、起動権限がない旨が表示されますの間違いでした。

    Rubyバージョンはディレクトリを探してみると2.0が入っていることになっております。

    No.6の回答に寄せられた補足コメントです。 補足日時:2016/12/26 13:46
  • うれしい

    改善版、最高です。めちゃくちゃ早い。
    年明けに本解析を始まるため、非常にありがたいです。
    先ほどお礼を書いたため、補足の部分に記載させていただいています。

    これ場手作業で延々と張り付ける作業から分析作業だけに集中できるようになります。
    本当にありがとうございました。

    No.12の回答に寄せられた補足コメントです。 補足日時:2016/12/28 00:32

A 回答 (12件中11~12件)

(´・ω・`)?


簡素化すると、DATA1.txtからはA列、DATE2.txtからはB列にしたいという事でしょうか。
この場合、DATA1.txtを取り込んだ後、DATA2.txtをDATA1.txtで埋めたセルの右の列へ取り込めばよい。
そして必要な列をデータとすればいいという事なんですけど...。

このやり方では列数が16384列では足りないという事でしょうか。
そうであれば、シートごとに取り込んで必要な列だけを別に設けたシートへコピーすれば良いと思うんです。
全部Excelに読み込んでしまえば、あとは何とでもできるのではありませんか?
この回答への補足あり
    • good
    • 0

>最終的処理したいデータはエクセル上に展開してグラフを作成するため、


ええと、それならデータの列を指定するだけでグラフを作成できると思うのですが、なにか都合の悪いことがあるのでしょうか。

外部データをインポートする形にしても良いですし、(「データ」→「テキストファイル」で空白をセパレータとして設定して取り込む)
テキストデータなのでそのまま取り込み、「区切り位置」機能で列に分ける、(上のインポートと同じ処理)
…というやり方で良いと思いますよ。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!