こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルで連続している数字の分類をする。

エクセルにて、

  A B C
一 
二 2 3 5
三 2 5 4
四 1 5 4
五 5 5 2
六 

このように、試験の解答の集計をしており、A,B,C列のそれぞれで、連続した数字のセット個数を数えたい。その中で、A列の2が連続している2連続と、B列の5が3連続している物とを、分けてカウントしたい、また、その二つをかぶらせずに別のものとしてカウントしたいのですが、どのようにしたらいいか、アドバイスを頂ければ嬉しいです。(2連続と3連続のカウント数を別のところで集計してます。)
(3つ以上は連続したものがありません。2連続か、3連続のどちらかです。
しかし、数字のパターンが1~5の選択問題の為、5パターンあります。)

ちなみに、今使っている物は
ROUNDDOWN(SUMPRODUCT((A2:A5<>"")*SIGN((A2:A5=A3:A6)+(A2:A5=A1:A4)))/2,0)
という式を使って数えているのですが、B列の5のように3連続が2つきてしまうと、数が2つ増えてしまい、切り捨てできずに1増えてしまう状態です。

お手数ですが、ご回答のほどよろしくお願いします。

投稿日時 - 2017-04-18 11:40:02

QNo.9318909

困ってます

質問者が選んだベストアンサー

例えば、A7にこんな感じ↓でどうでしょう。
=SUMPRODUCT(1*(A1:A4<>A2:A5)*(A2:A5=A3:A6))

登場する数字に0がある場合は再考が必要です。

投稿日時 - 2017-04-18 13:45:29

補足

申し訳ありません。
画像を上げて細くしようと思っていたのですが、途中からは上がらないようなので、もう一度質問しなおします。
大変申し訳ございませんが、そちらを見ていただけると、大変助かります。

投稿日時 - 2017-04-18 14:21:25

お礼

ありがとうございます。
あとだしで申し訳ありません。
まだこちらの返答を見させていただいて、実践はしてないのですが、A列に2連続と3連続がある場合も大丈夫でしょうか?

投稿日時 - 2017-04-18 14:12:01

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

小生は、関数式に詳しいわけではないが、関数式だけでは、ずいぶん複雑(長くかつ関数を3つ以上組み合わせた式)になるのではないか。回答が出ても質問者にも、理解に時間がかかるような式だろう。
だから初めから関数利用は考えてないが、簡潔な式の回答にでるかな?
ーー

そこで小生はVBAでやってみた。
また他の仕組みで簡潔なやり方やVBAコードで回答が出れば素晴らしいと思うが、期待薄。小生が知らないだけのことかもしれないが。
ーー
下記ロジックは人によっては難しいと感じるだろうが。
VBAは、知らないと毛嫌いする人も多いので、その場合は無視して。
例データ
基データー 質問のデータ例を利用。
Sheet1 A2:C5

235  <--第2行目から
254
154
552
ーーー
VBAコードで
標準モジュールに
Sub test01()
Worksheets("Sheet2").Cells.Clear
'Exit Sub
lc = Range("ax2").End(xlToLeft).Column '最右列
MsgBox lc
lr = Range("a1000").End(xlUp).Row '最下行
MsgBox lr
'----
For c = 1 To lc '各列列繰り返し
rn = Cells(2, c)
For r = 2 To lr '行繰り返し
If Cells(r, c) = Cells(r + 1, c) Then
'---同じ場合
rn = rn & Cells(r, c)
Else
'--違う場合
If Len(rn) > 1 Then
MsgBox rn & "A" '連の最終結果表示
rx = Worksheets("Sheet2").Cells(1000, Len(rn)).End(xlUp).Row + 1
Worksheets("Sheet2").Cells(rx, Len(rn) - 1) = rn
End If
rn = "" '連を消去
'次の行の値を設定
rn = rn & Cells(r + 1, c)

End If
Next r
'--行の最下データ処理後
rn = "" '連を消去
Next c
End Sub
難しいコードは一切ない。処理ロジックだけ。こういうやり方になれない人もいるとは思う。
結果
Sheet2
A2:B3
22555
44
ーー
データ例を作るのが邪魔臭いので、手抜きします。
データ例を増やしてやってみて。
ーー
Sheet2では重複文字数別に並べている。
手抜きのため同じパターンも重複で出している。操作のフィルタオプションやソートで、必要なら重複分を取り除いてください。

投稿日時 - 2017-04-18 14:21:41

お礼

ご回答ありがとうございます。
まだVBAをはじめたばかりで、理解が追い付かないのですが、これは別シートに連続した部分を取り出して、それを別シートでカウントをするようにする。
というものですよね?
まだ時間はかかると思いますが、試してみます!
 
ご回答ありがとうございました。

投稿日時 - 2017-04-18 14:29:07