2014-08-30 3 views
1

Я пытаюсь объединить формат большого .xlsx файла, который я получил.Добавить пробел, если буква смежна с номером

Одна из проблем, которые я обнаружил, заключается в том, что есть записи, которые «уникальный код» - «00UTract 32», «132Unit 359», «5555UT22» ... и затем я обнаружил, что мы «00 UTract 32 "," Unit 359, 132 "и" 22UT, 5555 ".

Как вы можете подозревать, есть дубликаты, и я подтвердил, что это так.

Итак, как мне сделать, чтобы добавить пробел каждый раз, когда я нахожу письмо рядом с номером, так что я могу начать очищать беспорядок легко?

Спасибо !!!

ответ

0

Я бы сделал это по-другому , считая, что единственное различие в идентификаторах - это пробелы. Просто удалите все пробелов из этой колонки, и вы получите одинаковые значения, не имея дело с проверкой каждого символа в строке.

Это можно сделать с помощью CTRL + H и не нужно вводить в него VB.

+0

Alex, я попробовал это, но не работал, потому что в кодах нет уважаемого порядка. Как и в «5555UT22», то есть «22UT, 5555», если я предполагаю, что у меня все еще будет другое кодирование. Я хочу разделить каждый, так что я могу применить некоторые другие алгоритмы соответствия, которые будут работать лучше, так как будет легче распознать это - предположим, что я могу делать то, что я прошу, - «5555 UT 22» - это то же самое, что «22 UT , 5555 ", чем совпадение" 5555UT22 "с" 22UT, 5555 ". – Luis

1

Выберите ячейки, которые вы хотите проверить/исправить и запустить этот макрос:

Sub DataFixer() 
    Dim r As Range, DoIt As Boolean 
    Dim temp As String, CH As String, v As String 
    Dim i As Long, L As Long 
    For Each r In Selection 
     temp = "" 
     DoIt = False 
     v = r.Value 
     L = Len(v) 
     CH = Mid(v, 1, 1) 
     temp = CH 
     For i = 2 To L 
      CH = Mid(v, i, 1) 
      If IsNumeric(Right(temp, 1)) And CH Like "[a-zA-Z]" Then 
       DoIt = True 
       temp = temp & " " 
      End If 
      temp = temp & CH 
     Next i 
     If DoIt Then r.Value = temp 
    Next r 
End Sub 

Макрос проверяет каждую выберите ячейку для вхождений:

{number}{letter} 

и заменяет их:

{number} {letter} 
+0

Спасибо, ученик Гэри! Не могли бы вы добавить некоторые комментарии или кратко объяснить мне, как это работает? – Luis

+0

@ user3849732 макрос рассматривает ячейки за ячейкой. В каждой клетке проверяются символы. Если программа обнаруживает букву *, * она проверяет предыдущий символ. Если предыдущий символ был * номером, * между ними помещается одно пространство. –

Смежные вопросы