• ベストアンサー

Excel 関数かVBAでの解決方法

Excel 関数かVBAでの解決方法 A列に"1" もしくは"2"がランダムで並んでいるとします。B列にその連続回数を表示させるにはどのようにすればよいでしょうか? 例えばA1からA5まで"1"、A6からA8までが"2"、A9~"1"の場合はB1~B5には1~5、B6~B8には1~3、B9には1~と言うように、それぞれの数字の連続回数を示したいのですが・・・かなりの作業列を使う方法しか思いつきません。どうかよろしくお願いします。

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

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

No.3です! たびたびごめんなさい。 前回の作業列は無しにしてください。 結果のB3セルに数式を入れるだけで大丈夫だと思います。 B2セルは単純に =IF(A2="","",1) B3セルに =IF(A3="","",IF(A3=A2,B2+1,1)) という数式を入れ、フィルハンドルの(+)マークでダブルクリック、またはオートフィルで下へコピーすれば大丈夫だと思います。 何度も失礼しました。m(__)m

その他の回答 (7)

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.8

B1には1を入力し、 B2に =IF(A2=A1,B1+1,1) を入力し、 B3以降はB2をコピー。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.7

VBA向きの問題ですね。 例データ A列A2から A2:B13 1 1 1 2 1 3 1 4 1 5 2 1 2 2 1 1 1 2 2 1 2 2 2 3 コード 標準モジュールに Sub test01() For i = 2 To Range("A65536").End(xlUp).Row If Cells(i - 1, "A") = Cells(i, "A") Then Cells(i, "B") = Cells(i - 1, "B") + 1 Else Cells(i, "B") = 1 End If Next i End Sub こんなに簡単。 ーーー 関数でも同じことをやると D2に =IF(A1=A2,D1+1,1) と入れて下方向に式を複写。 データは第2行目から始めるようにする。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.6

A列1行上の値と今の行が同じなら 「B列1行上の値+1」、違えば「1」 B1:1 B2:2(B1の値に+1) B3:3(B2の値に+1) B4:4(B3の値に+1) B5:5(B4の値に+1) B6:1(A5とA6が異なるので1) B7:2(B6の値に+1) ・・・・ そんなに難しく考えなくてもできそうですが・・・。 まず想定される値を埋めてみて、あとから数式を考えるのも手です。 整理してみてください。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.5

添付図: B2に =IF(A1=A2,B1)+1 みたいな?

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

こんばんは! かなり泥臭い方法ですが・・・ ↓の画像のようにB列を作業用の列で使っています。 作業列B3セルに =IF(A2="","",A2) (元データを1行ずらせて表示させているだけです。) C2セルは必ず「1」になりますので、最初から「1」を入力しておきます。 そして、C3セルに =IF(A3="","",IF(A3=B3,C2+1,1)) という数式を入れ、B3・C3セルを範囲指定し、C3セルのフィルハンドルで下へずぃ~~~!っとコピーすると 画像のような感じになります。 以上、かなり無理矢理の方法ですが 参考になれば幸いです。 他に良い方法があれば読み流してくださいね。m(__)m

  • masa_019
  • ベストアンサー率61% (121/197)
回答No.2

こんにちは。 B1セルに =COUNTIF(A$1:A1,A1) これを下にコピーすれば良いかと。

  • Dahak
  • ベストアンサー率50% (3/6)
回答No.1

(手順1)B1セルに1を入力(※1行目は比較する前行が無いのでここだけは値を手入力) (手順2)B2セルにセル式「=IF(A1=A2,B1+1,1)」を入力 (手順3)B2セルをコピーし、B3以降必要な行まで貼り付ける

関連するQ&A