[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セル内の数字部分のみ一括で置換したい』(ちゃぼ)
こんにちは。
マクロ初心者です。(ほぼ無知です。。。)
増税に伴い、エクセルで文中に含まれる数字のみを一括で変更したいのですが、
拾ってきたマクロを使うと無限ループに陥ってしまってます。
何かいい方法は御座いませんでしょうか?
例
変更前:ホワイトオーク(WO)+10800円必要
変更後:ホワイトオーク(WO)+11000円必要
数字部分は要変更箇所が上記以外にも数万パターンあります。
下記のような文字列リストを作製し、
下記記述のマクロで実行すると変更後の同じ数字を何度も見てしまい無限ループします。
Sub 文字列リストに基づき連続して置換する()
i = 2 Do x1 = Sheets("文字列リスト").Cells(i, 1) x2 = Sheets("文字列リスト").Cells(i, 2) Sheets("作業").Cells.Replace _ What:=x1, Replacement:=x2, _ SearchOrder:=xlByColumns, MatchCase:=True i = i + 1 Loop Until Sheets("文字列リスト").Cells(i, 1) = "" End Sub
マクロでなくても何かいい方法があれば教えていただけると幸いです。
宜しくお願い致します。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
そのまま書けば Sub test() Dim i As Long With Sheets("文字列リスト") For i = 2 To .Range("a" & Rows.Count).End(xlUp).Row Sheets("作業").Cells.Replace .Cells(i, 1), .Cells(i, 2), 2 Next End With End Sub
ですが単純な Find/Replace で解決しますか?
(seiya) 2019/08/12(月) 11:14
上記回答ありがとうございます。
上記記述で試みましたところ、
やはり数字がどんどん増えてしまいました。。。
(私の何かしらの説明不足が原因かと存じますm(_ _)m)
Find/Replace関数勉強してみます。
(ちゃぼ) 2019/08/12(月) 11:42
文字リストの順番を見ると 1080 を 1100 次に 1100 を 1120 ということは、最初1080 だった部分も結果は 1120 になります。 提示された文字列リストを逆順にすれば解決しますが、数万件ですよね? 単純な部分一致の置換では無理だと思います。 考え方としては、実際の文字列中の該当数値部分を再計算するようなプログラムが必要でしょう。 (seiya) 2019/08/12(月) 11:50
再度コメントありがとうございます。
やはり初心者には難しい処理になりそうですね。
教えていただいたことをヒントに、
文字列リストを下記に変更したところ、
無限ループが止まり、
最後に作業シートのppを空白置換することで解決しました。
(例)
文字列リスト
A B
1 1080円 1100pp円
2 1100円 1120pp円
3 1120円 1140pp円
↓
以下省略
ありがとうございましたm(_ _)m
(ちゃぼ) 2019/08/12(月) 12:16
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.