Vba 在单元格内查找并替换(对于特定工作表ans列)
在我的Excel文件中,我有:Vba 在单元格内查找并替换(对于特定工作表ans列),vba,excel,excel-2010,Vba,Excel,Excel 2010,在我的Excel文件中,我有: A 1 10-30 2 40-45 3 30-80 在任何单元格中都可以有以-分隔的任何数字范围 在任何特定列(可能是任何单元格)中,我希望删除从开始到-连字符的所有文本 示例:40-45将替换为45 我以前问过这个问题,我得到了以下解决方案 Sub Update() Application.ScreenUpdating = False Application.EnableEvents = False Di
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。(列)
请帮助我解决此问题。这将限制对活动工作表、列J到L的替换:
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
您需要在所有工作表上取出for循环,并选择一个范围,该范围仅为所需的列,而不是当前工作表中使用的全部部分。这样做的基本方法是:
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列。这取决于您在使用此代码时选择列的准确程度。如果我在此处遗漏了一些内容,很抱歉,但您为什么不选择该列并执行Ctrl+h(替换),然后在“查找”中,写入“*-”(不带引号)并单击“全部替换”,没有在替换为字段中写入任何内容
我不明白宏的必要性。如果我遗漏了什么,再次表示歉意。您有什么理由更改已接受的答案吗?来到这里,要求VBA代码来解决您的问题,并接受答案,这意味着您原来的问题已经解决。选择非VBA解决方案适合超级用户,但在这里,对于stackoverflow,问题和答案都应该与编程相关。+1好建议:)