excel中的动态默认打开页面

时间:2013-09-29 09:41:59

标签: excel-vba vba excel

以下是我在“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

我希望数据最近六个月才能看到。例如,如果是10月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

应隐藏其余列。如果10月13日没有数据,则当前月份视图应与9月13日相同。我有月份行填写到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

0 个答案:

没有答案