こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

マクロについて教えてください

マクロ初心者です。
A~D列の表が少ない時100行、多い時400行あり、同じ操作を何回か繰り返すため、できればマクロで処理したいと思っています。

マクロ記録で作成したのですが、最終行が一定ではないため行数が増えると上手く作動しません。
どこを修正したらいいでしょうか。ご教示いただければ幸いです。

Sub Macro1()
'
' Macro1 Macro
'
ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""集計"","""")"
Range("G2").Select
Selection.AutoFill Destination:=Range("G2:G4"), Type:=xlFillDefault
Range("G2:G4").Select
Range("H2").Select
ActiveCell.FormulaR1C1 = "=SUMIF(R2C1:R13C1,RC[-1],R2C2:R13C2)"
Range("H2").Select
Selection.AutoFill Destination:=Range("H2:H4"), Type:=xlFillDefault
Range("H2:H4").Select
Range("H5").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)"
Range("H6").Select

End Sub

ちなみに作成したいマクロ
1.F列にA列の「集計」を取り出して、G列にF列の「集計」文字を取り除く。
2.H列にB列「数」を計算する
3.H列の最終行に合計を出す。

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2014-03-28 21:36:06

QNo.8532727

困ってます

質問者が選んだベストアンサー

こんばんは!
一例です。

画像ではA列に各コード別の集計が表示してありますね。
かえってその行が邪魔になっていますが、
その行があってもなくても対応できるようにしています。

Sub Sample1()
Dim i As Long, lastRow As Long
lastRow = Cells(Rows.Count, "H").End(xlUp).Row
If lastRow > 1 Then
Range(Cells(2, "F"), Cells(lastRow, "H")).ClearContents
End If
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
If InStr(Cells(i, "A"), "集計") = 0 Then
If WorksheetFunction.CountIf(Range("F:F"), Cells(i, "A") & "集計") = 0 Then
With Cells(Rows.Count, "F").End(xlUp).Offset(1)
.Value = Cells(i, "A") & "集計"
.Offset(, 1) = Cells(i, "A")
.Offset(, 2) = WorksheetFunction.SumIf(Range("A:A"), .Offset(, 1), Range("B:B"))
End With
End If
End If
Next i
Cells(Rows.Count, "H").End(xlUp).Offset(1) = WorksheetFunction.Sum(Range("H:H"))
End Sub

※ データがバラバラでも大丈夫です。
こんな感じではどうでしょうか?m(_ _)m

投稿日時 - 2014-03-28 22:15:25

お礼

A列のデータがばらばらの場合を考慮し、作成していただき感謝感激です。
上手く作動しました。これで手間暇いらず処理できるので助かります。
ありがとうございました。

投稿日時 - 2014-03-29 07:07:54

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問