標題:
尋找&取代
[打印本頁]
作者:
mmggmm
時間:
2012-4-27 19:34
標題:
尋找&取代
各位:以下我用錄制的巨集,請問如何簡單一點,謝謝.
Sub 取代()
ActiveSheet.UsedRange
Selection.Replace What:="700", Replacement:="J07", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="1500", Replacement:="J15", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="1100", Replacement:="J11", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="2300", Replacement:="J23", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
作者:
register313
時間:
2012-4-27 19:48
本帖最後由 register313 於 2012-4-27 20:18 編輯
回復
1#
mmggmm
Sub 取代()
Set Rng = ActiveSheet.UsedRange
S = Array(700, 1100, 1500, 2300)
R = Array("J07", "J11", "J15", "J23")
For I = 0 To UBound(S)
Rng.Replace S(I), R(I)
Next I
End Sub
複製代碼
Sub 取代()
Set Rng = ActiveSheet.UsedRange
S = Array(700, 1100, 1500, 2300)
For I = 0 To UBound(S)
Rng.Replace S(I), Application.Text(S(I) / 100, "J00")
Next I
End Sub
複製代碼
作者:
c_c_lai
時間:
2012-4-28 08:09
回復
2#
register313
請問您為何用 Rng.Replace S(I), Application.Text(S(I) / 100, "J00") 的方式處理?
它與下列處理方式,差別在於一個以陣列、一個以直接替換的方式做異動。
R = Array("J07", "J11", "J15", "J23")
Rng.Replace S(I), R(I)
但我好奇的是 Application.Text(S(I) / 100, "J00") 是如何運作的?
謝謝您!
作者:
register313
時間:
2012-4-28 10:06
回復
3#
c_c_lai
Application.Text(S(I) / 100, "J00") 設定S(I) / 100之格式為J00
亦可用 Format(S(I) / 100, "J00") 設定S(I) / 100之格式為J00
I=0時,S(I)=700,Format(S(I) / 100, "J00") =Format(7, "J00") =J07
I=1時,S(I)=1100,Format(S(I) / 100, "J00") =Format(11, "J00") =J11
I=2時,S(I)=1500,Format(S(I) / 100, "J00") =Format(15, "J00") =J15
I=3時,S(I)=2300,Format(S(I) / 100, "J00") =Format(23, "J00") =J23
作者:
c_c_lai
時間:
2012-4-28 10:36
回復
4#
register313
我用了 Range("D5").Value = Format(11, "J00") 來做測試,竟然答案會是 J11,
Amazing!
Thanks a lot.
作者:
mmggmm
時間:
2012-4-29 14:23
原錄制巨集只取代選擇範圍內的資料
而執大大提供的後則取代了全部資料,不知那裡有問題.
作者:
register313
時間:
2012-4-29 14:39
回復
6#
mmggmm
Sub 取代()
Set Rng = Selection
S = Array(700, 1100, 1500, 2300)
R = Array("J07", "J11", "J15", "J23")
For I = 0 To UBound(S)
Rng.Replace S(I), R(I)
Next I
End Sub
複製代碼
或
Sub 取代()
Set Rng = Selection
S = Array(700, 1100, 1500, 2300)
For I = 0 To UBound(S)
Rng.Replace S(I), Application.Text(S(I) / 100, "J00")
Next I
End Sub
複製代碼
作者:
GBKEE
時間:
2012-4-29 14:45
本帖最後由 GBKEE 於 2012-4-29 14:48 編輯
回復
6#
mmggmm
Rng.Replace S(I), R(I) 沒指明 LookAt := xlWhole 或 LookAt := xlPart
會依上次的 LookAt
vba 的 說明
Replace 方法
Range 物件時用 Replace 方法。
傳回 Boolean 值,此值表示指定範圍內儲存格中的字元。使用此方法不會變更選定範圍和目前儲存格。
expression.Replace(What, Replacement, LookAt, SearchOrder, MatchCase, MatchByte, SearchFormat, ReplaceFormat)
以下是參數的說明
What 必選的 Variant。您要 Microsoft Excel 尋找的字串。
Replacement 必選的 Variant。要置換的字串。
LookAt 選擇性的 Variant。可為下列 XlLookAt 常數之一:xlWhole 或 xlPart。
SearchOrder 選擇性的 Variant。可為下列 XlSearchOrder 常數之一:xlByRows 或 xlByColumns。
MatchCase 選擇性的 Variant。若指定為 True,則搜尋時大小寫視為相異。
MatchByte 選擇性的 Variant。如果在 Microsoft Excel 中選擇或安裝二位元語言支援,您僅可以使用此引數。若指定為 True,就使雙位元組字元僅符合雙位元組字元。若指定為 False,則雙位元組字元可符合其等價的單位元組字元。
SearchFormat 選擇性的 Variant。方法的搜尋格式。
ReplaceFormat 選擇性的 Variant。方法的取代格式。
你用錄製可查看 參數的變化
LookAt := xlWhole
如圖 所勾選的 選項
LookAt := xlPart
圖中 所勾選的 選項會取消
[attach]10737[/attach]
作者:
mmggmm
時間:
2012-4-29 14:59
謝謝各位的詳細說明
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)