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

このQ&Aのポイント
  • エクセルで連続している数字のセット個数を数える方法や、特定の数字の連続数を別のものとして数える方法についてアドバイスをお願いします。
  • 質問者は、A列の2が連続している2連続と、B列の5が3連続しているものの数を別々にカウントし、かぶらないようにしたいと考えています。
  • 現在使っている式では、特定の数字が連続している場合に数える数が2つ増えてしまう問題があり、解決策を求めています。
回答を見る
  • ベストアンサー

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

エクセルにて、   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増えてしまう状態です。 お手数ですが、ご回答のほどよろしくお願いします。

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

  • ベストアンサー
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.1

例えば、A7にこんな感じ↓でどうでしょう。 =SUMPRODUCT(1*(A1:A4<>A2:A5)*(A2:A5=A3:A6)) 登場する数字に0がある場合は再考が必要です。

ATAMAbakanako
質問者

お礼

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

ATAMAbakanako
質問者

補足

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

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

小生は、関数式に詳しいわけではないが、関数式だけでは、ずいぶん複雑(長くかつ関数を3つ以上組み合わせた式)になるのではないか。回答が出ても質問者にも、理解に時間がかかるような式だろう。 だから初めから関数利用は考えてないが、簡潔な式の回答にでるかな? ーー そこで小生はVBAでやってみた。 また他の仕組みで簡潔なやり方やVBAコードで回答が出れば素晴らしいと思うが、期待薄。小生が知らないだけのことかもしれないが。 ーー 下記ロジックは人によっては難しいと感じるだろうが。 VBAは、知らないと毛嫌いする人も多いので、その場合は無視して。 例データ 基データー 質問のデータ例を利用。 Sheet1 A2:C5 2 3 5  <--第2行目から 2 5 4 1 5 4 5 5 2 ーーー 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 22 555 44 ーー データ例を作るのが邪魔臭いので、手抜きします。 データ例を増やしてやってみて。 ーー Sheet2では重複文字数別に並べている。 手抜きのため同じパターンも重複で出している。操作のフィルタオプションやソートで、必要なら重複分を取り除いてください。

ATAMAbakanako
質問者

お礼

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

関連するQ&A

  • 前回のエクセルの問題の続きです。

    同じ内容を再投稿して申し訳ありません。 エクセルにて、   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パターンあります。) (また、同じ列に2連続と3連続が混ざり合っており、それが複数出る場合があります。) ちなみに、今使っている物は ROUNDDOWN(SUMPRODUCT((A2:A5<>"")*SIGN((A2:A5=A3:A6)+(A2:A5=A1:A4)))/2,0) という式を使って数えているのですが、B列の5のように3連続が2つきてしまうと、数が2つ増えてしまい、切り捨てできずに1増えてしまう状態です。 お手数ですが、ご回答のほどよろしくお願いします。

  • エクセル関数 カウントの関数

    A列は「氏名」B列は「出身県」C列は「生年月日」のデータがあって、 20代・30代・40代はそれぞれ何人かカウントしたいときの計算式(2008年3月1日時点において) 20代の場合であれば (ROUNDDOWN(DATEDIF(【生年月日】,"2008/3/1","Y"),-1)=20)  =SUMPRODUCT(___________)の式に組み入れるだけ。 生年月日のデータ範囲が 【$C$2:$C$100】なら =SUMPRODUCT((ROUNDDOWN(DATEDIF($C$2:$C$100,"2008/3/1","Y"),-1)=20)*1) ★以前上記を教えていただきました、今回はこれにB列「出身県」別 をカウントするとき、どういう計算式にすればよいでしょうか。おしえてください。 ちなみに「出身県」は数字です。例えば、東京は1000としています。 出身県のデータ範囲が【$B$2:$B100】で、 =if($B$2:$B100=1000,SUMPRODUCT((ROUNDDOWN(DATEDIF($C$2:$C$100,"2008/3/1","Y"),-1)=20)*1),false)としてみましたが、 カウントできません。よろしくお願いします。

  • 連続するローソク足をカウントしたい エクセル

    だいぶ探しましたがわかりませんでした。みなさま宜しくお願いします。 データーは下記のとおりです。 セルA2=始値 セルB2=終値 セルC2=(A2-B2) 目的:-(あるいは+)数字の連続数のカウント C列には計算後の数値をいれました。 ただ、休日により一切値動きのない連続データもはいってまして、まずそれを削除したいのです。 くわえて、所々にも値動きのないデーターがありますのでそれも削除したいです。 少なくとも10分×6×24×一年分ありますので、手作業ではとても…。 そのうえで C列の+数字(正)-数字(負)それぞれの数 正または負の連続回数と連続回数別の数(例えば2連続が何回、3連続が何回みたいな) お手数おかけしますが、どなたさまかよろしくお願いいたします。

  • excel グループごとにデータの種類数を数えたい

    こんばんは。お世話になります。 Excelで、データの種類数をかぞえたいのですが、いくつかのグループがあり、そのグループごとのデータの種類数をカウントしたいと考えています。 (データは数字のみ、空白もありますが、空白はデータ数として採用しない) ~データ~   A         B    1 グループ     データ 2   a          10 3  a           5 4   a 5   b           4 6   b           4  7   b            8  b            9  c           ・ 10  c           ・ ・    ・           ・ ・   ・ ・   ・ ~集計(求めたい結果)~ グループ    データの種類数 a           2       b           1 c           ・   ・           ・  ・           ・ 単純にB列のデータ種類を数えるには、 {=SUMPRODUCT(IF(B2:B・・・<>"",1/COUNTIF(B2:B・・・,B2:B・・・),0))} でできるというところまでは分かったのですが、「グループ別に」というところでつまづいています。 なお、Excel2007です。 恐縮ですが、ご教示願います。

  • 《エクセル2000》SUMPRODUCT関数、この式のどこがいけないのか…

    こんにちは。 A列が1であり、B列とC列に共に数字が入っている(空白でない)ものをカウントしたいと思い、以下の関数を書きました。 =SUMPRODUCT((A1:A50=1)*(B1:B50<>"")*(C1:C50<>"")) ですがこの式ですと、「B列とC列が共に空白なもの」の個数が返って来てしまいます。 「<>」が怪しい気がするのですが、具体的に何がいけないのでしょうか? また、欲しい数字を出すようにするにはどうすればいいのでしょうか。 よろしくお願いします…

  • エクセル SUMPRODUCT関数について教えてください

    エクセルで作成した表から ○○かつ●●のデータ個数を求めたく、 SUMPRODUCT関数を こちらで調べておりましたが どうしても解決しない部分があります。 どうぞ よろしくお願いいたします。 下記8桁数字は、日付です。 カウントしたい数は、B列(終了)が、A1セルに入力された年月かつ、区分(C列)が「A」の数です。 =SUMPRODUCT((LEFT(B2:B100,6)=A1)*(C2:C100="A")) こちらで、『B列=A1セル かつ C列="A"』のみのカウントは出来たのですが、 終了延長(D列)が空欄でない場合は、D列日付データの方をカウントする。 早期終了(E列)が空欄でない場合は、D列・B列よりも E列を優先し、カウントする。という条件を付けたいのですが、 Sheet1 A1セルに「200810(数を調べたい年月を入力)」 (開始)  (終了)     (区分)  (終了延長)  (早期終了)  A列     B列      C列     D列      E列 20061001   20081001   A    -        - 20070926   20081020   A    -        - 20071102   20081009   A    20081201    - 20080101   20081013   B    -        - 20080208   20081010   A    -        20080210 ・・・ この場合、「2」となるようにです。 IF、OR関数あたりかな と考えておりますが、SUMPRODUCT関数のどの部分で条件付ければ良いか解りません。 説明下手で大変申し訳ございませんが、ご助力いただければ幸いです。 

  • エクセルで同じ数字が連続している個数を関数でセルに出力

    A列に1かー1かいずれかの数字が入力されているとき、その行から上方に数えて、B列には1の連続している個数を、C列にはー1の連続している個数を出力したいのです。例えば A列    B列    C列 1      1     0 1      2     0 -1    0     1 -1    0     2 -1    0     3 といった具合です。 この時、B列、C列にはどのような関数を入力すればよいでしょうか。

  • Excelエクセルで連続数字の平均

    連続数字をカウントしました。 1連続が40回 2連続が10回 3連続が3回・・・・ 以上の平均連続数はどう表示させればいいでしょうか?

  • エクセルで連続するデータの個数だけカウントする

    エクセルは2013を使用しています。 シートには各セルに「○」 「×」 「□」 「空白」が入力されています。    A   B  C 1  ○   ○ 2  × ○   3  × ○ □ 4     ○ □ 5  ○ × □ 6  × □ ○ 7  ○ □   8       ○ 計  2 5 3 ※A列の計・・・×が連続している ※B列の計・・・○と□が連続している ※C列の計・・・□が連続している このように連続するデータの個数だけをカウントする方法を教えて下さい。 よろしくお願い致します。

  • 複雑な条件付きの連続したセルのカウントする関数

    A列、B列のセルに数字の1~10までが不規則で入力されています。 A列のセルが 1、で横に見てB列のセルが 2、の場合、 このパターン以外の連続しているセルの連続数別でカウントしたいのです。 下記の例題の場合だとAセルが1で横に見てBセルが2の場合以外だと3回連続数が2回あるので それをD1セルに出力されるようにしたいのです。 教えていただきたいのは下記の例題の場合の関数の入力方法です。 調べたのですが複雑過ぎてわかりませんでした。 エクセル2010を使っています。ぜひアドバイスお願いします。 例 A     B        C        D 3      5      3連続回数      2 3      6 1      2 6      3 8      3 4      7 1      2 10     4 4      5 6      6 1      2 3      6 1      3

専門家に質問してみよう