范围列并将值添加到特定范围

时间:2019-01-02 06:12:12

标签: excel vba excel-vba

我有一个要过滤的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表,可以写什么条件? 因为如果我运行代码,它会崩溃,它正在寻找三星。

Without Samsung Devices

我该怎么办? 谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

要更改仅可见单元格(也就是在过滤器中显示的单元格)的值,可以使用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。