#excel #vba
#excel #vba
Вопрос:
Вот моя проблема, я фильтрую столбец S по типу «Большой», после этого я перехожу к видимым ячейкам в столбце T и заменяю его данными в столбце V. Проблема в том, что данные колеблются, поэтому я не могу просто заставить свой макрос заменить весь столбец T на столбец V.
У меня есть код для фильтрации и видимых строк, но я не знаю, как завершить код макроса, чтобы он заменял видимые ячейки в столбце T видимыми ячейками в столбце V. Столбец V также меняется, поэтому T4 должен быть заменен на V4, а затем T27 должен быть заменен на V27 и Т.Д. … это произвольные #, видимые ячейки могут переключаться каждую неделю.
ActiveSheet.UsedRange.AutoFilter Field:=19, Criteria1:= _
"Large"
Dim sh As Worksheet, rng As Range, LstRw As Long
Set sh = Sheets("Sheet1")
With sh
LstRw = .Cells(.Rows.Count, "A").End(xlUp).Row
Set rng = .Range("A2:A" amp; LstRw).SpecialCells(xlCellTypeVisible)
Как бы выглядел мой лучший код, чтобы удовлетворить потребность?
Ответ №1:
Попробуйте следующий код, пожалуйста:
Sub testFilterReplaceVisCells()
Dim sh As Worksheet, rng As Range, rngT As Range
Dim LstRw As Long, rngArea As Range, cel As Range
Set sh = Sheets("Sheet1")
sh.UsedRange.AutoFilter field:=19, Criteria1:="Large"
LstRw = sh.cells(rows.count, "A").End(xlUp).row
Set rngT = sh.Range("T2:T" amp; LstRw).SpecialCells(xlCellTypeVisible)
For Each rngArea In rngT.Areas
For Each cel In rngArea.cells
cel.value = sh.cells(cel.row, "V").value
Next
Next
End Sub
Комментарии:
1. Таким образом, данные в видимом столбце V заменены данными в столбце T, что прямо противоположно предполагаемой замене видимых данных в столбце T на видимые данные в столбце V
2. Ups… Я неправильно понял вопрос. Я адаптирую его через минуту… Адаптировано .
3. Да, теперь все исправлено. Спасибо, что помогли мне, это потрясающе!
4. @LittleAuditorium: Нет проблем помочь вам. Но я не совсем понял, в чем проблема… Все, что вы говорите о объявлениях переменных, уже есть в моем коде. У вас возникли проблемы с использованием приведенного выше кода? Если да, вы тестируете его как есть? Если вы пытались его изменить, пожалуйста, отредактируйте свой вопрос, опубликуйте измененный код и объясните, какая ошибка и в какой строке. И отметьте меня здесь, пожалуйста.
5. Извините, я действительно смог это выяснить. Я просто убрал переменные, которые я уже определил в своем предыдущем комментарии. Теперь полный код полностью интегрирован в мой предыдущий код. Еще раз спасибо за вашу помощь