Найти и заменить столбцы в excel

Поэтому я пытаюсь написать подпрограмму VBA, где у нас есть 2 входа

Первый столбец – текущее значение, а второй столбец – это значение, которое я хочу заменить.

Проблема, с которой я сталкиваюсь, заключается в том, что она не делает это для всех моих рабочих листов только тот, на котором я это делаю.

Куда мне продолжать?

Sub MultiFindNReplace() Dim Rng As Range Dim InputRng As Range, ReplaceRng As Range Set InputRng = Application.Selection Set InputRng = Application.InputBox("Original Range ", xTitleId, InputRng.Address, Type:=8) Set ReplaceRng = Application.InputBox("Replace Range :", xTitleId, Type:=8) Application.ScreenUpdating = False For Each Rng In ReplaceRng.Columns(1).Cells InputRng.Replace what:=Rng.Value, replacement:=Rng.Offset(0, 1).Value Next Application.ScreenUpdating = True End Sub 

Вы посмотрели на поиск «для каждого рабочего листа в книге»? Это может сделать это.

 Sub MultiFindNReplace() Dim Rng As Range Dim InputRng As Range, ReplaceRng As Range Set InputRng = Application.Selection Set InputRng = Application.InputBox("Original Range ", xTitleId, InputRng.Address, Type:=8) Set ReplaceRng = Application.InputBox("Replace Range :", xTitleId, Type:=8) Application.ScreenUpdating = False For Each ws In ActiveWorkbook.Worksheets ws.Activate For Each Rng In ReplaceRng.Columns(1).Cells InputRng.Replace what:=Rng.Value, replacement:=Rng.Offset(0, 1).Value Next Next Application.ScreenUpdating = True End Sub 

РЕДАКТИРОВАТЬ

Основываясь на ваших комментариях, ваш код на самом деле не подходит для удовлетворения ваших потребностей, поскольку вы хотите программно выбирать свой диапазон. Этот код будет работать, если все ваши столбцы поиска находятся в столбце «B»:

 Sub MultiFindNReplace() Dim Rng As Range Dim ReplaceRng As Range Dim colNum as Int colNum = 2 '2 = B Application.ScreenUpdating = False For Each ws In ActiveWorkbook.Worksheets ws.Activate 'Sets the range from row 2 of the selected column to the last available row in the same column Set ReplaceRng = Range(Cells(2, colNum), Cells(Rows.Count, colNum).End(xlUp)) For Each Rng In ReplaceRng.Columns(1).Cells InputRng.Replace what:=Rng.Value, replacement:=Rng.Offset(0, 1).Value Next Next Application.ScreenUpdating = True End Sub 
Interesting Posts

Перекрестная таблица с перекрестной таблицей с использованием Microsoft Excel

Преобразование формата целого числа в формат даты

Отправка почты из excel Ошибка времени выполнения «429», компонент ActiveX не может создать объект

Excel VBA – поиск по списку и всплывающее сообщение

SUMIF с использованием Excel VBA

Excel 2013 – проблема при закрытии нескольких книг, если одна книга скрыта

VBA: копирование сегментов данных на другой лист

Использование Excel 2007 VBA для добавления событий в Календарь Google

Получить индексы ячейки элемента, выбранного из выпадающего списка

Использование массивов и имен таблиц для уникального списка значений

В Excel, реализация функции поиска по набору значений Lookup

Как создать файл excel для загрузки

Ошибка несоответствия типа 13 – ссылка на объект

Оптимизация кода для чтения кода excel в java

как создать сводную таблицу в Excel с помощью Open XML SDK (XLSX)

Давайте будем гением компьютера.