3

Я хочу изменить INT на INTERNATIONAL и NA на NATIONAL ASSEMBLY во всей книге Excel с помощью диалогового окна Excel Macro или «Найти и заменить». Но когда я запускаю макрос или изменяю его через диалоговое окно «Найти и заменить», он также заменяет последние два символа «NA» из КИТАЯ и становится «КИНАЦИОНАЛЬНОЙ СБОРКОЙ» и «ИНТЕРЬЕРОМ» МЕЖДУНАРОДНОГО.

Теперь я хочу, чтобы Excel только умно находил в рабочей книге символ NA, который не входит ни в один другой символ, такой же символ INT, который не прикреплен ни к какому другому символу.

4 ответа4

3

Если значения, которые вы хотите заменить, сами по себе находятся в ячейках (никакого другого текста), обязательно следуйте решению CharlieRB. Если значения находятся в ячейках вместе с дополнительным текстом, будет работать слегка измененная версия.

Откройте окно "Найти и заменить". Нажмите вкладку "Заменить".

Найти и заменить

Введите значения "Найти что" и "Заменить на". Нажмите кнопку "Найти все".

Просмотрите список внизу, который детализирует, какие записи были найдены. Выделите запись, которую хотите обновить, и нажмите кнопку "Заменить".

2

В окне « Find and Replace необходимо установить флажок « Match entire cell contents затем запустить его.

1
  1. Сохраните ваш файл как файл CSV.  Если вы хотите манипулировать подмножеством вашего рабочего листа (например, выбранными столбцами и / или строками), скопируйте этот регион в рабочий файл (или лист) и сохраните его как CSV.  Если вам нужно изменить несколько листов, повторите этот процесс для каждого листа.
  2. Отредактируйте файл CSV с помощью своего рода интеллектуального текстового редактора (т. Е. Умнее, чем Блокнот). vi хорош для этого; используйте команду, такую как %s/\<INT\>/INTERNATIONAL/g .  Microsoft Word, вероятно, будет достаточно; используйте опцию «Найти только целые слова» в разделе « More>> в «Найти и заменить».
  3. Прочитайте отредактированный файл CSV обратно в Excel.
  4. Скопируйте измененные значения в исходную книгу, чтобы сохранить форматирование.
1

Если вы идете по маршруту VBA, попробуйте использовать Regular Expressions

Вот начало

Sub ReplaceWithRE()
    Dim re As Object 'RegExp
    Dim rng As Range, cl As Range
    Dim sh As Worksheet
    Dim wb As Workbook
    Dim sReplace As String
    Dim aReplace(0 To 1, 0 To 1) As String
    Dim i As Long

    Set wb = ActiveWorkbook
    Set re = CreateObject("vbscript.regexp") ' New RegExp
    re.Global = True
    re.IgnoreCase = False
    re.MultiLine = True

    ' Load array of patterns and replacements
    aReplace(0, 0) = "\bINT\b"
    aReplace(0, 1) = "INTERNATIONAL"
    aReplace(1, 0) = "\bNA\b"
    aReplace(1, 1) = "NATIONAL ASSEMBLY"

    For Each sh In wb.Worksheets
        On Error Resume Next
        Set rng = sh.UsedRange.SpecialCells(xlCellTypeConstants)
        If Err.Number <> 0 Then
            Err.Clear
        Else
            On Error GoTo 0
            For Each cl In rng
                sReplace = cl.Value
                ' Test each cell for each pattern, replace when found
                For i = 0 To UBound(aReplace, 1)
                    re.Pattern = aReplace(i, 0)
                    If re.Test(sReplace) Then
                        sReplace = re.Replace(sReplace, aReplace(i, 1))
                    End If
                Next
                cl.Value = sReplace
            Next
        End If
    Next


End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .