Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Замена значений в ячейке, определённой по 2-м критериям - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Замена значений в ячейке, определённой по 2-м критериям (Макросы/Sub)
Замена значений в ячейке, определённой по 2-м критериям
master-dd Дата: Вторник, 26.03.2019, 13:33 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 76
Репутация: 1 ±
Замечаний: 0% ±

2016
Всем доброго времени суток!

Прошу помочь с решением, в общем-то простой с виду задачки... Есть диапазон ячеек. В каждой ячейке содержится разная информация. Но в некоторых ячейках содержится вот такой похожий текст: <b>20 Pieces</b> и <b>150 Pieces</b>. Т.е. то, что позволяет выделить эти ячейки из всего массива - обязательное наличие в тексте слова "Pieces"
В итоге необходимо получить в этих ячейках текст, который будет начинаться на <bb>20 и <bb>150 (как вариант, <bb>20 Pieces</b> и <bb>150 Pieces</b>), т.е. заменить начало текста с <b> на <bb>.
Единственное, что я смог, изваял вот такой вот код:
[vba]
Код
Sub bbb()

    With Worksheets("1").Range("A1:A50000")
      Set b = .Find("<b>", LookIn:=xlValues)
      Set c = .Find("Pieces", LookIn:=xlValues)
      If Not b Is Nothing And Not c Is Nothing Then
        firstResult = b.Address
        Do
          b.Value = "<bb>"
          Set b = .FindNext(b)
          If b Is Nothing Then Exit Do
        Loop While b.Address <> firstResult
      End If
    End With

End Sub
[/vba]

Но в итоге текст искомых ячеек становится только "<bb>" и то как-то криво...
Во вложении пример. Прошу помочь всем, кто знает, как справиться с этой трудностью. Заранее спасибо.
К сообщению приложен файл: 8461031.xlsb(14.6 Kb)
 
Ответить
СообщениеВсем доброго времени суток!

Прошу помочь с решением, в общем-то простой с виду задачки... Есть диапазон ячеек. В каждой ячейке содержится разная информация. Но в некоторых ячейках содержится вот такой похожий текст: <b>20 Pieces</b> и <b>150 Pieces</b>. Т.е. то, что позволяет выделить эти ячейки из всего массива - обязательное наличие в тексте слова "Pieces"
В итоге необходимо получить в этих ячейках текст, который будет начинаться на <bb>20 и <bb>150 (как вариант, <bb>20 Pieces</b> и <bb>150 Pieces</b>), т.е. заменить начало текста с <b> на <bb>.
Единственное, что я смог, изваял вот такой вот код:
[vba]
Код
Sub bbb()

    With Worksheets("1").Range("A1:A50000")
      Set b = .Find("<b>", LookIn:=xlValues)
      Set c = .Find("Pieces", LookIn:=xlValues)
      If Not b Is Nothing And Not c Is Nothing Then
        firstResult = b.Address
        Do
          b.Value = "<bb>"
          Set b = .FindNext(b)
          If b Is Nothing Then Exit Do
        Loop While b.Address <> firstResult
      End If
    End With

End Sub
[/vba]

Но в итоге текст искомых ячеек становится только "<bb>" и то как-то криво...
Во вложении пример. Прошу помочь всем, кто знает, как справиться с этой трудностью. Заранее спасибо.

Автор - master-dd
Дата добавления - 26.03.2019 в 13:33
_Boroda_ Дата: Вторник, 26.03.2019, 14:21 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15195
Репутация: 5972 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код
Sub tt()
    n_ = Cells(Rows.Count, 1).End(3).Row - 1
    ar = Cells(2, 1).Resize(n_)
    For i = 1 To n_
        If InStr(ar(i, 1), "Pieces") Then
            ar(i, 1) = Replace(ar(i, 1), "<b>", "<bb>")
        End If
    Next i
    Cells(2, 2).Resize(n_) = ar'если в то же место вставлять, то  Cells(2, 1)
End Sub
[/vba]
К сообщению приложен файл: 8461031_1.xlsb(15.8 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[vba]
Код
Sub tt()
    n_ = Cells(Rows.Count, 1).End(3).Row - 1
    ar = Cells(2, 1).Resize(n_)
    For i = 1 To n_
        If InStr(ar(i, 1), "Pieces") Then
            ar(i, 1) = Replace(ar(i, 1), "<b>", "<bb>")
        End If
    Next i
    Cells(2, 2).Resize(n_) = ar'если в то же место вставлять, то  Cells(2, 1)
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 26.03.2019 в 14:21
master-dd Дата: Вторник, 26.03.2019, 15:29 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 76
Репутация: 1 ±
Замечаний: 0% ±

2016
_Boroda_, именно так! Огромное спасибо!!! 3 часа сам потратил, но не дошёл умом!
 
Ответить
Сообщение _Boroda_, именно так! Огромное спасибо!!! 3 часа сам потратил, но не дошёл умом!

Автор - master-dd
Дата добавления - 26.03.2019 в 15:29
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Замена значений в ячейке, определённой по 2-м критериям (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2019 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!