[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『【再】VBAによる行挿入』(ぜん)
大変申し訳ありません。再質問させてください。
A列に所属、E列に生年月日、F列に年齢があり、
所属ごとに行挿入し、挿入した行のFに所属ごとの平均年齢を出せるようにbi様からお力を頂き下記のコードを活用させて頂いてます。
ただ最後の所属分だけなぜか計算されません。
色々調べて自分なりに変えたりもしてみたのですがうまくいきません。どなたかご教授下さい。
Sub test()
Dim i As Long
For i = Cells(Rows.Count, 1).End(xlUp).Row To 3 Step -1
If (Cells(i, 1) <> Cells(i - 2, 1)) And Cells(i - 1, 1) = "" Then
Rows(i - 1).Insert
Cells(i - 1, 6).Formula = "=DATEDIF(AVERAGEIF(A:A,A" & i - 2 & ",E:E),TODAY(),""Y"")&""歳""&DATEDIF(AVERAGEIF(A:A,A" & i - 2 & ",E:E),TODAY(),""YM"")&""ヶ月"""
End If
Next
End Sub
< 使用 Excel:Excel2007、使用 OS:Windows7 >
For i = Cells(Rows.Count, 1).End(xlUp).Row + 1 To 3 Step -1
としてはいかがでしょうか?
また、マクロを書かなくても、集計機能で平均を行挿入してくれます。
その結果が気に入らなければ、集計機能だけ使って、そのあと表を
編集するというのもあるかなと思います。
今のマクロで処理速度に不満があれば検討してみてください。
(まっつわん) 2018/01/12(金) 12:17
biです。以前の質問はこれです。 [[20180108093906]]『VBAにて条件による行挿入』(ぜん)
所属コードと枝番が変わるところに空白行が入れてあり、そこからさらに所属コードが 変わる位置に空白行を入れ、挿入した行のF列に平均年齢を入れたいという内容でした。
私の能力では無理かもしれませんが、これから修正に取り掛かってみます。 (bi) 2018/01/12(金) 13:36
>所属コードと枝番が変わるところに空白行が入れてあり、そこからさらに所属コードが >変わる位置に空白行を入れ、挿入した行のF列に平均年齢を入れたいという内容でした。 あぁ、すでに空白行があるのですね。
なら、ジャンプ機能でデータの集まりを取得し、
Areasプロパティで集まり毎に巡回し、その下に、
集計行を挿入し平均を計算すればいいですね^^
Sub test()
Dim rng As Range
Dim g As Range
Dim c As Range
With ActiveSheet.UsedRange
Set rng = Intersect(.Cells, .Offset(1), .Columns("F")) _
.SpecialCells(xlCellTypeConstants)
End With
For Each g In rng.Areas
With g
Set c = .Cells(.Cells.Count + 1)
c.Value = WorksheetFunction.Average(.Cells)
End With
c.Offset(1).EntireRow.Insert
Next
End Sub
(まっつわん) 2018/01/12(金) 13:59
修正したコードを載せようかと思いましたが適切な回答がありますのでそちらを参考にしてください。 (bi) 2018/01/12(金) 15:04
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.