2013-01-07 95 views
1

我已經搜索了這個,並找到了與過濾器和動態範圍分開相關的答案,但無法確定如何將它們放在一起。在Excel中實現動態範圍的過濾器VBA

我的excel工作表的結構是:

  • 數據

    • 日期ABC
    • 2012-02-02 A1 B1 C1
    • 07-07 -2012 a2 b2 c2
  • 圖表

    • 圖表在這張紙上產生

我使用的命名動態範圍myDataRange僅返回那些行,其數據是等於或大於比特定的參考日期:

  • = OFFSET(Data!$ C $ 2,COUNTIF(Data!$ B:$ B,「<」& Graphs!$ B $ 1 &「」),0,(COUNTA(Data!$ C:$ C)-1 -COUNTIF(數據$ B:!$ B, 「<」 &圖形$ B $ 1 & 「」)),1)

在我已進入單元格B1的日期,例如圖表表: 05-05-2012

這將確保myDataRange僅返回第二行數據(日期爲07-07-2012)。 在此之外,我繪製了列C.

問題:但現在我還需要根據列A過濾動態範圍。所以如果參考日期是05-05-2012圖中單元格B1和過濾器是a2,那麼myData範圍只返回一行。但是如果過濾器是05-05-2012和a1,那麼它將返回0行。

有人可以幫助這個 - 我可以修改動態範圍本身,還是我必須以另一種方式實現?我試圖修改動態範圍參數,但我不斷收到錯誤消息,因爲它不返回任何值,然後Excel無法繪製它。在此先感謝:)

+0

您是否嘗試過記錄的自動篩選宏的幫助下工作? :) – bonCodigo

+0

@bonCodigo - 嗨,感謝您的建議。不知道這件事。將立即研究它:) – xcentaur

+0

@bonCodigo - 看起來像Autofilter可能無法正常工作。但發現了一篇關於高級過濾器的文章,可能有助於日期比較。 – xcentaur

回答

2

我使用上面提到的範圍,以及下面的代碼插入到工作表上的組合框。

這裏是代碼:

子DropDown2_Change()

Dim selectedVal As String 

With ThisWorkbook.Sheets("Graphs02").Shapes("Drop Down 2").ControlFormat 
selectedVal = .List(.Value) 
End With 

'MsgBox selectedVal 

With ThisWorkbook.Sheets("Data") 
.Select 
.Range("A1:BY60000").Select 

Selection.AutoFilter 
Selection.AutoFilter Field:=4, Criteria1:=selectedVal 

End With 

ThisWorkbook.Sheets("Graphs02").Select 

結束子

在此

,其上我已經把在組合框中的片(下拉2)是片「graphs02」。 工作表數據包含我的所有數據,根據在組合框中選擇的值進行過濾。

再次,我得到了這個最有計算器:)

+0

AutoFilter也將在Range對象上工作,例如.Range(「A1:BY60000」)。AutoFilter Field:= CellIndex,Criteria1:= FilterValue'(CellIndex和FIlterValue是變量) – Nanook