[[20060925150841]] 『フラグの立て方』(hiyoko) ページの最後に飛ぶ

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

 

『フラグの立て方』(hiyoko)
    A     B
1  2
2    2      フラグ
3    5   
4    5   フラグ
5    1
6    1
7    1
8    1
・
・
・ 
A列に1〜5の数値がランダムに並んでいます。
この列で、1→2、3→5etc..のように数値が切り替わる行でフラグを立てたいです。
そしてそのフラグの個数を数えたいです。
皆様のお知恵を拝借したく、御願いいたします。

(可能ならば、1→5や5→3の切り替わりが何個あるか、ということもカウントしたいです。)


 B2: =IF(A2=A3,0,1) 下にコピー。
 B1: =SUM(B2:B65536)

 >1→5や5→3の切り替わりが何個あるか、ということもカウントしたいです。
 私はギブアップです。
 ((dai)

 B列に組み合わせの数字を配置し、C1に下のようにしますと、件数が表示できると思います。
 A1:A100まで、100件が隙間なく配置しているものとしています。      (LOOKUP)

 	A	B	C
 1	5	12	 3
 2	1	13	 2
 3	4	14	 5
 4	3	15	 6
 5	4	23	 5
 6	1	24	 1
 7	1	25	 3
 8	4	34	 8
 9	3	35	 6
10	1	45	 3
11	2	54	 3
12	3	53	 5
13	5	52	 4
14	3	51	 7
15	2	43	10
16	3	42	 1
17	4	41	 3
18	3	32	 4
19	1	31	 4
20	4	21	 2
21	1		↑
22	1		=SUMPRODUCT(COUNTIF(B1,A$1:A$99&A$2:A$100))
23	5		
24	5		
25	1		


 マクロで作ってみました。(夕焼)
 フラグは" 1 "で立てました。

Sub test()

lastrow = Cells(Rows.Count, 1).End(xlUp).Row

 For i = 2 To lastrow

 If Cells(i, 1) <> Cells(i - 1, 1) Then
 Cells(i - 1, 2) = 1
 End If
 Next

 lastrow2 = Cells(Rows.Count, 2).End(xlUp).Row
  For i = 1 To lastrow2
  If Cells(i, 2) = 1 Then
   N = N + 1
  End If
   Next

   MsgBox "フラグ数は " & N

End Sub


(hiyoko)です。
さっそくのご返信ありがとうございます。
1つ謝らなくてはいけないのですが、
A列にはRとNのアルファベットが含まれています。
説明不足で大変申し訳ありません。
R→数値、数値→R、R→N、N→R、
N→数値、数値→N
を省いて数えることは可能でしょうか?
さすがに無理な気がしてきました。。。

 まず、回答は、すべてご確認ください。                   (LOOKUP)

(hiyoko)
LOOKUPさん
すいません。
アルファベットを含んでいてもカウントできることを確認しました。
すいませんでした。
お知恵を貸してくださった皆さん、
どうも有難うございました。
非常に助けられました。


 解決済みですがw
 マクロだとこんな感じでどうでしょう?
 (ROUGE)
'----
Sub Chick()
    Dim tbl, ans(), i As Long, j As Long
    tbl = Range("A1:A" & Range("A1").End(xlDown).Row)
    j = 0
    ReDim ans(1 To UBound(tbl, 1), 1 To 1)
    With CreateObject("Scripting.Dictionary")
        For i = 1 To UBound(tbl, 1) - 1
            If tbl(i, 1) <> tbl(i + 1, 1) Then
                ans(i, 1) = "フラグ"
                If Not .Exists(tbl(i, 1) & "→" & tbl(i + 1, 1)) Then
                    .Add tbl(i, 1) & "→" & tbl(i + 1, 1), 1
                Else
                    .Item(tbl(i, 1) & "→" & tbl(i + 1, 1)) = _
                    .Item(tbl(i, 1) & "→" & tbl(i + 1, 1)) + 1
                End If
            End If
        Next
        Range("B:D").ClearContents
        Range("B1").Resize(UBound(ans, 1)).Value = ans
        Range("C1").Resize(.Count).Value = Application.Transpose(.Keys)
        Range("D1").Resize(.Count).Value = Application.Transpose(.Items)
    End With
End Sub

有難うございます。これもまた試してみます。

今は、
SUMPRODUCT(COUNTIF(B1,A$1:A$99&A$2:A$100))
の計算の意味を勉強中です。

小生の頭ではマクロは理解不可能でした。。。


コメント返信:

[ 一覧(最新更新順) ]


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