Замена видимых ячеек в столбце данными из другого столбца

#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. Извините, я действительно смог это выяснить. Я просто убрал переменные, которые я уже определил в своем предыдущем комментарии. Теперь полный код полностью интегрирован в мой предыдущий код. Еще раз спасибо за вашу помощь