[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『連続しているデータの連続数を個別に数えたい』(acculi)
3年間の業績に応じて10000件の顧客を独自にランク分けしています。
ランクは毎月業績に応じて変更され、行数は10000行近くあります。
A B C D E F
2012.4月 2012.5月 2012.6月 2012.7月 2012.8月 2012.9月
1 ランク1 ランク1 ランク1 ランク1 ランク1 ランク1
2 ランク2 ランク2 ランク1 ランク1 ランク1 ランク1
3 ランク1 ランク1 ランク2 ランク1 ランク1 ランク1
4 ランク2 ランク2 ランク2 ランク3 ランク3 ランク1
5 ランク1 ランク3 ランク1 ランク1 ランク1 ランク1
6 ランク2 ランク2 ランク2 ランク3 ランク1 ランク1
・・・と上記のようなデータが3年分36列、10000行近く続きます。
件数をカウントし各行の37(AK)列目以降にランク1の連続している月数を
表示させたいのですが、困っているのは3行目のようにランク1が途切れて、
再度復活する場合です。
この場合には37(AK3)列目に「2」、38(AL3)列目に「3」と
表示させたいのです。
同様に3年間36列のデータで昇格降格を繰り返す場合には、
37・38・39列というように各行のランク1のそれぞれの連続月数を
表示させたいです。
最終的な目的はランク1の連続寿命を知りたいということと、
2か月連続、3か月連続、4か月連続・・と連続月数ごとに構成比を出したいです。
ご教授のほどよろしくお願いいたします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
Sub test() Dim i As Long Dim j As Long Dim jMax As Long Dim ip As Long Dim iFlag As Long Dim iDim() As Long
jMax = Cells(1, Columns.Count).End(xlToLeft).Column
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row ip = 0 iFlag = 0 ReDim iDim(0) For j = 1 To jMax If Cells(i, j).Value = "ランク1" Then If iFlag = 1 And 0 < iDim(ip) Then ip = ip + 1 ReDim Preserve iDim(ip) End If iDim(ip) = iDim(ip) + 1 iFlag = 0 Else iFlag = 1 End If Next j Cells(i, "AK").Resize(, ip + 1) = iDim Next i End Sub (???) 2015/04/17(金) 10:56
数式で。
AK1 =IFERROR(INDEX(FREQUENCY(COLUMN($A1:$AK1),($A1:$AJ1<>"ランク1")*COLUMN($A1:$AJ1))-1,SMALL(INDEX((FREQUENCY(COLUMN($A1:$AK1),($A1:$AJ1<>"ランク1")*COLUMN($A1:$AJ1))<3)*10^16+ROW($A$1:$A$37),),COLUMN(A1))),"")
右、下へコピー。 (GobGob) 2015/04/17(金) 13:38
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.