[[20190611100020]] 『大量の不要な行を削除する効率的なやり方』(うらみぶし) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『大量の不要な行を削除する効率的なやり方』(うらみぶし)

列Aに文字列、列Bから列ASまで数字がはいっている1万行以上のデータの処理。
データベースから自動生成されており、その中に「列Bから列ASまでのセルの値がすべて0」の行が大量に含まれている。
集計上意味がないデータなので、この行(すべてが0の行)を削除したい。

現在は手作業で対応。
エクセルの以前のバージョン(2003?)ではフィルタを使用して、列Bから順番に値が0のものを抽出して列Zまで抽出し終わったら行選択して行削除していた。
現在のバージョン(2016)では列の数が多くなると適切に削除できない(0以外の値が含まれる行も削除されてしまうことがある)ため、列Bから順番に昇順(もしくは降順)にソートを行い、一旦列ASまでソートしたあと、かたまりとなった”集計上意味のない数千行”を目視+手動選択で削除している。(わかりにくい表現ですみません)
作業に要する時間約10分。

ルーチンなので、短縮したい。
できればマクロで自動化したい。
お知恵ありますでしょうか?

< 使用 Excel:Excel2019、使用 OS:Windows10 >


どれか単列、または複数列で全部0になるものを抽出できるのであれば、SQL文にWHERE条件を加えて、0な行は抽出対象から外してしまえば、削除にかかる時間だけでなく、出力時間の短縮も図れるかと思います。 1万行中の数千行ですから、かなり効果はあるかと。
(???) 2019/06/11(火) 11:20

 手作業の案ですが、

 A列とB列の間に1列挿入
 B2 =COUNTIF(C2:AT2,"<>0")>0
 データ下端までフィルダウン
 B列全体をコピーしてそのまま値だけ貼り付け (←以降の処理が多少は速くなると見越しての数式除去)
 B列で昇順に並べ替え (←行の削除そのものに掛る時間を短縮するのにも効果的と思います)
 B列が「FALSE」の行を一括削除 (←オートフィルタで絞り込むか、検索で「TRUE」の先頭に行ってそこから上の行全部消す)
 B列を削除

 これなら10分は掛らないと思いますがどうですか?

(白茶) 2019/06/11(火) 11:32


とりいそぎ白茶さんの手法やってみました。
2分もかからず・・
これでマクロも試してみます。

ありがとうございました
(うらみぶし) 2019/06/11(火) 14:07


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.