• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Cells.Replace What:="*234)

セルの置換に関する質問

このQ&Aのポイント
  • Cells.Replace関数を使用してセルの置換を行いたいが、一部の文字列に対してのみ置換が行われてしまう問題が発生している。
  • 具体的には、「*2345」を「*2345?」に置換したいが、「a12345」が「*2345?」になってしまう。
  • 「5」と「?」を連続している箇所以外での置換は考慮していないため、解決策を探している。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

すいません、一箇所訂正。 処理には直接関係ないのですが、 ×  vbNewLine & i & "件 置換完了"      ↓ 〇  vbNewLine & i - 1 & "件 置換完了" にしてやってください。

zelugnfmtzq
質問者

お礼

ご回答ありがとうございました。

その他の回答 (2)

回答No.2

> Cells.replace (略) とありますが、置換対象は本当に「全セル」でしょうか。 本当に「全セルを舐める」にはそこそこの時間がかかります。 当然、パソコンのスペックにもよりますが、   For Each Targ In Cells     ' 何も処理しない   Next を走らせても数分~数時間かかるでしょうから、実用的とは言えません。 チェックする範囲を列単位などに絞れるなら、   In 対象範囲 でもなんとかなるかもしれません。 なんとなく、無駄に考えてみました。 Sub Sample() Dim myTime, myCell On Error GoTo ErrEnd   Application.ScreenUpdating = False   myTime = Time      For i = 1 To 10000  ' 置換する最大の回数をここで調節     myCell = Cells.Find(What:="*2345", _               After:=Range("A1"), _               LookAt:=xlWhole).Address     Range(myCell) = Range(myCell) & "?"   Next ErrEnd:   Range("A1").Select   MsgBox Minute(Time - myTime) & "分" & _       Second(Time - myTime) & "秒" & _       vbNewLine & i & "件 置換完了"   Application.ScreenUpdating = True   Exit Sub End Sub まぁつまり、 A1セルを起点に検索して見つかったら「?」をつけ、 もう一回A1セルから検索をやり直して・・・を繰り返して、 見つからなかったら(=エラーが起きたら)強制終了。 という単純な内容です。 私のロースペックPCで、置換対象として3500セルを用意して             ※つまり3500回繰り返し 10回ほど走らせた結果、平均処理時間は25秒くらいでした。 それでもまだ、実用的とは言いづらいかもしれませんね。

zelugnfmtzq
質問者

お礼

ご回答ありがとうございました。

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.1

こんなのはどうでしょう。 対象範囲がA1:A3の場合の例です。 Sub Sample()   For Each target In Range("A1:A3")     If target.Value Like "*2345" Then target.Value = target.Value & "?"   Next End Sub

zelugnfmtzq
質問者

お礼

ご回答ありがとうございました。

関連するQ&A

専門家に質問してみよう