2015-11-15 3 views
-2

я есть книга с колонкой («М» или «13»), глядя, как это:VBA - удаление символов, цифр

1.1 Residential - Bla bla bla<br> 
1.1 Residential: Bla bla bla<br> 
1.2 - Residential Bla bla bla<br> 
2.2 - 1.3 Residential Bla bla bla<br> 
3.1 - Multi Residential Bla bla bla<br> 
etc..<br> 

Старая индексирование номенклатура используется мой клиент пошел от 1,1 до 3,3

Мне нужно очистить эту колонку и избавиться от всех этих трех цифр, делая любой текст, который появляется после них, все еще появляется внутри ячейки.

Пример:

Residential - Bla bla bla<br> 
Residential: Bla bla bla<br> 
Residential Bla bla bla<br> 
Residential Bla bla bla<br> 
Multi Residential Bla bla bla<br> 
etc.. 
+2

и что код вы уже пробовали? – Jonnus

+0

Как я уже говорил, Джоннус, я довольно новичок в VBA. Я попробовал много примеров из сообщества здесь. Единственная проблема заключается в том, что подавляющее большинство из них предназначено для текста. Я действительно потерян. – Lyondhur

ответ

0

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

Dim i As Integer 
For i = 1 To 5 
    Dim j As Integer 
    Dim value As String 
    value = Range("M" & i) 

    For j = 1 To Len(value) 
    Select Case Mid(value, j, 1) 
    Case 0 To 9 
    Case "-" 
    Case "." 
    Case " " 
    Case Else 
     Exit For 
    End Select 
    Next 
    Range("M" & i) = Mid(value, j, Len(value)) 
Next 

Если вы предпочитаете не беспокоиться об указании количества клеток, и пусть делают все ячейки, содержащие значение, как Jonnus ответ, то вы можете попробовать это:

Dim i As Integer 
i = 1 
Do Until Range("M" & i) = "" 
    Dim j As Integer 
    Dim value As String 
    value = Range("M" & i) 

    For j = 1 To Len(value) 
    Select Case Mid(value, j, 1) 
    Case 0 To 9 
    Case "-" 
    Case "." 
    Case " " 
    Case Else 
     Exit For 
    End Select 
    Next 
    Range("N" & i) = Mid(value, j, Len(value)) 
    i = i + 1 
Loop 
+0

Мои самые лучшие приветственные ребята. Блоки кода выше не генерируют никаких эррос. Однако все 1.1, 1.2, .. 3.3 и т. Д. Все еще там, и ничего не меняется. Я считаю, что должно быть что-то еще. :/ – Lyondhur

+1

Я сделал это в Excel с вашими образцами данных, и это работает как шарм. Вы сказали, что попробовали ответить Джонну «снова», и это сработало. Шахта почти такая же, как и для вас, поэтому дайте ей еще один выстрел. Вы можете использовать его ответ, если хотите, но мой ответ будет работать на любом языке (не только английском) и символах, если ваш текст начнется с одного из них. Также мой ответ работает немного быстрее, потому что я не использовал & regex. –

+0

Я исправил свой комментарий @racilhilan. Это была ваша линия, которая работала для меня. Я проголосовал соответственно. (извинения, все еще получая это от этого). Приветствия. – Lyondhur

0

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

Dim rowNum As Integer 
Dim curValue as String 

RowNum = 1 

' Loop though all cells in the column until a blank one is found 
Do While Cells(13, rowNum).Value <> "" 

    ' Get the current value of the cell 
    curValue = Cells(13, rowNum).Value 

    ' Loop through all the characters until the first alpha character is 
    ' found, and save the index of this first character 
    Dim x as Long 
    For x = 1 to Len(curValue) 
     sChar = Mid(curValue, x, 1) 
     If sChar Like "[a-zA-z\)\(\[\]]" Then 
      firstChar = x 
      Exit For 
     End If 
    Next x 

    ' Set the value of the cell to be the current value starting from 
    ' the first alpha character 
    Cells(13, rowNum).Value = Right(curValue, Len(curValue) - x) 

    ' Go to the next row 
    rowNum = rowNum + 1 
Loop 
+0

Прохладная идея использовать 'Value <>" "'. Это может быть хорошим дополнением к моему ответу. Что касается 'Like '[a-zA-Z]" ', это немного предположение. Он работает только на английском языке, и текст не может начинаться ни с чем другим, например с кронштейном. –

+0

Я обновил края, чтобы включить квадратные скобки и фигурные скобки(). Попросите Google найти регулярные выражения, чтобы найти что-то, что сделает работу, в том числе неанглийских символов, поскольку трудно предложить что-то, не зная ваших точных требований. – Jonnus

+0

Подождите, @RacilHilan, я снова попробовал ваш код, и все получилось! Вы рок-н-ролл. Jonnus, спасибо, а также помощник. Мои лучшие приветствия. – Lyondhur