2015-06-04 42 views
0

我想过滤基于月份的表中的数据。它有一个日期单元格。我知道我可以使用过滤器选项,但我不想通过该方法来决定选择哪个月。我宁愿有一个更加用户友好的下拉框,通过它我选择月份,并且显示的数据只是那个月的数据。有谁知道我可以如何实现这一点?打开使用宏和VBA。在Excel中过滤数据而不必使用“过滤器”

回答

0

这只是技术的一个例子........你将不得不修改这个以满足你的需求。假设我们有:

enter image description here

随着细胞C1数据验证下拉。将此事件宏放在工作表代码区域中:

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim t As Range, mn As Variant 
    Set t = Range("C1") 
    If Intersect(t, Target) Is Nothing Then Exit Sub 
    mn = t.Value 
    Cells.EntireRow.Hidden = False 
    If mn = 0 Or mn = "" Then Exit Sub 

    For i = 2 To 24 
     mnt = Month(Cells(i, 1).Value) 
     If mnt <> mn Then 
     Cells(i, 1).EntireRow.Hidden = True 
     End If 
    Next i 
End Sub 

宏将监视您的选择并相应地显示/隐藏行。

因为它是工作表的代码,这是非常容易安装和自动使用:

  1. 右键单击靠近Excel窗口底部的标签名称
  2. 选择查看代码 - 这带来了一个VBE窗口
  3. 粘贴的东西并关闭VBE窗口

如果您有任何问题,首先尝试在一个审判工作。

如果保存工作簿,宏将与其一起保存。 如果您正在使用一个版本的Excel更高然后2003,你必须保存 该文件作为.XLSM而非的.xlsx

要删除宏:

  1. 弹出窗口VBE如上
  2. 清晰的代码进行
  3. 关闭VBE窗口

要了解更多关于一般的宏,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

要了解更多有关事件宏(工作表的代码),请参阅:

http://www.mvps.org/dmcritchie/excel/event.htm

宏必须为此工作启用!