Вопрос: Excel Smart Найти и заменить только определенные символы


Я хочу изменить INT на INTERNATIONAL и NA на НАЦИОНАЛЬНУЮ АССАМБЛЕЮ во всей книге excel через окно Excel или Найти и заменить. Но когда я запускаю макрос или меняю его через диалоговое окно «Найти и заменить», он также заменяет NA от CHINA на последние 2 символа, и он стал CHINATIONAL ASSEMBLY и INTERIOR INTERNATIONALERIOR.

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


3
2017-09-14 14:46


Источник


Можете ли вы поделиться макросом (при условии, что это код VBa) - Dave
Какую версию Excel вы используете? - dangowans


Ответы:


Если вы идете по маршруту 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

1
2017-09-14 19:34



Ты замечательный!! Большое вам спасибо за такую ​​большую помощь, это отличный макрос для меня. Это мне очень помогло. Еще раз спасибо. - Asim


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

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

Find and Replace

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

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


3
2017-09-16 15:16



... но вы можете отредактировать свой ответ, чтобы сказать «Выделите записьs вы хотите обновить »(« Я хочу изменить ... в целом книгу Excel ») и, возможно, что-то сказать о Shift + щелчок и Ctrl + клик. - Scott


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

enter image description here


2
2017-09-14 15:18



Извините, но я думаю, что (справедливо) очевидно, что ячейки с текстом, который нужно заменить, включают больше, чем просто INT или NA. - pnuts
@pnuts: FWIW, я считаю, что это не очевидно из вопроса. - Scott
@Scott Я бы согласился, не вопию, но что еще может означать символ «, который не привязан к любому другому персонажу»? - pnuts
@pnuts: Учитывая, что вопросник, похоже, борется с английским, «также символ INT, который не привязан к какому-либо другому персонажу» мог очень хорошо означает то же самое, что «символ NA в книге, который не включен ни с каким другим персонажем»; то есть, "строка Икс в клетке, без каких-либо других персонажей ». - Scott
Скотт прав, извините за моего слабого английского, так же как и в случае с этим. Но его решена теперь Крисом Нильсеном. - Asim


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

1
2017-09-14 17:04



Большое вам спасибо за вашу помощь, но это долгий процесс. - Asim
И вы считаете, что более 700-часовой режим VBA быстрее? - Scott
@Scott. Если код предоставлен для вас. :) - Excellll