以下は、シート「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
過去 6 か月分のデータのみが表示されるようにしてほしい。たとえば、10 月 13 日の現在の月の場合、
ID 13年4月 13年5月 13年6月 13年7月 13年8月 13年9月 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