重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

1行目:0,0,0,0,1,1,1,1,2,2
2行目:1,1,0,2,2,2,1,1,0,0
3行目



のように数字がセルに入力されています(カンマ区切りで、一つのセルには一つの数字しか入っていないことを示しています。)
空欄のセルはありません。

1行目だったら、0が4回、1が4回、2が2回続くので、
4,4,2

2行目だったら、1が2回、0が1回、2が3回、1が2回、0が2回続くので、
2,1,3,2,2

のように結果が表示される方法を調べています。

各行の数字は81個並んであり、数字の変化は最大で10回、最小で0回(ずっと同じ数字のまま)であることがわかっています。

sumproductとmatchを使えばできるかなと思ったのですが、うまくいきませんでした。

お知恵をお貸しください。

A 回答 (4件)

答えは、どんな感じで表示したいのでしょうか?ひとつのセルに、”4,4,2”と表示して良いのでしょうか?


であれば、まず、次のユーザ定義関数(MyCount)を標準モジュールに張り付けて下さい。
そして、適当なセルに、=MyCount(A1:CC1) と入力すれば、A1~CC1セル(81列)の連続個数が表示されます。

Function MyCount(My範囲 As Range) As String
Dim I As Long
Dim J As Long
I = 1
Do Until I > My範囲.Count
J = 1
Do Until My範囲(I) <> My範囲(I + J) Or I + J > My範囲.Count
J = J + 1
Loop
If MyCount2 <> "" Then MyCount2 = MyCount2 & ","
MyCount2 = MyCount2 & J
I = I + J
Loop
End Function
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
何度もチャレンジしてみたのですが、標準モジュールに張り付けた後に
=MyCount(A1:CC1)
をセルに入力しても、空白のままです。
なぜだかわかりません。

お礼日時:2016/03/30 17:05

いちおう計算速度上昇させた数式


作業列は同じ
B16セル
=MATCH(0,B8:K8)
下へオートフィル(二分検索なので早いはず)

C16セル
=IF($K8<C$15,"",MATCH(C$15,$B8:$K8)-SUM($B16:B16))
右へ下へオートフィル
総計算するCountifは理解しやすいですが、こちらの方が計算が早いと思います
    • good
    • 0
この回答へのお礼

たびたびのご回答ありがとうございます。

この方法の方が、前回よりも目に見えて計算が早くなりましたが、それでも計算完了まで数分かかってしまいます。
どうも、作業セルが計算速度を圧迫しているようですね。
ありがとうございました。

お礼日時:2016/04/07 13:07

No2ママチャリです。


申し訳ありません。プログラムに誤りがありました。
プログラム中に、MyCount2 という変数が5箇所ありますが、これをMyCount に修正してください(2を取る)。
これで大丈夫だと思います。
    • good
    • 0
この回答へのお礼

さらなるご回答ありがとうございます。
MyCountに修正したら計算できました。
実は、No.1の方のような、1セルに1個の結果のエクセル出力をイメージしていたのですが、カンマで区切っている部分をCSVで保存してから、改めて開き直したらイメージしている形に近いデータになりました。
とても助かりました。

お礼日時:2016/03/31 10:48

作業用の表を作って良いなら



A列は理解しやすいようにしているだけです

B8セル 0
C8セルに =SUM(B1<>C1,B8)
右へオートフィル
B8:K8セル範囲を下へオートフィル

B15セルから右へ0から連番
B16セルに
=IF($K8<B$15,"",COUNTIF($B8:$K8,B$15))
右へ下へオートフィル
「エクセルで連続した数字の個数を数える方法」の回答画像1
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
お返事が遅くなりました。

まさにこのようなイメージのものを考えていました。
助かります。

ただ、2万行くらいデータがあって、データを更新(追加)するたびに再計算して計算が止まってしまいますね(作業するときは手動にすれば良いですが)。

お礼日時:2016/03/31 10:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!