按規(guī)則的批量替換

2022-06-28 12:03

2022-06-28 16:06
這個估計要采用VBA編程來循環(huán)所有單元格按指定的規(guī)則對一個一個的單元格一次性替換完成,如果用一般的替換,會造成重復(fù)替換,得不到預(yù)期的結(jié)果的。
思路:讀取一個單元格中的字符串,然后判斷該字符串的長度,然后將該字符串中一個一個的字符分離出來,然后對字符進(jìn)行判斷,按照指定的規(guī)則進(jìn)行替換,完畢后,將該新的字符組合得到替換后的新字符串再來賦值給該單元格,如此反復(fù)處理每一個單元格即可。
單擊工具-宏,新建一個宏名,單擊創(chuàng)建,然后復(fù)制如下代碼并自己修改一下即可:
Dim str As String
For c = 1 To n 'n指代的是該表中該類數(shù)據(jù)所在列的最大列數(shù),自己按實際情況修改,默認(rèn)從第1列開始
For r = 1 To m 'm指代的是該表中該類數(shù)據(jù)所在行的最大行數(shù),自己按實際情況修改,默認(rèn)從第1行開始
nstr = Len(Cells(r, c).Text)
For i = 1 To nstr
strtmp = Mid(Cells(r, c).Text, 1, 1)
Select Case strtmp
Case "a"
strtmp = "b"
Case "b"
strtmp = "n"
Case "c"
strtmp = "v"
Case "g"
strtmp = "z"
Case "r"
strtmp = "o"
Case "h"
strtmp = "s"

'在這里把你的替換規(guī)則按上面的形式補(bǔ)充完整
End Select
str = str + strtmp
Next i
Cells(r, c).Value = str
str = ""
strtmp = ""
Next r
Next c
更多回答
方法很多的//樓上說的也對
給你說個最簡單的且不會錯的原理[手動也行,最好錄制個宏]。[因為不確定你26個字母都用,所以就當(dāng)你26個字母都用吧,用100個不同字母都行]
1首先需要分列。保證每個字母在一個單元格內(nèi)
2把26個字母對應(yīng)到數(shù)字1-26
先替換成目標(biāo)字母對應(yīng)的數(shù)字
再全部替換回字母
最后再合并一起//

中間的替換步驟還是錄個宏吧。會省點時間。
普通查找替換為什么不行? 把換的順序換一下不就行了?
先換a再換b有此重復(fù)替換問題,可以先換b再換a嘛,實在是有交替換的情況還可以先臨時把一個換成一個替換區(qū)域不存在的字符,最后再把它換正常。
從后面開始換
熱門問答