uoz 作業日記

様々な作業の記録を共有するブログです。

EXCEL VBA エクセル シートのマッチングの高速化2 インデックス?をつくる

追記
結局もっと簡単な方法があった....
うーむ俺すごいあほだった - uoz 作業日記



http://uozias.hatenablog.com/entry/2014/04/01/EXCEL_VBA%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E9%AB%98%E9%80%9F%E5%8C%96_%E3%82%B7%E3%83%BC%E3%83%88%E5%90%8C%E5%A3%AB%E3%81%AE%E3%83%9E%E3%83%83%E3%83%81%E3%83%B3%E3%82%B0_
この続き、というか同じようなネタです。


前回は、エクセルで2つのシートをマッチングするマクロを高速化するのに、両方をソートしろという話だった。

それでは、ソートできないシートの場合はどうするのか?


エクセルはデータベースというだけではなく、文書作成ソフト的な面があり、セルの並びに意味がある場合があって、並び順を変えられないことがある。

http://allabout.co.jp/gm/gc/297737/
この記事のように、エクセルをワード的に使ってるパターンだ。

ここまでの話じゃなくても、ソートしてはいけないときはどうするか。

対象のシートをコピーし、片方をそのまま保存して、もう片方をソートして、
これを読み込んで
ソートした場合の行番号と、ソートしてない時の行番号を対応づける配列を作ればよい。

あとは、マッチングしたいシート2つをソートした場合と同じだ。
ただし、ソートできないシートにアクセスするときは、行番号を対応づける配列を通してアクセスする。

これについて、言葉で説明してもよくわからない人もいそうなので、そのうちサンプルマクロを挙げようと思う。