人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

質問です。
下記データをB列の種別ごとに集計できる関数またはマクロをお願いします。
答え
B列 G列 H列 I列 J列
AAAAAA 0000-00-00 00:00:00 0 0
AAAAAA 2011/4/27 19:12:00 0 0 DoCoMo
AAAAAA 0000-00-00 00:00:00 1 1
AAAAAA 0000-00-00 00:00:00 0 0 KDDI
AAAAAA 2011/4/30 19:12:00 0 0
AAAAAA 2 5 4 2
BBBBBB 2011/4/29 19:12:00 0 1 DoCoMo
BBBBBB 0000-00-00 00:00:00 1 0
BBBBBB 0000-00-00 00:00:00 0 1 KDDI
BBBBBB 2011/4/28 19:12:00 0 0
BBBBBB 2 4 2 2


B列のコードの最後に同じコード名を1行足して表示し
その行に各列の集計をする。
G列は0以外の日付の入った件数
H列は全件数
I列は0の件数
J列は表示文字の件数

よろしくお願いします。

●質問者: inosisi
●カテゴリ:コンピュータ インターネット
✍キーワード:12 28 4/3 DoCoMo KDDI
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● SALINGER
●60ポイント ベストアンサー

B列は同じ値が連続するとして作成しています。

連続していない場合はB列でソートすればいいです。

また、G列の日付以外の文字列は"0000-00-00 00:00:00"としています。

過去の質問の"0000/00/00 00:00:00"を使っている場合はコード中のその部分を変更してください。

先頭行は1行目からにしていますが、2行目からの場合は10行目の

stRow = 1

stRow = 2

にしてください。


Sub Macro()
 Dim i As Long
 Dim lastRow As Long
 Dim stRow As Long
 Dim myG As Long
 Dim myH As Long
 Dim myI As Long
 Dim myJ As Long
 Dim c As Long
 
 stRow = 1
 lastRow = Cells(Rows.Count, "B").End(xlUp).Row
 
 For i = stRow To lastRow
 If Cells(i + c, "G").Text <> "0000-00-00 00:00:00" And Cells(i + c, "G").Value > 0 Then
 myG = myG + 1
 End If
 
 myH = myH + 1
 
 If Cells(i + c, "I").Value = 0 Then
 myI = myI + 1
 End If
 
 If Cells(i + c, "J").Value <> "" Then
 myJ = myJ + 1
 End If
 
 If Cells(i + c, "B").Value <> Cells(i + c + 1, "B").Value Then
 Rows(i + c + 1).Insert
 c = c + 1
 Cells(i + c, "B").Value = Cells(i + c - 1, "B").Value
 Cells(i + c, "G").NumberFormatLocal = "G/標準"
 Cells(i + c, "G").Value = myG
 Cells(i + c, "H").Value = myH
 Cells(i + c, "I").Value = myI
 Cells(i + c, "J").Value = myJ
 myG = 0
 myH = 0
 myI = 0
 myJ = 0
 End If
 Next i
 
End Sub
◎質問者からの返答

早速ありがとうございます。

上手くゆきました。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ