[[20180112113202]] 『【再】VBAによる行挿入』(ぜん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『【再】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 >


Cells(Rows.Count, 1).End(xlUp).Row とは、A列の末尾行を得ていますが、最後に空欄があるのではないでしょうか?
絶対空欄にならない列を措定しましょう。
(???) 2018/01/12(金) 11:58

>ただ最後の所属分だけなぜか計算されません。
よく読んでないですが、
A列の最終行から3行目までをループしてるから、
数式を入れたい最終行の1行下が対象から外れています。

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

For i = Cells(Rows.Count, 1).End(xlUp).Row + 2 To 3 Step -1
(mm) 2018/01/12(金) 13:58

 >所属コードと枝番が変わるところに空白行が入れてあり、そこからさらに所属コードが
 >変わる位置に空白行を入れ、挿入した行の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

うまくいきました!
大変勉強になりました。みなさまありがとうございました!!
(ぜん) 2018/01/12(金) 17:14

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.