部分置換えと全置換えの高速化について | |
---|---|
[195398] 部分置換えと全置換えの高速化について- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ ど素人 -(2022/11/23(16:00)) □U R L/ VBA初心者です。 ご指導頂けたら嬉しいです。 A1〜HB150のセルの中に空白やそれそれの商品の名前が入っているリストになって います。 セル内の部分置き換えや全置換えをしています。 Excel2003の時は気にならなかったのですが、Excel2013になると下記のマクロで 置換えをするフリーズの様に動かなくなりようになりました。 5分近く放置していると処理が終わっているので単純に負荷が掛かりすぎていると 思われます。 (Excel2003時は1分掛からなかった) @ Excel2013でも高速化出来ないでしょうか。 A 現在は35個程度ですが表により、多くなったり少なくなったりします。 現状はコード上で「置き換える元」と「置き換え後」の商品名を変更後マクロ を実行しています。 コード修正ではなく、別のシートのA列に元、B列に変換後の様な一覧表のセル を参照して変換出来きませんか。 マクロ記録で記録した内容を自分なりに修正して現在使用しています。 良い方法をご教授下さい。 Sub 置換() Cells.Replace What:="秋田", Replacement:="" Cells.Replace What:="岩手", Replacement:="" Cells.Replace What:="沖縄", Replacement:="" Cells.Replace What:="宮城", Replacement:="" Cells.Replace What:="山形", Replacement:="" Cells.Replace What:="栃木", Replacement:="" Cells.Replace What:="群馬", Replacement:="" Cells.Replace What:="新潟", Replacement:="" Cells.Replace What:="茨木", Replacement:="" Cells.Replace What:="埼玉", Replacement:="" Cells.Replace What:="千葉", Replacement:="" Cells.Replace What:="名古屋", Replacement:="" Cells.Replace What:="静岡", Replacement:="" Cells.Replace What:="山梨", Replacement:="" Cells.Replace What:="三重", Replacement:="" Cells.Replace What:="東京都中央区", Replacement:="中央区" Cells.Replace What:="東京都杉並区", Replacement:="杉並区" Cells.Replace What:="北海道札幌市", Replacement:="札幌" Cells.Replace What:="沖縄県鹿児島市", Replacement:="鹿児島市" Cells.Replace What:="日産スカイライン", Replacement:="スカイライン" Cells.Replace What:="日産センチュリー", Replacement:="センチュリー" Cells.Replace What:="トヨタマークU", Replacement:="マークU" Cells.Replace What:="文房具コンパス", Replacement:="コンパス" Cells.Replace What:="文房具三角定規", Replacement:="三角定規" Cells.Replace What:="文房具消しゴム", Replacement:="消しゴム" Cells.Replace What:="文房具はさみ", Replacement:="はさみ" Cells.Replace What:="文房具ものさし", Replacement:="物差し" Cells.Replace What:="調理器具鍋", Replacement:="鍋" Cells.Replace What:="調理器具ざる", Replacement:="ざる" Cells.Replace What:="調理器具まな板", Replacement:="まな板" Cells.Replace What:="調理器具蒸し器", Replacement:="蒸し器" Cells.Replace What:="洋服コート", Replacement:="コート" Cells.Replace What:="洋服ロングコート", Replacement:="ロングコート" Cells.Replace What:="洋服スカート", Replacement:="スカート" Cells.Replace What:="洋服ワイシャツ", Replacement:="ワイシャツ" End Sub この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[195399] Re[1]: 部分置換えと全置換えの高速化について- ■記事引用/メール受信=OFF■ □投稿者/ MK -(2022/11/23(17:02)) □U R L/ 2003は65,536行、256列しかありませんでした。 2007以降は、10,48,576行、16,384列に増えました。 セル範囲をA1〜HB150に限定するだけでもだいぶ違って くると思います。 |
[195400] Re[2]: 部分置換えと全置換えの高速化について- ■記事引用/メール受信=OFF■ □投稿者/ MK -(2022/11/23(17:08)) □U R L/ >Cells.Replace What:="秋田", Replacement:="" Cellsは2003でも2007以降でもシートの全セル範囲が 対象になります。 ですので、2003の対象セル数は65536×256=16,777,216セル、 2007以降は1,048,576×16,384=17,179,869,184セルになります。 |
[195401] Re[2]: 部分置換えと全置換えの高速化について- ■記事引用/メール受信=OFF■ □投稿者/ ど素人 -(2022/11/23(17:15)) □U R L/ MK様 ありがとうございます。 元々2003を使用していましたが、現在は2013を使用しています。 ご指摘の >2007以降は、10,48,576行、16,384列に増えました。 増え事により2013に乗り換えて使用していたところ5分程度掛かり、使用中フリー ズ状態になるのでタスクで強制終了していました。 ある時放置していたら置換えが終わっているので、時間を計測したら5分位掛かると 終了出来ると分かりました。 使用出来るセルが増えた事による遅延だとは思っているのですが。。。 必ず150行と限らないので指定をせずReplacementで置き換えていました。 また、A1〜HB150のセルの中には空白やNullも存在していることもあり、ちょっと 私には力量不足でした。 とりあえず300行くらいにして試してみます。 |
[195402] Re[3]: 部分置換えと全置換えの高速化について- ■記事引用/メール受信=OFF■ □投稿者/ MK -(2022/11/23(17:32)) □U R L/ >必ず150行と限らないので Selection →選択セル範囲 UsedRange →使用セル範囲 Endプロパティ →最終行や最終列を取得 などセル範囲を限定する方法は いくらでもあります。 |
[195403] Re[4]: 部分置換えと全置換えの高速化について- ■記事引用/メール受信=OFF■ □投稿者/ MK -(2022/11/23(17:34)) □U R L/ CurrentRegion というのもありましたね。 |
[195404] Re[5]: 部分置換えと全置換えの高速化について- ■記事引用/メール受信=OFF■ □投稿者/ MK -(2022/11/23(17:37)) □U R L/ >Cells.Replace What:="沖縄県鹿児島市", Replacement:="鹿児島市" 少なくともこれは完全に間違いですね。 鹿児島市は鹿児島県にあります。 |
[195408] Re[6]: 部分置換えと全置換えの高速化について- ■ / 記事引用/メール受信=OFF■ □投稿者/ ど素人 -(2022/11/24(02:27)) □U R L/ MK様 ご教授ありがとうございます。 解決しました。 |
このトピックに書きこむ |
---|