• ベストアンサー

計算式を教えて欲しいです。

↓質問1↓ Aの1~3000までのセルの中に 1というプラスの数字、-1というマイナスの数字が縦にランダムに並んでます。 (例えば、1が7回連続で並んでいたり、-1が5回連続で並んでいたり、1が1回だったり、-1が3回連続だったり、等々) 1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 その時に、 1が連続で並んでいる数の合計、 -1が連続で並んでいる数の合計、 をB1のセルに出したいのですが、 この計算式のやり方がわかりません。。。 上記の例なら、下記のような答えになるはずなんです。 3 -2 2 -1 3 -3 みなさんよろしくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 参考になるかどうか判りませんが・・・ 一例です ↓の画像のように作業用の列を2列使わせてもらっています。 B2セルは単純に =A2 としています。 B3・C3セルに数式を入れています。 B3セルは =IF(A3="","",IF(A3=A2,B2+A3,A3)) C3セルは =IF(A3=A4,"",B3) として、B3・C3セルを範囲指定し、C3セルのフィルハンドルでずぃ~~!っと下へコピーします。 (結果の列の数式が1000行まで対応できるようにしていますので、 そのくらいまでコピーしても構いません) そして、 結果のE2セルに =IF(COUNT($C$2:$C$1000)<ROW(A1),"",INDEX($C$2:$C$1000,SMALL(IF($C$2:$C$1000<>"",ROW($1:$999)),ROW(A1)))) という数式を入れています。 これは配列数式になってしまいますので、 この画面からそのままコピー&ペーストしただけではエラーになると思います。 貼り付け後、F2キーを押すか、数式バー内で一度クリックします。 編集可能になりますので、 Shift+Ctrl+Enterキーで確定すると、数式の前後に{ }マークが入り 配列数式になります。 E2セルをオートフィルで下へコピーすると画像のような感じになります。 以上、参考になれば幸いですが、 他に良い方法があれば、 読み流してくださいね。m(__)m

yuna_20
質問者

お礼

tom04さん、回答ありがとうございます。 完璧にできました。 わかりやすく書いて貰って助かりました。 本当にありがとうございました!

その他の回答 (1)

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.2

マクロを使う方法です -------------------- Sub Mc1()  D = 1: P = 1  F = Cells(1, "A")  For l = 2 To 3000   If F = Cells(l, "A") Then    D = D + 1   Else    Cells(P, "B") = D    D = 1    P = P + 1    F = Cells(l, "A")   End If  Next  Cells(P, "B") = D End Sub

yuna_20
質問者

お礼

ASIMOVさん、回答ありがとうございます。 マクロ、使わせていただきます! 凄く助かりました、感謝です。 ありがとうございました!