Excelファイルの中は以下の3つのシートがあります。
シート名:txtデータ ・・・txtファイルのデータを100万行コピーペーストしたもの
シート名:判定 ・・・txtファイルのデータを計算し並び替えるもの
シート名:判定後データ ・・・判定シートで並び替えたデータをコピーペーストする
以下はそれぞれのシートの詳細と、マクロの詳細になります。
■シート名:txtデータ
||A|B|C|D|E|F|G|
|:--|:--:|--:|
|1|101|203|204|205|206|
|2|101|203|204|205|207|
|3|101|203|204|205|208|
|4|101|203|204|205|209|
|||||||||
|999999|134|219|221|222|223|
|1000000|134|220|221|222|223|
行5~行999998までは同様の内容が続き、省略してあります。
列Fと列Gは空欄になっています。txtファイルの中には列Fと列Gに値が入っているものも例外的にあります。
■シート名:判定
||A|B|C|D|E|F|G|H|・・・|AOO|AOP|
|:--|:--:|--:|
|1|
|2|
|3||||
|4|101|203|204|205|206|||数式|・・・|数式|1|
|5|101|203|204|205|207|||数式|・・・|数式|1|
|6|101|203|204|205|208|||数式|・・・|数式|1|
||||||||||・・・||~~|
|999|101|203|213|216|223|||数式|・・・|数式|1|
|1000|101|203|213|217|218|||数式|・・・|数式|1|
列I~列AONまでは数式が記述されており、省略してあります。
行7~行998までは同様の内容が続き、省略してあります。
列AOPは列A~列Gに入力されたデータをもとに、列H~列AOOで計算を行い、0か1で判定を行うものです。
■シート名:判定後データ
このシートは空の状態です。
■マクロの内容
順番 | シート名 | 処理内容 |
---|---|---|
1 | txtデータ | A1~G1000までをコピーする |
2 | 判定 | A4を選択、コピーしたデータをペーストする |
3 | 判定 | A4~AOP1003 までを選択する |
4 | 判定 | 並び替え AOP昇順、A昇順、B昇順、C昇順、D昇順、E昇順、F昇順、G昇順 |
5 | 判定 | AOP列の値が1の行のA~G列をコピーする |
分岐:AOPの値が1の行がないときは処理7へスキップする | ||
6 | 判定後データ | A1を選択し、コピーしたデータをペーストする(ループ1回目以降は初回のデータの下の行に貼り付け) |
7 | txtデータ | A1~G1000までを削除する(上方向へシフト) |
8 | 1に戻る(1000回ループ) | |
9 | 処理を終了する | |
処理量が多くてマクロが動かない場合も想定されます。また、逆に処理量を多くしたほうが効率が良い場合もあります。 | ||
順番1でコピーする行数を増減させてループ数を調整するなど、変更が容易なようにコメントを入れていただけると助かります。 | ||
なお、txtファイルのファイル数は26個あり、行数は合計で約9060万あります。 | ||
データが多すぎると動作が重くなることが想定されますので、100万行ずつシートにコピーする方法をとります。 |
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。