No.2ベストアンサー
- 回答日時:
No.1です。
>罫線(各集計行を太字+太罫線を入れる)など・・・
の「太字」の部分を見逃していました。
そして、「集計行」の「原価率」が違っていましたので
前回のコードは消去し、↓のコードに変更してください。
Sub Sample2()
Dim i As Long, lastRow As Long, c As Range, myRng As Range
Dim myFound As Range, myFirst As Range
Application.ScreenUpdating = False
Cells.Interior.ColorIndex = xlNone
Cells.Font.Bold = False
Set c = Range("A:A").Find(what:="総計", LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Set myRng = c
End If
Set myFound = Range("A:A").Find(what:="集計", LookIn:=xlValues, lookat:=xlPart)
If Not myFound Is Nothing Then
Set myFirst = myFound
If myRng Is Nothing Then
Set myRng = myFound
Else
Set myRng = Union(myRng, myFound)
End If
Do
Set myFound = Range("A:A").FindNext(after:=myFound)
If myFound.Address = myFirst.Address Then Exit Do
Set myRng = Union(myRng, myFound)
Loop
End If
If Not myRng Is Nothing Then
myRng.EntireRow.Delete
End If
Range("A1").CurrentRegion.Sort key1:=Range("A1"), order1:=xlAscending, Header:=xlYes
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
With Cells(lastRow + 1, "A")
.Value = "総計"
.Font.Bold = True
.Offset(, 2) = WorksheetFunction.Sum(Range("C:C"))
.Offset(, 4) = WorksheetFunction.Sum(Range("E:E"))
.Offset(, 5) = WorksheetFunction.Sum(Range("F:F"))
.Offset(, 3) = .Offset(, 2) / .Offset(, 5)
.Offset(, 3).Interior.ColorIndex = 6
End With
Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous
Cells(lastRow + 1, "A").Resize(, 6).Borders(xlEdgeTop).Weight = xlMedium
For i = lastRow + 1 To 3 Step -1
If Cells(i, "A") <> Cells(i - 1, "A") Then
Rows(i).Insert
With Cells(i, "A")
.Value = Format(Cells(i - 1, "A"), "00") & " 集計"
.Font.Bold = True
.Offset(, 2) = WorksheetFunction.SumIf(Range("A:A"), Cells(i - 1, "A"), Range("C:C"))
.Offset(, 4) = WorksheetFunction.SumIf(Range("A:A"), Cells(i - 1, "A"), Range("E:E"))
.Offset(, 5) = WorksheetFunction.SumIf(Range("A:A"), Cells(i - 1, "A"), Range("F:F"))
.Offset(, 3) = .Offset(, 2) / .Offset(, 5)
.Offset(, 3).Interior.ColorIndex = 6
.Resize(, 6).Borders(xlEdgeTop).Weight = xlMedium
End With
End If
Next i
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
どうも失礼しました。m(_ _)m
tom04さん、早速にご回答頂きまして誠にありがとうございました。思った通りになりました!訂正まで頂きまして感謝申し上げます。しっかり勉強したい思います。
No.3
- 回答日時:
こんなのでどうでしょうか。
SUBTOTALを使って、分類をキーに原価、数量、売上を集計および総計を求めます。
次に原価率が空白の行(SUBTOTALで集計した行)に対して、原価率を求める数式と色、罫線の設定をすれば完成です。
Sub sample()
Dim I As Long
Range("A1").Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(3, 5, 6), _
Replace:=True, PageBreaks:=False, SummaryBelowData:=True
For I = 1 To Range("A1").CurrentRegion.Rows.Count
If Range("D" & I) = "" Then
Range("D" & I).FormulaR1C1 = "=RC[-1]/RC[2]"
Range("D" & I).Interior.Color = 65535
With Range("A" & I & ":F" & I)
.Borders(xlEdgeTop).Weight = xlMedium
.Borders(xlEdgeBottom).Weight = xlThin
.Borders(xlEdgeLeft).Weight = xlThin
.Borders(xlEdgeRight).Weight = xlThin
.Borders(xlInsideVertical).Weight = xlThin
End With
End If
Next I
End Sub
ママチャリさん、早速にご回答誠にありがとうございます。思った通りになりました!これから、勉強し解読しモノにしたいと思います。2回もご提示頂きました、tom04にこのたびはベストアンサーに選ばせて頂きたいと思います。ありがとうございました。
No.1
- 回答日時:
こんにちは!
すこし長くなりましたが・・・
Sub Sample1()
Dim i As Long, lastRow As Long, c As Range, myRng As Range
Dim myFound As Range, myFirst As Range
Application.ScreenUpdating = False
Cells.Interior.ColorIndex = xlNone
Set c = Range("A:A").Find(what:="総計", LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Set myRng = c
End If
Set myFound = Range("A:A").Find(what:="集計", LookIn:=xlValues, lookat:=xlPart)
If Not myFound Is Nothing Then
Set myFirst = myFound
If myRng Is Nothing Then
Set myRng = myFound
Else
Set myRng = Union(myRng, myFound)
End If
Do
Set myFound = Range("A:A").FindNext(after:=myFound)
If myFound.Address = myFirst.Address Then Exit Do
Set myRng = Union(myRng, myFound)
Loop
End If
If Not myRng Is Nothing Then
myRng.EntireRow.Delete
End If
Range("A1").CurrentRegion.Sort key1:=Range("A1"), order1:=xlAscending, Header:=xlYes
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
With Cells(lastRow + 1, "A")
.Value = "総計"
.Offset(, 2) = WorksheetFunction.Sum(Range("C:C"))
.Offset(, 4) = WorksheetFunction.Sum(Range("E:E"))
.Offset(, 5) = WorksheetFunction.Sum(Range("F:F"))
.Offset(, 3) = .Offset(, 2) / .Offset(, 5)
End With
Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous
Cells(lastRow + 1, "A").Resize(, 6).Borders(xlEdgeTop).Weight = xlMedium
For i = lastRow + 1 To 3 Step -1
If Cells(i, "A") <> Cells(i - 1, "A") Then
Rows(i).Insert
With Cells(i, "A")
.Value = Format(Cells(i - 1, "A"), "00") & " 集計"
.Offset(, 2) = WorksheetFunction.SumIf(Range("A:A"), Cells(i - 1, "A"), Range("C:C"))
With .Offset(, 3)
.Value = WorksheetFunction.AverageIf(Range("A:A"), Cells(i - 1, "A"), Range("D:D"))
.Interior.ColorIndex = 6
End With
.Offset(, 4) = WorksheetFunction.SumIf(Range("A:A"), Cells(i - 1, "A"), Range("E:E"))
.Offset(, 5) = WorksheetFunction.SumIf(Range("A:A"), Cells(i - 1, "A"), Range("F:F"))
.Resize(, 6).Borders(xlEdgeTop).Weight = xlMedium
End With
End If
Next i
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
※ データは「総計」の後に追加しても対処できるようにしていますので、
余計なコードが多くあるかもしれませんが、
まずはこんな感じではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) ピボットテーブルへの集計フィールド挿入 1 2023/02/26 11:33
- Excel(エクセル) Excelのマクロを教えていただけないでしょうか? 1 2023/07/06 19:56
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Excel(エクセル) エクセルのSUM関数について 4 2023/04/18 10:37
- Excel(エクセル) 【Excel質問】別シートにある複数の同型の表から、同じ行項目にある数字を集計する 4 2023/02/16 00:14
- Access(アクセス) Access クエリ 同一テーブル内 複数フィールドの同時集計のやり方について 1 2022/05/18 19:01
- Excel(エクセル) エクセル 自動計算 1 2023/01/30 13:28
- Excel(エクセル) エクセルで計算結果が0でないときのみセルを更新したい 4 2022/07/30 11:58
- Excel(エクセル) EXCELピボットテーブル関数について 2 2023/04/10 20:35
- Excel(エクセル) IF 関数で「〇〇 という文字を含む場合」の分岐処理で表示された数字はSUMで数字集計できますか? 3 2022/08/02 16:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ピボットテーブルのことです
-
エクセルのピポットテーブルで...
-
ピボットテーブルの項目間の計算
-
オートシェイプを色別に個数を...
-
IF関数を使用した数字に、カン...
-
マクロで貼り付け位置を可変さ...
-
Excel週ごとの集計を関数で
-
エクセルの集計を数字以外です...
-
ワードで配布したアンケートの集計
-
"アンケート君"の利用方法を教...
-
ピボットテーブルへの集計フィ...
-
勤務表の中抜け集計の関数を教...
-
ピボットテーブル オリジナル...
-
エクセルで数値のプラス毎とマ...
-
保存ブックを開かずコピーペー...
-
エクセルで部分一致の集計をしたい
-
パワーポイントで資料を作る時 ...
-
エクセル 小計後に別シートにデ...
-
ピボットを使ったシートに計算...
-
セルの中の文字を削除したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ピボットテーブルのことです
-
エクセルのピポットテーブルで...
-
列を増やさずに、月だけの件数...
-
マクロで貼り付け位置を可変さ...
-
エクセルの集計を数字以外です...
-
エクセルで○や×の図形の集計は...
-
ピボットテーブルの項目間の計算
-
オートシェイプを色別に個数を...
-
勤務表の中抜け集計の関数を教...
-
確定申告書作成においてパソコ...
-
ピボットテーブルへの集計フィ...
-
IF関数を使用した数字に、カン...
-
Microsoft Formsによるアンケー...
-
パワーポイントで資料を作る時 ...
-
エクセルの集計機能を横方向(...
-
ピボットを使ったシートに計算...
-
エクセルで数値のプラス毎とマ...
-
Excel週ごとの集計を関数で
-
価格帯別集計 EXCELで効率の良...
-
エクセルのフッターについて
おすすめ情報