Страницы: 1
RSS
VBA.Замена одних текстов на листе на другие
 
Подскажите, пожалуйста: как можно настроить в Excel автоматическую замену текста на листе.
Есть условная табличка скриншот ниже. Нужно, что бы Excel автоматически менял текст в диапазоне ячеек A1:A20 с: "Указывайте лицевой счет №123456" заменить на "№123456" , с "Необходимо указывать физический адрес" заменить на "-" , с "Вместо номера договора указывайте адрес" заменить на "-" .

Пробовал это реализовать функциями Подставить, заменить, через меню Файл - Параметры - Правописание - Параметры автозамены, но ничего Неполучается.
Скриншот и файл прикрепляю.

Заранее благодарю за помощь.
Изменено: SanyaMan90 - 31.01.2020 12:43:40
 
Заменять после вставки данных на лист в ячейки таблицы. Сама таблица будет увеличиваться в строках будет например от A1 до условно A500, но текст будет идентичный и нужна автозамена в диапазоне от A1 до условно A500 : (с "Указывайте лицевой счет №123456" заменить на "№123456" , с "Необходимо указывать физический адрес" заменить на "-" , с "Вместо номера договора указывайте адрес" заменить на "-" .)  
 
Скрытый текст
Изменено: Nordheim - 31.01.2020 13:11:13
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim,Благодарю за ответ. Подскажите еще пожалуйста, а можно этот макрос переделать для замены текста по всему листу, а не только в столбце А?  Где что в коде нужно поменять не пойму. Заранее благодарю.
Изменено: SanyaMan90 - 31.01.2020 14:07:35
 
В массив забирается все что находится вокруг ячейки А1 без разрыва. замена производится только по 1 столбцу и выгружается только 1 столбец.
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, А можно дописать в коде где то что бы оно меняло например и в ячейке А и в ячейке D. Пример на скриншоте. Пока токо учусь читать код и разбираться в макросах. Если не сложно подскажите пожалуйста. Или нужно 2 макроса делать для каждого столбца ?
Изменено: SanyaMan90 - 31.01.2020 14:14:28
 
Цитата
SanyaMan90 написал:
оно меняло например и в ячейке А и в ячейке D
A это колонка №1, B - №2, С - №3 и т.д. Меняйте вторую мерность массива, это и будет перемещение по столбцам.
Но нужно учитывать что бы не было разрывов (пустыми строками и столбами между диапазонами) в коде прописано все вокруг ячейки [a1] в таблице с вашего фото это работать не будет, тут вместо
Код
[a1].currentregion.value
необходимо написать
Код
activesheet.usedrange.value
Изменено: Nordheim - 31.01.2020 14:19:26
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim,Сделал по Вашему совету. Без разрывов и код поменял. все равно по старому пока.  
 
Nordheim,Получилось 2-мя кнопками с разной буквой кода [a1].Resize(UBound(arr)).Value = arr   и [b1].Resize(UBound(arr)).Value = arr ;-) Как на одну кнопку уместить пока не знаю.

Вроде разобрался  ;-)
Скрытый текст
Изменено: SanyaMan90 - 31.01.2020 14:58:45
 
Вы заполнили столбец d значениями из столбца a
"Все гениальное просто, а все простое гениально!!!"
 
Не совсем понятно, что вы хотите, первоначальный вопрос решен. Далее уже совсем другая история, конкретизируйте что да как желательно с примерами.
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim,Есть табличка (пример реальной таблицы только с меньшим количеством строк) скриншот ниже также приложил файл Excel.
В данной таблице примерно раз в месяц частично меняются местами строк названия провайдеров и логины (но сами формулировки в поле логин всегда идентичны).  

Хочу сделать так что бы с помощью макроса при нажатии на кнопку во всем столбце D и G вместо формулировки "Логин не требуется, при оформлении заявки указывайте физический адрес магазина" был прочерк - , вместо формулировки "При оформлении заявки указывайте лицевой счет №123456 и физический адрес магазина"  было  только №123456   , вместо формулировки "При оформлении заявки указывайте физический адрес магазина" был прочерк - .

Если код позволяет, то было бы идеально если в  столбце F если возможно то в пустых ячейках что бы был прочерк - , а в столбце G в пустых ячейках ставилась надпись "Нет второго провайдера"  .


Я только начал разбираться и учиться макросам и поэтому знаний очень мало вот и обращаюсь за помощью. Заранее благодарю.
 
Цитата
SanyaMan90 написал:
Я только начал разбираться и учиться макросам
Посмотрите функцию Instr если ее совместить с left то вариант с лицевым счетом можно решить этими двумя функциями, только в том случае если номер имеет всегда 6 символов, в противном слусае нужно немного иначе обрабатывать. так же посмотрите как занести данные в массив и циклом по массиву заменить то что не нужно на то что нужно (у меня в коде это есть), так же посмотрите, как выгрузить  обработанный масив на лист . На данный момент на работе загруз, поэтому нет времени писать код, да и если все написать за вас, то так ничему не научитесь. Пробуйте экспериментируйте, и все получится.  ;)
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim,Где почитать лучше? Читаю тут  https://maxfad.ru/programmer/vba/357-rabota-so-strokami-v-vba-instr-lcase-ucase-left-right-mid-ltrim-rtrim-trim-len-replace-space-strcomp-string-strreverse.html#a5 , https://vremya-ne-zhdet.ru/vba-excel/funktsiya-instr/ , https://vremya-ne-zhdet.ru/vba-excel/funktsii-left-mid-right/#3  . Практически ничего непонятно  :cry:  
 
А что именно непонятно по первой ссылке, так вообще все подробно разжевали с примерами. Может стоит начать с азов, а не сразу пытаться писать сложные программы?
Почитайте про логические операторы If, Select case, что такое циклы, про переменные и типы данных, что такое процедура и функция и чем отличаются. Думаю, что проблема в незнании элементарной мат, части. Что же касается функции InStr то описание такое
Синтаксис
Код
Instr ([начало, ]строка1, строка2[, сравнение] )

InStr - Возвращает значение типа Variant (Long), определяющее положение первого вхождения одной строки в другую.
Описание параметров
Скрытый текст

Аргумент сравнение может принимать следующие значения:
Скрытый текст

Больше мне добавить нечего.
"Все гениальное просто, а все простое гениально!!!"
 
Разобрался. Всем спасибо. На данный момент неактуально.
Страницы: 1
Наверх