Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


62228 / 76738 ←次へ | 前へ→

【19118】Re:略語リストから一括置換
発言  ちゃっぴ  - 04/10/22(金) 1:09 -

引用なし
パスワード
   Replaceメソッドは置換Listの数が多くなると、
それに比例して遅くなるので・・・

置換List数が多いほど、Replace関数を使用したほうが
速くなります。
こういうことをする場合には、全てのデータを一度
配列に入れてから処理すると劇的に速くなります。

Sub test()
  Dim rngTarget  As Range
  Dim vntTarget  As Variant
  Dim vntList   As Variant
  Dim i As Long, j As Long
  
  '置換リストを配列に格納
  vntList = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Value
  
  Set rngTarget = Range(Cells(1, 6), Cells(65536, 6).End(xlUp))
  '置換対象文字列を配列に格納
  vntTarget = rngTarget.Value
  
  '置換処理
  For i = 1 To UBound(vntTarget)
    For j = 1 To UBound(vntList)
      vntTarget(i, 1) = Replace$(vntTarget(i, 1), _
        vntList(j, 1), vntList(j, 2), 1, -1, 0)
    Next j
  Next i
  
  '置換した配列を一括出力
  rngTarget.Value = vntTarget
  Set rngTarget = Nothing
End Sub

完全一致であれば、Replace関数も使わなくてよくなりますので、
更なる高速化が望めます。
0 hits

【19098】略語リストから一括置換 momo 04/10/21(木) 15:37 質問
【19100】Re:略語リストから一括置換 つん 04/10/21(木) 16:11 発言
【19111】Re:略語リストから一括置換 momo 04/10/21(木) 22:26 質問
【19117】Re:略語リストから一括置換 つん 04/10/21(木) 23:48 回答
【19118】Re:略語リストから一括置換 ちゃっぴ 04/10/22(金) 1:09 発言
【19121】Re:略語リストから一括置換 つん 04/10/22(金) 9:43 発言
【19123】Re:略語リストから一括置換 momo 04/10/22(金) 11:44 お礼

62228 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free