解決済みの質問
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列の前後の値から判断する式を入れて合計して求めていたのですが、パソコンスキルの低い不特定多数の人が使用するため、関連するセルに削除挿入されたりしてエラーが頻出し、集計している別シートの方にも影響を出しています。そのため、各行に計算式を入れる方法は避けたいのです。
お知恵をお貸しください。
よろしくお願いいたします。
投稿日時 - 2010-03-10 18:29:02
例示された条件なら、以下のような数式で○の連続する組み合わせの個数が求められます。
=SUMPRODUCT((A1:A100="○")*(A2:A101<>"○"))
投稿日時 - 2010-03-10 20:50:02
お礼
ご回答ありがとうございます。
なるほど!
一行ずらした不等値を論理積にすればいいんですね!
これなら、グループの最後の○だけTRUEにできますね。
このアイデアは出ませんでした。
早速、職場の管理表に組み込んだところ、うまく行きました。
おかげさまで、年度末の業務がはかどります。
ありがとうございました。
投稿日時 - 2010-03-11 21:32:22
5人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(1件中 1~1件目)
>○は必ず2つ以上連続しています。
◆ということは、○が一つはグループ数とは見なさないということですね
=SUM((FREQUENCY(ROW(A1:A100),(A1:A100<>"○")*ROW(A1:A100))>=2+1)*1)
投稿日時 - 2010-03-10 22:53:31
お礼
ご回答ありがとうございます。
難しい式だったので、理解するまでに時間がかかりました。(笑)
その私が職場では一番EXCELを理解しているというレベルの会社なので、
こんな高度な式を入れた管理票を作成したら、転勤のとき引き継ぐ者がいなくなりそうです。
申し訳ありません。
考案には感謝いたします。
ちなみに、管理表内で○は、B列の項目の次の行の項目が同じ種類であるときにだけ付ける
判別記号として用いられているので、○が一つのグループは存在しません。
投稿日時 - 2010-03-11 21:34:30