从coumn1过滤3个标准, 过滤对应于第1列结果的空白单元格, 我正在尝试应用TODAY公式并仅在选定的空白中粘贴为值 但它在全范围(k7:k818)的应用帮助我从中恢复。
Range("K5").Select
Selection.AutoFilter
Range("K5").Select
ActiveSheet.Range("$A$5:$N$819").AutoFilter Field:=10, Criteria1:=Array( "DANGER", "END", "STOCKOUT"), Operator:=xlFilterValues
ActiveSheet.Range("$A$5:$N$819").AutoFilter Field:=11, Criteria1:="=END", _
Operator:=xlOr, Criteria2:="="
Range("K6").Select
ActiveCell.FormulaR1C1 = "=TODAY()" (formula is "=TODAY")
Range("K6").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Selection.Copy
Range("K7").Select
Range(Selection, Selection.End(xlDown)).Select_
Range("K7:K818").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
答案 0 :(得分:0)
我认为这就是你要找的东西。在使用与自动过滤器(=Today()
)相同的范围进行过滤后,它将K5:K819
置于所有可见单元格中,然后使用值替换公式。
在我看来,您的代码的其余部分是不必要的,您应该能够使用以下内容。
ActiveSheet.Range("$A$5:$N$819").AutoFilter Field:=10, Criteria1:=Array("DANGER", "END", "STOCKOUT"), Operator:=xlFilterValues
ActiveSheet.Range("$A$5:$N$819").AutoFilter Field:=11, Criteria1:="=END", Operator:=xlOr, Criteria2:="="
Range("K5:K819").SpecialCells(xlCellTypeVisible).Formula = "=Today()"
Range("K5:K819").SpecialCells(xlCellTypeVisible).Value = Range("K5:K819").SpecialCells(xlCellTypeVisible).Value
如果你有一个你知道通过执行以下操作的列总是有一个值,那么这个动态也很容易......
Dim LastRow As Long
LastRow = Cells(Rows.Count, "J").End(xlUp).Row
ActiveSheet.Range("$A$5:$N" & LastRow).AutoFilter Field:=10, Criteria1:=Array("DANGER", "END", "STOCKOUT"), Operator:=xlFilterValues
ActiveSheet.Range("$A$5:$N" & LastRow).AutoFilter Field:=11, Criteria1:="=END", Operator:=xlOr, Criteria2:="="
Range("K5:K" & LastRow).SpecialCells(xlCellTypeVisible).Formula = "=Today()"
Range("K5:K" & LastRow).SpecialCells(xlCellTypeVisible).Value = Range("K6:K" & LastRow).SpecialCells(xlCellTypeVisible).Value
ActiveSheet.Range("$A$5:$N" & LastRow).AutoFilter
上面的代码找到了包含数据的最后一行(在这种情况下是搜索列J),然后使用它来过滤数据,然后我添加了一些代码来删除过滤器。最后一行搜索必须在您确定将始终拥有数据的列上完成。如果不正确,请更改J
所需列中的LastRow = Cells(Rows.Count, "J").End(xlUp).Row
。