Замена только цифр в диапазоне ячеек в Excel - PullRequest
0 голосов
/ 10 июля 2019

У меня есть столбец Excel со значениями ячеек в виде строки, смешанной с некоторыми числами в конце. Я не могу сделать «Текст в столбец», так как пробел не может быть разделителем или табуляцией. Я пробовал приведенный ниже код, но он работает, только если вся ячейка состоит только из цифр Я новичок в макросах и VB

Sub ReplaceNoX()
 Dim cell As Object
 Dim val As String
 Dim i As Integer
 Dim n As String
 Application.ScreenUpdating = False
 For Each cell In Selection
 If IsNumeric(cell.Value) Then
 val = cell.Text
 For i = 1 To Len(val)
 n = Mid(val, i, 1)
 If "0" <= n And n <= "9" Then
 Mid(val, i, 1) = "x"
 End If
 Nextf
 cell.Formula = val
 End If
 Next
 Application.ScreenUpdating = True
 End Sub

Ответы [ 2 ]

2 голосов
/ 10 июля 2019

Если вы хотите заменить каждую цифру на «х», здесь используется другой подход с использованием регулярных выражений.

Sub Regex1()

Dim oRgx As Object, rCell As Range

Set oRgx = CreateObject("VBScript.RegExp")

With oRgx
    .Global = True
    .Pattern = "\d"
    For Each rCell In Selection
        rCell.Value = .Replace(rCell, "x")
    Next rCell
End With

End Sub

enter image description here

1 голос
/ 10 июля 2019

Если вы хотите изменить как цифры, так и смешанный текст и цифры, удалите тест IsNumeric():

Sub ReplaceNoX()
    Dim cell As Range
    Dim val As String
    Dim i As Long
    Dim n As String

    Application.ScreenUpdating = False
        For Each cell In Selection
            val = cell.Text
            For i = 1 To Len(val)
                n = Mid(val, i, 1)
                If n Like "[0-9]" Then
                    Mid(val, i, 1) = "x"
                End If
            Next i
            cell.Value = val
        Next
    Application.ScreenUpdating = True
End Sub

Примечание:

  1. используйте Long вместо Integer
  2. используйте Like для проверки отдельных символов.
  3. используйте Range вместо Object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...