我有一个要过滤的Excel文件,其中一列要添加特定值
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
我又该如何过滤大约一列空白单元格,并在另一列上添加特定值“其他”?
[
例如,如果缺少Samsung Devices表,可以写什么条件? 因为如果我运行代码,它会崩溃,它正在寻找三星。
我该怎么办? 谢谢您的帮助!
答案 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。