我有這段代碼,我想通過兩個日期(例如:2009年1月1日至2010年10月10日)篩選自動填充結果。我怎樣才能做到這一點?有人有線索嗎?下面的代碼被簡化了(目前只有更多的範圍)。我試圖在If函數中添加條件,但我只是得到錯誤...感謝您的幫助。順便說一下,我對這段代碼有很大的幫助,所以我是一個在excel宏vba中的小白菜:)。按日期篩選結果,或者通過beetwen兩個日期篩選結果
dimResult1,clean1等代表日期值。如果oCellResult1.Offset(iCellCount,0).Value = oCell.Offset(0,4).Value不在兩個日期之間,我不能做的是跳到nextcell。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim oCell As Excel.Range
Dim oCellResult1 As Excel.Range
Dim oCellResult2 As Excel.Range
Dim oCellClean1 As Excel.Range
Dim oCellClean2 As Excel.Range
Dim oRangeID As Excel.Range
Dim iCellCount As Integer
If Target.Address = "$T$4" Then
'Set source data
Set oRangeID = Sheets("Registo_EPI").Range("A3:A5000")
'Define initial target for the results obtained
'data
Set oCellResult1 = Sheets("Distribuição_EPI").Range("U12")
'luvas
Set oCellResult2 = Sheets("Distribuição_EPI").Range("E12")
'Clear up any previous data
Set oCellClean1 = oCellResult1
Set oCellClean2 = oCellResult2
While Len(oCellClean1.Value) > 0
oCellClean1.ClearContents
Set oCellClean1 = oCellClean1.Offset(1, 0)
oCellClean2.ClearContents
Set oCellClean2 = oCellClean2.Offset(1, 0)
Wend
'Scans source range for match data
For Each oCell In oRangeID
If oCell.Value = "" Then Exit For
If oCell.Value = Target.Value Then
'data
oCellResult1.Offset(iCellCount, 0).Value = oCell.Offset(0, 4).Value
'luvas
oCellResult2.Offset(iCellCount, 0).Value = oCell.Offset(0, 9).Value
iCellCount = iCellCount + 1
If iCellCount = 14 Then iCellCount = iCellCount + 20
End If
Next oCell
End If
End Sub
從來就加入這一點,但由於某種原因isn't工作「如果oCell.Value = Target.Value而oCell.Offset(0,4).value的> = Range(「S5」)和oCell.Offset(0,4).Value <= Range(「V5」)Then「。 – RMAMDF 2011-04-08 10:05:33
嗨@RMAMDF,我相信會更好的過濾數據*之後*填充範圍,而不是過濾時填充數據。你能否給我們一個你現在擁有的數據和你想要的數據的例子? – 2011-04-08 11:31:56
@Tiago Cardoso,我試圖過濾數據,但宏總是獲取所有值,過濾或不過濾。也許是一個命令,告訴宏只會檢查未被過濾的值? 如果我只過濾2009年的日期,則會顯示2007年至2010年的所有日期。如果你看到宏,我想過濾的數據是這個「oCellResult1.Offset(iCellCount,0).Value = oCell.Offset(0,4).Value」。該結果對應於該單元偏移列中的所有日期(例如:01-04-2007,16-09-2010等)。 – RMAMDF 2011-04-08 14:42:30