Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
置換に時間がかかる
投稿日時: 20/01/17 14:29:04
投稿者: satoniwa

検索と置換に関する質問です。
例えばあるシート(A)のセルに日本語の文字が文字数で50語くらいあります。
別に「データ」というシートがあって、そこに「検索文字をA列」に、「置換文字をB列」配置しておきます。
この検索と置換の文字のセット数が約100個あります。
 
これを下記のVBAで操作して文字の検索と置換を行うと、5〜6秒の時間を要します。
少し時間が掛かりすぎる気がしますが、こんなものなのでしょうか。
早くする別の方法がありますでしょうか。
 
Sub 置換作業b()
     i = 3
     Do
         x1 = Sheets("データ").Cells(i, 1)
         x2 = Sheets("データ").Cells(i, 2)
         Sheets("A").Cells.Replace _
             What:=x1, Replacement:=x2, _
             SearchOrder:=xlByColumns, MatchCase:=True
         i = i + 1
     Loop Until Sheets("データ").Cells(i, 1) = ""
End Sub
 
シート「データ」に存在する置換の文字列をシート「A」にコピペで貼り付けて同じ試みをしましたが、処理時間に大きな差は感じませんでした。
処理そのものは問題ありません。時間だけの問題です。
 
初心者です。よろしくお願いいたします。
 
 

回答
投稿日時: 20/01/17 14:42:22
投稿者: WinArrow
投稿者のウェブサイトに移動

時間が掛かり過ぎると感じたときは、ループを疑え
 
⇒ループしないでよい方法
 または、ループ回数をへらすこ
を考えるということです。
 
今回は、件数の多い方をループしているような気がしますが
 
少ない方をループするように変更できませんか?

回答
投稿日時: 20/01/17 14:49:19
投稿者: WinArrow
投稿者のウェブサイトに移動

もしかして
 
Sheets("A")に、数式が入っているセルがたくさんありませんか?
 
再計算を自動⇒手動に変えてみるとか・・・

投稿日時: 20/01/17 15:36:48
投稿者: satoniwa

WinArrow様
 
早速ご回答をいただきありがとうございました。
 
ご指摘の再計算を手動にしたところ、ほぼ瞬時(1秒位)で終了しました。
 
また、当該部分は、も少し大きな部分の一部分で、全て部分の処理に約10〜15秒かかっていたのですが、この全てが1〜2秒で終了できるようになりました。
 
本当にありがとうございました。