2013-09-26 43 views
-1

在我的Excel文件,我有:查找和細胞內更換(對於特殊工作ANS列)

A  
1 10-30  
2 40-45  
3 30-80 

可以有分隔的任何數值範圍 - 在任何細胞。

在任何特定列(可能是任何細胞)我想刪除從開始到所有文本 - 連字符。

例子:40-45將與45

我問這個問題之前被取代,我得到了以下的解決方案

Sub Update() 
Application.ScreenUpdating = False 
Application.EnableEvents = False 
    Dim ws As Worksheet, ur As Range, r As Range 
    For Each ws In Sheet 
     Set ur = ws.UsedRange 
     For Each r In ur 
      On Error Resume Next 
       r = Split(r, "-")(1) 
     Next 
    Next 
Application.EnableEvents = True 
Application.ScreenUpdating = True 
End Sub 

但是,通過使用下面的腳本所有工作表越來越更新。 我希望它在選定的工作表中更新,只有選定的列如J,K或L.(列)

請幫我解決這個問題。

+0

是否有任何理由爲什麼你改變了接受的答案?來這裏,並要求VBA代碼來解決你的問題,並接受答案應該意味着你的原始問題已經解決。選擇非VBA解決方案適合SuperUser,但在這裏,在stackoverflow上,問題和答案都應該與編程相關。 – 2013-09-27 07:06:28

回答

2

很抱歉,如果我在這裏失去了一些東西,但你爲什麼不只是選擇列,並完成按Ctrl + H(替換),並發現,寫「* - 」(不帶引號),然後單擊全部替換,不寫任何東西在替換字段中。

我不明白需要一個宏。再次,道歉,如果我在這裏失去了一些東西。

+0

+ 1很好的建議:) –

0

這將限制更換到活動工作表,列Ĵ大號

Sub Update() 
Application.ScreenUpdating = False 
Application.EnableEvents = False 
Dim ws As Worksheet, ur As Range, r As Range 
Set ur = Range("J:L").Cells.SpecialCells(xlCellTypeConstants) 
    For Each r In ur 
     If InStr(1, r.Value, "-") > 0 Then 
      r.Value = Split(r.Value, "-")(1) 
     End If 
    Next 
Application.EnableEvents = True 
Application.ScreenUpdating = True 
End Sub 
0

你需要取出用於遍歷所有工作表,並選擇一個範圍是只有一個期望的列,而不是當前它的整個使用部分。一個基本的方法:

Sub Update() 
Application.ScreenUpdating = False 
Application.EnableEvents = False 
Dim ws As Worksheet, ur As Range, r As Range 
Set ws = ActiveSheet 
Set ur = ws.Range(A:A) ' sets the range as a whole column with the chosen letter 
For Each r In ur 
    On Error Resume Next 
     r = Split(r, "-")(1) 
Next 
Application.EnableEvents = True 
Application.ScreenUpdating = True 
End Sub 

你只需要將代碼中的A:A替換爲你想要的任何列, G:G代表G列。取決於您在使用此代碼時如何精確選擇列。