Ниже код будет перебором всех рабочих листов и их используемых диапазонов (все ячеек во всех листах в одной книге) и заменить любой текст, который отделен с помощью -
тира т.е. 40-50
только во второй части строки (50)
Sub Main()
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim ws As Worksheet, ur As Range, r As Range
For Each ws In Sheets
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
Вы также можете использовать ниже
Sub MMain()
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim ws As Worksheet, ur As Range, r As Range
For Each ws In Sheets
Set ur = ws.UsedRange
For Each r In ur
If Not IsEmpty(r) Then
If InStr(1, r.Text, "-", vbTextCompare) Then
r = Split(r, "-")(1)
End If
End If
Next
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
, но в данном конкретном случае, используя первый пример составляет около 50% быстрее, то второй.
Я испытал его с 100000 клеток, чтобы проверить и разделить
результат для первого: 2.31 sec
Результат для второго: 4.62 sec
Вы хотите заменить содержимое ячейки значением, которое появляется после знака '-' * dash *? Итак, вы 'A1 = 30',' A2 = 45', 'A3 = 80'? –
Просто используйте текст для столбца. Здесь нет необходимости в VBA. – Santosh