这是我的第一篇文章。我是VBA和编程的新手。我仍然试图了解何时使用变量和其他所有内容。我正在针对无法更改的下载文件编写基本VBA。代码如下
Sub KPIMacroFull()
Set sht = ThisWorkbook.Worksheets(Sheet1.Name)
Rows("1:2").Select
Selection.Delete Shift:=xlUp
ActiveCell.Offset(0, 9).Activate
Range("J:J").AutoFilter 1, 20
lr = Cells(Rows.Count, "J").End(xlUp).Row
If lr > 1 Then
Range("A2:A" & lr).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End If
Cells.AutoFilter
Cells.AutoFilter
ActiveCell.Offset(0, 0).Activate
ActiveCell.Offset(0, 20).Activate
Range("AD1").EntireColumn.Insert
Range("AD1").Value = "Rush or Regular"
Range("A1:AK1").Columns.AutoFit
Range("AC:AC").AutoFilter 29, "D"
所以基本上我想做的是自动过滤器列AC的值“D”,“K”,“Q”,“V”,“U”,1,9。然后在列AD中,excel将返回“Regular”。对于AC列中的所有其他值(还有大约15个分类),我希望excel返回“Rush”。我正在考虑一个变量来将Regular设置为上面的值,然后从那里开始,但我迷路了。
我检查过很多其他自动过滤器和VBA帖子,但我的问题似乎更为简陋,并没有找到任何太有帮助。
答案 0 :(得分:0)
此代码段独立于您的解决方案,因为它过于依赖于视图
我的片段通过你的" AC"列并完成所有必需的填写
这很耗时,但不如你的那么多(我假设你没有处理100,000个记录数据集,更像是对MMO的几百行评估,所以它真的不重要)。
过滤本身取决于您,将该部分添加到我的子末尾。
Sub ertdfgcvb()
LastRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Dim RegBool As Boolean
Dim ert As String
Dim MyArray(6) As String
MyArray(0) = "D"
MyArray(1) = "K"
MyArray(2) = "Q"
MyArray(3) = "V"
MyArray(4) = "U"
MyArray(5) = "1"
MyArray(6) = "9"
For i = 1 To LastRow
RegBool = False
ert = CStr(Cells(i, 29).Value) 'the CStr is unnecessary
'unless you want to make it case-insensitive, in which case
'you'll want to wrap it in a UCase() function
For j = 0 To 6 'size of your array
If InStr(1, ert, MyArray(j)) <> 0 Then RegBool = True
Next
If RegBool Then
Cells(i, 30) = "Regular"
Else
Cells(i, 30) = "Rush"
End If
Next
End Sub