我已經使用以下代碼以當量/可接受的替代品來取代重音字符:Excel VBA中替換字符 - 炭通過炭VS正則表達式
Const AccChars = "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿø"
Const RegChars = "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyyo"
For x = 1 To dataRange
ActiveCell.Offset(1, 0).Activate
For i = 1 To Len(AccChars)
y = Mid(AccChars, i, 1)
z = Mid(RegChars, i, 1)
ActiveCell.Replace What:=y, _
Replacement:=z, _
LookAt:=xlPart, _
MatchCase:=True
Next i
Next x
由於這是在完成的(?)逐個字符地處理該範圍內的每個單元格,當處理數以萬計的記錄時,該過程變得非常慢(QUITE!)。
我最近用正則表達式替換了一個不同的char-by-char評估過程(它加快了一點),但我不確定這種特定類型的評估和替換過程是否適用於正則表達式樣式解決方案我不熟悉在VBA平臺上使用正則表達式(我可以在表單級別上做基本的正則表達式),所以我現在不知道我是否無法得到這個結果工作是因爲我太多的新手去實現它,或者如果我無法實現它的工作,因爲使用正則表達式作爲解決方案是不可能實現的。
我希望能夠從那些瞭解正則表達式的人那裏得到任何建議,以便對此需求做出決定。
而不是激活的每個小區,讀取整個範圍劃分爲陣列工藝在單個寫入的陣列和輸出陣列結果我會想象是速度問題的原因。另外,你可以使用.Replace作爲範圍,而不是單個單元格。 – user3357963
感謝你改變方法。我從來沒有在pl中使用範圍數組在一定範圍內循環訪問每一個單元格的王牌(如果那是不好的形式,那麼這只是因爲我是自學成才的,從來不知道有這樣做的另一種方式)。因此,我將測試一些久經考驗的循環,以查看是否可以使用範圍數組來處理它們。一旦我成功瞭解了這個基本過程,我將嘗試使用範圍數組方法來解決這個特殊情況。 – 5th4x4
閱讀本文http://www.cpearson.com/excel/ArraysAndRanges.aspx - VBA中的範圍和數組是不同的。 – user3357963