2016-11-16 70 views
0

從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

我想這就是你要找的。它將=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列),然後使用它來過濾數據,然後我添加了一些代碼來刪除過濾器。最後一行搜索必須在您確定將始終有數據的列上完成。如果不正確,請更改LastRow = Cells(Rows.Count, "J").End(xlUp).Row中的J所需的列。

+0

感謝您的回答......現在我對此非常清楚。 – ela

相關問題