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

Вход

Регистрация

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

 

= Мир MS Excel/Автозамена в целевом массиве значениями из другого массива - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Автозамена в целевом массиве значениями из другого массива
master-dd Дата: Пятница, 18.05.2018, 12:00 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 78
Репутация: 1 ±
Замечаний: 0% ±

2016
Здравствуйте уважаемое сообщество. К сожалению у меня у самого не получилось решить такую ситуацию.
Есть целевой массив (например, столбец), где есть определённые текстовые данные. Также есть массив (тоже столбец) "Что меняем", где в каждой ячейке есть слова или фразы, которые встречаются в тексте ячеек целевого массива. И есть ещё один столбец "На что меняем", где перечислены слова или фразы, на которые нужно заменить слова или фразы с массива "Что меняем" в целевом массиве. Задача состоит в том, чтобы в целевом массиве были произведены все замены целевых слов.

Я написал такой код:
[vba]
Код
Repl0 = Range("B2").Value
    Repl1 = Range("C2").Value
    
    Columns("A:A").Replace What:=Repl0, Replacement:=Repl1, LookAt:= _
        xlPart, SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
        ReplaceFormat:=False
[/vba]

И, естественно, замена происходит только из значений ячеек B2 и C2. А вот, как сделать так, чтобы заменялись все значения я не смог осилить. Поэтому прошу вашей помощи. Файл-пример прилагаю.
К сообщению приложен файл: 1768098.xlsm (14.3 Kb)


Сообщение отредактировал master-dd - Пятница, 18.05.2018, 12:36
 
Ответить
СообщениеЗдравствуйте уважаемое сообщество. К сожалению у меня у самого не получилось решить такую ситуацию.
Есть целевой массив (например, столбец), где есть определённые текстовые данные. Также есть массив (тоже столбец) "Что меняем", где в каждой ячейке есть слова или фразы, которые встречаются в тексте ячеек целевого массива. И есть ещё один столбец "На что меняем", где перечислены слова или фразы, на которые нужно заменить слова или фразы с массива "Что меняем" в целевом массиве. Задача состоит в том, чтобы в целевом массиве были произведены все замены целевых слов.

Я написал такой код:
[vba]
Код
Repl0 = Range("B2").Value
    Repl1 = Range("C2").Value
    
    Columns("A:A").Replace What:=Repl0, Replacement:=Repl1, LookAt:= _
        xlPart, SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
        ReplaceFormat:=False
[/vba]

И, естественно, замена происходит только из значений ячеек B2 и C2. А вот, как сделать так, чтобы заменялись все значения я не смог осилить. Поэтому прошу вашей помощи. Файл-пример прилагаю.

Автор - master-dd
Дата добавления - 18.05.2018 в 12:00
master-dd Дата: Пятница, 18.05.2018, 12:51 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 78
Репутация: 1 ±
Замечаний: 0% ±

2016
_Boroda_, добрый день. у меня просто в процессе написания вопроса по какой-то причине выдало ошибку 500 на форуме. Поэтому не сразу удалось завершить процесс написания. Файл приложен. суть описана
 
Ответить
Сообщение_Boroda_, добрый день. у меня просто в процессе написания вопроса по какой-то причине выдало ошибку 500 на форуме. Поэтому не сразу удалось завершить процесс написания. Файл приложен. суть описана

Автор - master-dd
Дата добавления - 18.05.2018 в 12:51
_Boroda_ Дата: Пятница, 18.05.2018, 13:04 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 17006
Репутация: 6667 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код
Sub Zamena()
    n_ = Range("B" & Rows.Count).End(3).Row - 1
    ar0 = Range("B2").Resize(n_).Value
    ar1 = Range("C2").Resize(n_).Value
    n1_ = Range("A" & Rows.Count).End(3).Row - 1
    For i = 1 To n_
        Range("A2").Resize(n1_).Replace What:=ar0(i, 1), Replacement:=ar1(i, 1), LookAt:= _
            xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Next i
End Sub
[/vba]
Если нужно замену с учетом регистра, то MatchCase поставьте True
[offtop]*У меня тоже была ошибка 500[/offtop]
К сообщению приложен файл: 1768098_1.xlsm (13.3 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[vba]
Код
Sub Zamena()
    n_ = Range("B" & Rows.Count).End(3).Row - 1
    ar0 = Range("B2").Resize(n_).Value
    ar1 = Range("C2").Resize(n_).Value
    n1_ = Range("A" & Rows.Count).End(3).Row - 1
    For i = 1 To n_
        Range("A2").Resize(n1_).Replace What:=ar0(i, 1), Replacement:=ar1(i, 1), LookAt:= _
            xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Next i
End Sub
[/vba]
Если нужно замену с учетом регистра, то MatchCase поставьте True
[offtop]*У меня тоже была ошибка 500[/offtop]

Автор - _Boroda_
Дата добавления - 18.05.2018 в 13:04
StoTisteg Дата: Пятница, 18.05.2018, 13:30 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Sub Replace()

_Boroda_, это Вы специально стандартную функцию подменили? :)


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщение
Sub Replace()

_Boroda_, это Вы специально стандартную функцию подменили? :)

Автор - StoTisteg
Дата добавления - 18.05.2018 в 13:30
_Boroda_ Дата: Пятница, 18.05.2018, 13:37 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 17006
Репутация: 6667 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Это я просто не посмотрел как у автора было написано и дописал на основе его кода. Конечно нужно поменять. Исправил в пред. посте и файл перевложил


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЭто я просто не посмотрел как у автора было написано и дописал на основе его кода. Конечно нужно поменять. Исправил в пред. посте и файл перевложил

Автор - _Boroda_
Дата добавления - 18.05.2018 в 13:37
master-dd Дата: Пятница, 18.05.2018, 14:55 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 78
Репутация: 1 ±
Замечаний: 0% ±

2016
_Boroda_, Спасибо. Именно так! Когда смотришь на готовый код - всё понятно. А сам такой написать "с нуля" не смог... У меня вообще практически все коды в файлах - переделанные готовые решения других программистов. Так и учусь... Хотя есть уже и собственноручно написанные коды, которые "логически" сам сделал.

Ещё раз ОГРОМНОЕ спасибо!
 
Ответить
Сообщение_Boroda_, Спасибо. Именно так! Когда смотришь на готовый код - всё понятно. А сам такой написать "с нуля" не смог... У меня вообще практически все коды в файлах - переделанные готовые решения других программистов. Так и учусь... Хотя есть уже и собственноручно написанные коды, которые "логически" сам сделал.

Ещё раз ОГРОМНОЕ спасибо!

Автор - master-dd
Дата добавления - 18.05.2018 в 14:55
  • Страница 1 из 1
  • 1
Поиск:

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