1

以下是我在工作表“Sheet1”中的数据

ID Jan-13 Feb-13 Mar-13 Apr-13 Apr-13 May-13 Jun-13 Jul-13 Aug-13 Sep-13
A1 12 16 26 46 10 20 50 40 25 15
A2 24 18 24 26 20 20 20 20 25 25
A3 48 15 30 18 30 10 10 10 20 45
A4 16 51 20 10 40 50 20 30 30 15

我希望数据只能在最近六个月内可见。例如,如果当前月份为 Oct-13,

ID Apr-13 May-13 Jun-13 Jul-13 Aug-13 Sep-13
A1 10 20 50 40 25 15
A2 20 20 20 20 25 25
A3 30 10 10 10 20 45
A4 40 50 20 30 30 15

如果当前月份是 11 月 13 日,则 10 月 13 日的值将可见。

ID May-13 Jun-13 Jul-13 Aug-13 Sep-13 Oct-13
A1 20 50 40 25 15 10
A2 20 20 20 25 25 25
A3 10 10 10 20 45 35
A4 50 20 30 30 15 30

其余列应隐藏。如果 13 年 10 月没有数据,则当前月份视图应与 13 年 9 月相同。我的月份行填充到 2014 年,每一行都有基于另一张表“Sheet2”的公式。如果我在“Sheet2”中添加 oct-13 的数据,则“Sheet1”中 Oct-13 列的数据将可见,否则将为空白。如果有人帮助我如何使用 excel VBA 使这个动态化,那将会很有帮助。

假设我的标题在第 2 行,并且我正在使用该today()函数获取当前日期。我正在用同一列中提到的月份检查当前日期。today() 函数将在该列中有值时移动到下一个单元格。否则它保留在同一列中。这是我对上述任务的解决方法。我认为这需要简化和工作。

Sub Workbook_Open()
    Cells(A1).Select
    Selection.End(xlToRight).Select
    r = Selection.Row
    c = Selection.Column
    If Month(Cells(r, c)) = Month(Cells(r + 1, c)) + 1 Then
        ActiveCell.Offset(0, -7).Select
        Range(Selection, Cells(ActiveCell.Row, 2)).Select
        Selection.Hide
        Cells(r, c).Select
        ActiveCell.Offset(1, 1).Select
        Range(Selection, Cells(ActiveCell.Row, Selection.End(xlToRight).Select)).Select
        Selection.Hide
    Else
        Cells(r, c).Content.Cut
        ActiveCell.Offset(0, 1).Select
        Selection.Paste
    End If
End Sub
4

0 回答 0