• ベストアンサー

EXCELで連続した同じ値をグループと見なして数を数えるには?

EXCELで連続した同じ値を1グループと見なしてグループ数を数える方法を探しています。つまり以下のようなデータがある時、A列中に何グループあるのかを関数で算出したいのです。 行   A 1   ○ 2   ○ 3   × 4 5   ○ 6   ○ 7   ○ 8   × 9   × 10   ○ 11   ○ 12   ○ 13   ○ 例中のA1~A13の範囲内では、A1~A2、A5~A7、A10~A13 を○のグループと見なして、グループ数は「3」ということになります。 このカウントをする関数式を1つのセルの中に作成して計算させたいのです。 ・ 列内には他に、×と空白があります。 ・ ○は必ず2つ以上連続しています。 ・ ○がいくつ連続してグループを作るかはわかりません。 ・ グループとグループの間に入る×と空白の数は不規則です。 これは職場で使っている管理表です。 当初、他列の各行にA列の前後の値から判断する式を入れて合計して求めていたのですが、パソコンスキルの低い不特定多数の人が使用するため、関連するセルに削除挿入されたりしてエラーが頻出し、集計している別シートの方にも影響を出しています。そのため、各行に計算式を入れる方法は避けたいのです。 お知恵をお貸しください。 よろしくお願いいたします。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

例示された条件なら、以下のような数式で○の連続する組み合わせの個数が求められます。 =SUMPRODUCT((A1:A100="○")*(A2:A101<>"○"))

dpierrot
質問者

お礼

ご回答ありがとうございます。 なるほど! 一行ずらした不等値を論理積にすればいいんですね! これなら、グループの最後の○だけTRUEにできますね。 このアイデアは出ませんでした。 早速、職場の管理表に組み込んだところ、うまく行きました。 おかげさまで、年度末の業務がはかどります。 ありがとうございました。

その他の回答 (1)

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.2

>○は必ず2つ以上連続しています。 ◆ということは、○が一つはグループ数とは見なさないということですね =SUM((FREQUENCY(ROW(A1:A100),(A1:A100<>"○")*ROW(A1:A100))>=2+1)*1)

dpierrot
質問者

お礼

ご回答ありがとうございます。 難しい式だったので、理解するまでに時間がかかりました。(笑) その私が職場では一番EXCELを理解しているというレベルの会社なので、 こんな高度な式を入れた管理票を作成したら、転勤のとき引き継ぐ者がいなくなりそうです。 申し訳ありません。 考案には感謝いたします。 ちなみに、管理表内で○は、B列の項目の次の行の項目が同じ種類であるときにだけ付ける 判別記号として用いられているので、○が一つのグループは存在しません。

関連するQ&A

  • エクセルの空白を求めたいのですが。

    エクセルの空白を求めたいのですが。 例えば、 ・・A B C D E 1 4 2 3 8 4 5 6 4 7 8 9 2 10 A列の数字入力があるセルから、次のセルの入力値まで の空白の個数を関数で出来ますでしょうか? A9~A6 は空白が2個となります。 A6~A3 は空白が3個となります。 A列の 各行 には他のセルで計算された値を出しているので、 各行に現れる数値は、その時によって違います。(現れる数値は整数です) わかる方いましたら、宜しくお願いします。

  • Excelで一番ゼロに近い値を求めるには

    Excelで一番ゼロに近い値(正負)を求めるにはどうしたらよいでしょうか? 希望は、条件書式で設定したいのです。 もし駄目なら列を挿入して計算式用の列を作っての方法をご教授ください。 例えば、 A1  0 A5  0.5 A6  -0.3 A7  0.1 A8    (空白) A9  -0.12 セルA5からA9の間で一番ゼロに近い値を求めたいです。 その時にセルA8の空白は考えないようにしたいです。 条件書式か計算式でできるでしょうか? どうぞよろしくお願いいたします。

  • Excelでグループ化し、グループ名を数値で返すには?

    Excelで次の解を求める時、いいアイディアはないでしょうか。 1) セルをグループ化します。 2) 次にグループ化したまとまりごとに、 左列に数値を順に返します。 つまり以下のようなセルがあるとき : A B 1 : 空白 442565 2 : 空白 442565 3 : 空白 332211 4 : 空白 332211 5 : 空白 332211 ↓ : A B 1 : 1 442565 2 : 1 442565 3 : 2 332211 4 : 2 332211 5 : 2 332211 つまりBが同じ数値である セル同士をワングループとして、 そのグループを順列に数値でA列に 区分したいのです。 A列が何セルでグループ化されるかは ランダムです。B列において2つのセルが 同じ数値を共有している場合もありますし、 100のセルが同じ数値を共有しているもあります。 データ総数はおよそ9000列ほどになります。 集計機能を用いた方がよいでしょうか。 関数の他にアイディアがあれば、教えて 頂けるととても助かります。 宜しくお願い致します。

  • LARGE関数で空白セル数だけ飛ばして記入したい。

    LARGE関数で空白セル数だけ飛ばして記入したい。 たとえばA列に連続する数値がランダムに入力されていて、その値の高い値から、LARGE関数で順番をB列に記入しました。しかしA列に空白セルがある場合、空白セル数だけ高い値を飛ばして順番をつけたいのですが、良い方法は御座いませんでしょうか? 例 A列に1から15までランダム記入されていて空白セルが2つあれば13から1、2としていきたいのです。 B1=IF($A$1:$A$15="","",LARGE($A$1:$A$15,A1))↓ と記入すると15、14がエラー表示になって 13から1になってしまいます。それを、13から1、2としていきたいです。 お願いします。

  • エクセルの関数(最後の値を返す)

    A1からJ65までの範囲のなかで (計算式などが入ってるセルも含まれてます) J列の最後に表示されている値を返したいのですが どんな計算式をしていいか 調べてもわからず困っています。 J35のときもあればj40のときもあります。 ちなみにJ列にはすべて 計算式がはいってます。 その計算結果が表示されているセルと空白のセルがあります。 (J1からJ40まで値表示J41からしたは空白表示のときJ40を返したい このときA列はA1からA40までは値が入力されてますがA41からしたはまったくの空白です)

  • エクセルで直近の連続回数を求める

    ある条件の結果、合格を1、不合格を0として記録し、直近で連続合格した回数を求めたいのですが、どのような関数を使うと良いでしょうか。 図では7回目まで終了していて、 【条件A】の場合、直近の結果が0なので連続回数は「0」。(返す値は0か空白) 【条件B】の場合、直近の結果が空白なので連続回数は「0」。(返す値は0か空白) 【条件C】の場合、連続回数は「2」。 各条件の結果には空白のセルも混在し、回数が上がると列を増やす予定で、その右端に連続回数を求める仕様です。出来れば、マクロを使わず関数で求めたいと思っています。 よろしくお願いします。

  • Excel2010で3つの値のうち最も少ない値

    Excel2010で3つの値のうち最も少ない値を返して、もしその値が空白だったらゼロと認識する。としたいのですが、 どのような関数にしたらよいのでしょうか? どなたかおしえてください。 例) A1:3 A2:5 A3:(空白) この3つのセルのうち最も少ない数を返す。 =MIN(A1,A2,A3) だと、値3が返ってしまいます。空白もゼロと認識して値0を返したいのです。 ですが、この3つのセル以外に空白セルを残すため、Excel昨日の「空白にゼロ値を表示する」を使いたくありません。 どうぞよろしくお願いいたします。

  • Excelで、指定した範囲の先頭のセルの値を取得するには?

    Excelで、指定したセル範囲(1列)で、空白を除いた先頭のセルの値を取得する 方法はありますでしょうか? できればマクロを使用せずに関数だけでできるほうがありがたいです。 例)  | A ------------ 1 |(空白) 2 | ○ 3 | △ 4 | × 5 | □ の場合、検索範囲にA1:A5 を指定すると、○が値として返ってくるような感じです。

  • 関数が入っている列で値のある最後のセルの値を返す

    お尋ねします。 関数が入っている列で式の値が入っている一番下のセルの値を調べるにはどうしたら良いでしょうか? 例      A列   1   5   2   10   3   13   4   (式の値が無いのでゼロ) B1セルにA3セルの13と言う値を返したいのですが、列に式(SUMPRODUCT関数)が入っていて、実際はA4セルのゼロが返ってきます。 またシート1~シート5 まで上記と同じ式が入っていて、シート1のA列の最後の値「13」をシート6のB1セルに値を返す場合、INDIRECT関数を使った場合、どういう式になるでしょうか? ご回答よろしくお願いします。

  • エクセルで挿入した列に関数が値を返しません。

     エクセルで列を挿入したセルに、関数を入力しても値を返しません。 関数を入力しても、数式バーに表示される数式がセルに表示されるだけで、答えは出ません。式はあっていて、違うセルに数式をコピーして張り付けると、値を返します。  また、挿入した列に元からある空白の列をコピーして貼り付け、関数を入力しても値を返します。  どこかで変な設定をしてしまったのでしょうか?  分かる方、どうか教えてください。

専門家に質問してみよう