Задать вопрос

Как пронумировать ячейки по содержимому?

Имеется таблица вида

7c6b459795954fe8b131d4b156a59173.png

Необходимо в соответствии с содержимым ячейки В нумеровать ячейки С. (Интересует именно условие "содержит", а не "равно".) Я вижу это примерно так как ниже, но опыта работы с VBA нет, по этому что-то идет не так и макрос не выполняется, при этом ошибок не выводит.
Sub Numer()

Dim i As Integer
Dim SHEET0 As String
Dim Novoal As String
Dim Stav As String
Dim Chr As String
SHEET0 = "16.03.15"

Novoal = "Новоалександровский "
Stav = "Ставрополь"
Chr = "Черкесск"

For i = 2 To SHEET0_STR
    Application.StatusBar = "Ждите" & Str(i)
    REGNUMBER = Val(Worksheets(SHEET0).Cells(i, "С").Value)

  If (Worksheets(SHEET1).Cells(i, "B").Value Like Novoal) Then
            Worksheets(SHEET0).Cells(i, "С").Value = 1
  End If
    If (Worksheets(SHEET0).Cells(i, "B").Value Like Stav) Then
             Worksheets(SHEET0).Cells(i, "С").Value = 2
  End If
      If (Worksheets(SHEET0).Cells(i, "B").Value Like Chr) Then
            Worksheets(SHEET0).Cells(i, "С").Value = 3
  End If
  Next i
End Sub
  • Вопрос задан
  • 231 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
honor8
@honor8
Принципы быстродействия VBA в описании
Чтобы найти подстроку в строке с помощью оператора Like (Примеры), необходимо подстроку выделить символом звёздочки "*" с обеих сторон. Нужно помнить, что регистр букв необходимо соблюдать.
Рекомендую также в самом начале модуля вписать строку Option Explicit, что позволит избежать обращения к несуществующим переменным (все переменные должны быть объявлены через оператор Dim).
Можете попробовать использовать регулярные выражения, как посоветовали ниже, но в данном контексте можно обойтись и без них.
Проще всего использовать вариант #3 (который предложили ниже), но на слабом ПК будет тормозить.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы