Python で win32com を使って Excel の重複行を削除する
前に作った .mxliff ファイルを Excel ファイルに出力するプログラムで
同じ内容のセグメントが複数出力されていたので
何度も同じ文を見直さなくてはいけなくて
これは重複する行を削除しないと
効率が悪いなと思って
プログラムに機能追加することにした。
Excel で .xlsx ファイルを開くと
[データ] > [重複の削除] というメニューがあって
そこで重複行を削除できるようだ。
Excel 自体にその機能があるんだから
win32com でもあるんじゃないかなと思って
とりあえず、Excel でその操作をマクロに記録してみた。
RemoveDuplicates というのが win32com にあれば
それを使うことができるが
ネットで検索してもあまりヒットしない。
「Python で Excel の重複行を削除する」と検索すると
Excel ファイルを pandas で読み込んで
drop_duplicates で削除して
Excel ファイルに書き戻すという記事があって
それだと確実にできそうだが
pandas に全部読み込んで Excel ファイルに書き戻すというのが
ちょっと無駄な感じがしたので
win32com のほうをコーディングしてみた。
実行すると Columns でエラーになる。
この書き方は Python じゃないな。
かっこで囲んでみた。
Columns は通ったが
今度は Array でエラーになる。
単純に取ってしまえばいいかなと思って
としたら正常に実行されてしまった。
xlno はすでに定義してあった(値は 2 で、範囲全体を対象とする)。
わりとあっさりできてしまった。
これで重複した行を何度もチェックする必要がなくなった。
ソースとターゲットの両方で重複を確認しているので
同じ文を違う訳し方にしているところは維持される。