- ベストアンサー
計算式を教えて欲しいです。
↓質問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 みなさんよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 参考になるかどうか判りませんが・・・ 一例です ↓の画像のように作業用の列を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
その他の回答 (1)
- ASIMOV
- ベストアンサー率41% (982/2351)
マクロを使う方法です -------------------- 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
お礼
ASIMOVさん、回答ありがとうございます。 マクロ、使わせていただきます! 凄く助かりました、感謝です。 ありがとうございました!
お礼
tom04さん、回答ありがとうございます。 完璧にできました。 わかりやすく書いて貰って助かりました。 本当にありがとうございました!