2007年12月18日火曜日

Excel マクロ-最終セルの式を隣の列の最終行と同じ行までコピー

'Cが入力されている行までDにDの最終行の数式をコピーする

Private Sub FormulaCopy()

Dim 数式を取得する列 As Range
Dim データが入力されている列 As Range

Set 数式を取得する列 = Range("D65536").End(xlUp)
Set データが入力されている列 = Range("C65536").End(xlUp)

Range(数式を取得する列.Offset(0,-1 ), データが入力されている列).Offset(0, 1).Formula = _
数式を取得する列.Formula

End Sub

'Offset(0,-1)と(0,1)は(x,y)の縦横の場所を示す。
'もしDではなくEに数式を入力したい場合で数式の範囲の参照元がCのままである場合は、Offset(0,-2)、Offset(0,2)となる。

2007年12月12日水曜日

Excel マクロ-四半期を算出とその他

もっといい方法がありそうではありますが。。



Sub MonthandQuoter()
Dim LastRow As Long
LastRow = Range("C65536").End(xlUp).Row 'Cは要変更

For y = 2 To LastRow

If Cells(y, 4).Value <> "" Then '4は要変更
Cells(y, 2).Value = Format(Cells(y, 4), "mmm") '列Bに月を入力します 4は要変更
End If

Select Case
Cells(y, 2).Value '列Aに列Bの月を元に四半期を入力します
Case "Jan", "Feb", "Mar"
Cells(y, 1) = "Q1" Case "Apr", "May", "Jun"
Cells(y, 1) = "Q2" Case "Jul", "Aug", "Sep"
Cells(y, 1) = "Q3" Case "Oct", "Nov", "Dec"
Cells(y, 1) = "Q4" Case Else Cells(y, 1) = ""
End Select

If Cells(y, 5).Value = "" Then '5は要変更
Cells(y, 5).Value = Range("E2").Formula '5とE2は要変更
End If
Next
End Sub

2007年12月11日火曜日

Excel マクロ-Pivotを自動更新

Pivotのデータ選択範囲を
挿入>名前>定義で以下のように定義づけして名前をつける。
=OFFSET($A$1,0,0,COUNTA($A:$A),COUNTA($1:$1))
※たとえば名前を「データ範囲」とする。

Macroに以下を記述
Sub Renew()
   Range("A1").Select
   ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
   "データ範囲"
End Sub

http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/exqalounge.cgi?print+200512/05120052.txt
のkomaさんのコメントを参考にさせていただきました。