Всем привет. Не могли бы помочь. Суть вопроса следующая: есть ексель 2013 есть список станций метро - каждая станция в первой ячейке каждого столбца: A1 - Автозаводска, B1 - Сокольники и т.д. В ячейках A2:A20, B2:B20 и т.д. шаблонный список фраз. Нужно подменить одно(одинаковое) слово из каждой ячейки списка на значение первой ячейки столбца, т.е. В результате подмены мы должны получить: Вместо шаблонного списка фраз в ячейках A2-A20, B2:B20 и т.д. уже список фраз с названием конкретной станции метро, которая указана в ячейке A1, B2 и т.д.
Демо версия того что ц меня получилось (аэропорт в коде - это станция метро): [vba]
Range("B2:B18").Select Selection.Replace What:="аэропорт", Replacement:=Range("B1:FH1"), LookAt _ :=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub
[/vba] Недостаток в том что столбцов много очень, и для каждого копировать код бредово - можно ли как то оптимизировать этот для работы, либо вообще есть какие то аналоги? по форуму поискал не нашел что то похожего. Спасибо.
Всем привет. Не могли бы помочь. Суть вопроса следующая: есть ексель 2013 есть список станций метро - каждая станция в первой ячейке каждого столбца: A1 - Автозаводска, B1 - Сокольники и т.д. В ячейках A2:A20, B2:B20 и т.д. шаблонный список фраз. Нужно подменить одно(одинаковое) слово из каждой ячейки списка на значение первой ячейки столбца, т.е. В результате подмены мы должны получить: Вместо шаблонного списка фраз в ячейках A2-A20, B2:B20 и т.д. уже список фраз с названием конкретной станции метро, которая указана в ячейке A1, B2 и т.д.
Демо версия того что ц меня получилось (аэропорт в коде - это станция метро): [vba]
Range("B2:B18").Select Selection.Replace What:="аэропорт", Replacement:=Range("B1:FH1"), LookAt _ :=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub
[/vba] Недостаток в том что столбцов много очень, и для каждого копировать код бредово - можно ли как то оптимизировать этот для работы, либо вообще есть какие то аналоги? по форуму поискал не нашел что то похожего. Спасибо.denver2109
Попробуйте этот код. Он перебирает столбцы от первого до тех пор, пока не встретит пустую ячейку в первой строке.
Замените "Что_Меняем" в коде на Ваше слово (тоже в кавычках), которое везде одинаковое.
Сработало?
[vba]
Код
Sub Rio_Exchange()
Dim X As Long X = 1
Do While Cells(1, X).Value <> "" Range(Cells(2, X), Cells(20, X)).Replace What:="Что_Меняем", Replacement:=Cells(1, X).Value, LookAt:=xlPart X = X + 1 Loop
End Sub
[/vba] Чтобы Ваш код выглядел также классно как и мой - можно зайти в редактирование сообщения, выделить только VBA-код и нажать на кнопку # справа на панели кнопок редактирования. Этого требуют правила форума. Как и прикладывание файлов-примеров, но если мой вариант Вас устраивает - то с этой частью можно подождать до следующего вопроса.
denver2109, здравствуйте.
Попробуйте этот код. Он перебирает столбцы от первого до тех пор, пока не встретит пустую ячейку в первой строке.
Замените "Что_Меняем" в коде на Ваше слово (тоже в кавычках), которое везде одинаковое.
Сработало?
[vba]
Код
Sub Rio_Exchange()
Dim X As Long X = 1
Do While Cells(1, X).Value <> "" Range(Cells(2, X), Cells(20, X)).Replace What:="Что_Меняем", Replacement:=Cells(1, X).Value, LookAt:=xlPart X = X + 1 Loop
End Sub
[/vba] Чтобы Ваш код выглядел также классно как и мой - можно зайти в редактирование сообщения, выделить только VBA-код и нажать на кнопку # справа на панели кнопок редактирования. Этого требуют правила форума. Как и прикладывание файлов-примеров, но если мой вариант Вас устраивает - то с этой частью можно подождать до следующего вопроса.Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Сообщение отредактировал Rioran - Четверг, 30.10.2014, 15:12