Столбец Range и добавьте Value в определенный диапазон - PullRequest
0 голосов
/ 02 января 2019

У меня есть файл Excel, который я хочу отфильтровать по одному столбцу, а к другому столбцу добавить определенное значение

The Excel file

Sub Macro1()
'
' Macro1
'

'
    Range("Table1[type phone]").Select
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=1, Criteria1:= _
        "=*samsung*", Operator:=xlAnd
        Range("Table1[company]").Select

        'Here I want to  add the specific value "Samsung"'

    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=1, Criteria1:= _
        "=*iphone*", Operator:=xlAnd
        Range("Table1[company]").Select

        'Here I want to  add the specific value "Apple"'

End Sub

Также как я могуОтфильтруйте один столбец, добавьте пустые ячейки, а в другой добавьте конкретное значение «прочее»?

[others Items[2]

Какие условия можно записать, например, если отсутствует таблица Samsung Devices?Потому что, если я запускаю код, он вылетает в строке, которая ищет Samsung.

Without Samsung Devices

Как я могу это сделать?Спасибо за помощь!

1 Ответ

0 голосов
/ 02 января 2019

Чтобы изменить значение только видимых ячеек (то есть тех, которые отображаются в фильтре), вы можете использовать SpecialCells(xlCellTypeVisible)

Так что для вашего примера код, который будет идти в первом брейке, будет

"Range("B2:B18").SpecialCells(xlCellTypeVisible).Value= "Samsung"

и второй перерыв

"Range("B2:B18").SpecialCells(xlCellTypeVisible).Value= "Apple"

Вам нужно изменить "18" на последний ряд. (Или вы можете определить переменную с именем LastRow, а затем вызвать ее вместо жесткого кодирования числа, что означает, что оно будет динамически меняться в зависимости от количества строк.)


С LastRow

Sub Macro1()

 Dim LastRow As Long
  LastRow = ActiveSheet.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row

    Range("Table1[type phone]").Select
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=1, Criteria1:= _
        "=*samsung*", Operator:=xlAnd
        Range("Table1[company]").Select

Range("B2:B" & LastRow).SpecialCells(xlCellTypeVisible).Value= "Samsung"

    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=1, Criteria1:= _
        "=*iphone*", Operator:=xlAnd
        Range("Table1[company]").Select

Range("B2:B" & LastRow).SpecialCells(xlCellTypeVisible).Value= "Apple"
End Sub

Мы создали новую переменную с именем LastRow и определили ее как long (тип числа). Затем мы определили LastRow в соответствии с формулой, которую я использую с этого сайта: https://www.thespreadsheetguru.com/blog/2014/7/7/5-different-ways-to-find-the-last-row-or-last-column-using-vba

Наконец, мы заменяем Range ("B2: B18") на Range ("B2: B" и LastRow), который динамически заменяет 18 на число LastRow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...