• ベストアンサー

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/17068)
回答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/7940)
回答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

  • EXCEL 2010 VBAまたは関数について

    こんにちは 初投稿です。 早速ですが、VBAまたは関数について質問させて頂きたいのですが・・・ 一つのセルに複数の数字と文字列がセルのE1混ざっている場合, (12345abc678cdef9ghijk)と入っている場合 にこの例で行くとセルのA1に12345セルB1に678セルC1に9というように数字で表示させたいのです が、最初関数で A1=VALUE(MID(E1,1,5)) B1=VALUE(MID(E1,9,3)) C1=VALUE(MID(E1,16,1)) と言う形で数字だけ抜き出していたのですが これだと数字の桁数が違ってくる(※正し文字列の長さは一緒 数字だけが桁が違ってきます) と表示されなくなってしまうため、 出来れば関数をいじらなくても表示されるようにしたいのです。 VBAもしくは関数でこの問題を解決出来る方がいらっしゃるなら どうぞよろしくお願い致します。 長文失礼致しました。 | A | B | C | D | E | ------------------------------------------------ 1 | 12345 | 678 | 9 | | 12345abc678cdef9ghijk | 2 | | | | | |

  • エクセル VBAで関数

    こんばんわ。いつもお世話になっております。 エクセルでデータを加工しているのですが、関数で加工するととても遅くなってしまうので なんとかVBAで作業できないかと模索中です。 Sheet1の、A列=取引先 B列=支店名 となっており、それが3,000行ほどあります。 Sheet2も、A列=取引先 B列=支店名 となっており、 Sheet1のC列に、Sheet1のA列のB列という支店が、Sheet2にあるか確認したいのです。 現在は、Sheet1のC列に、SUMPRODUCT関数でカウントさせているのですが、大変重いです。 ほかのSheetで、VBAを使って関数のような働きをさせている部分があります(前任者作成) そのように、なんとかVBAを使用したいのですが、なかなかうまく出来ません・・・。 どうか、お力を貸してください!! うまく説明できなくて、わかりづらかったらごめんなさい。 よろしくお願いいたします。

  • エクセルの関数について

    A列に1,2,3・・・と回数があり、B列に一桁の数字(0~9)がランダムにあり、C列(C1)には『=IF(B1=1,"○","")』とあり、C2以降オートフィルでコピーされています。 B列の数値が『1』の時にだけC列に『○』が入りますが、D列に『C列の○と○の間隔』を数字で表示したいのですが、『=IF(B10=1,COUNTBLANK(C2:C9)+1,"")』としても、オートフィルで全てのD列にコピーしても参照セル範囲がランダムなので上手く行きません。 ○印が出現したら直前回の○印からの出現間隔を関数で自動表示したいのですが、関数が分かりません。あるいは関数の組合せ方法が思い浮かびません。 分かりやすく言うと、例えばナンバーズなどのある桁の0から9までの数字のうち、任意の数字が出現するたびにその横の列に○印を付け、さらにその横の列に出現した間隔を自動で表示できる関数が知りたいのです。 言葉で上手く表現できませんが、分かる方教えて下さい。お願いします。

  • EXCELの関数について

    EXCEL初心者です。 これに悩み始めて早1週間。どうしても答えが見つからないので質問させていただきます。 A列に数字(-100から50)がランダムに入っています。B列に条件を入れたいのですが、 もしA列の数字がマイナスならばB列にその数の絶対値を もしA列の数字がプラスならB列には0を表示させたいのです。 たとえば以下のようにB列に表示させるにはどのような関数を 使えばいいのでしょうか?   A列     B列 -53     53  35      0 以上、よろしくお願いいたします。  

  • エクセルの関数についての質問です。

    エクセルの関数についての質問です。 画像のように横に1、2、3…(100くらいまで続きます)縦にA、B、Cの行があります(端が切れちゃってますが、A2にA、A3にB、A4にCです) B2から横の列にはそれぞれ☆や○等いろいろな記号が入ります。 そしてこの記号には特定の値が決められています。☆=10、○=5、△=3 B3から横には、B2の記号にそった数字が入ります。(10やら5等) そこまではIF関数で式を作ったのですが、ここからが問題でして… B2から横に1から100まで、記号(B3から横に数字)を入力していった時のB3列の合計が仮に212とします。 合計した値が200を越えてしまった場合、B4からの列に数字を入力するようにしたいのです。 (200ギリギリ前くらいまではB3の列で、それを越える時からB4の列に入力します。その際、B3列に入る数字は消えます) なおかつ可能であれば、このB4からの列に入るのはランダムにできるといいのですが…(画像では○の数字を下ろしていますが、☆の数字をおろしても良いし、△の数字をおろしても良い) ●計算式によって入力された数字(B3列)を特定の数字を越えた場合、別の枠(B4列)に移す関数はありますでしょうか?? ●また、それをランダム(関数)で選ぶことは可能でしょうか?? よろしくお願いします。

  • エクセルの関数

    A列に数字が数字が入っています  B列にもA列に近い数字が入っています たとえば A2に51 B2に50  の場合 C2には51と表示 A3に32 B3に34  の場合 C3には34と表示 したいのです。 ようするに 同じ横の数字で C列に関数を入れて A列とB列を比べて 大きな数字の方を入どんな関数をいれたらいいでしょうか?

  • エクセルの関数について

    エクセルのA列とB列にはランダムな10桁の数値が入力されています。 A列の数値がB列にも有る場合、C列に“OK”と表示させたいのですが、C列にどのような関数を入れたら良いのか分かりません。どなたかご存知の方おしえて下さい。

  • エクセルの関数の数式がわかりません。

    A列 B列 1 10 2 20 3 30 a 4 40 エクセルの関数の数式がわかりません。 B1~B4のどこかにaの入力があった場合、aの入力がある行と同じ行のA列に入力されている数字を別のセルに表示させたいです。 例えば、上記のようにB3にaがあるので、A3の30を、別のセルに自動で30と出るようにしたいです。 B列には、ランダムにaを入力しますので、aが別の行にある場合もあります。 この場合の数式を教えてください。 よろしくお願い致します。

  • エクセルの検索・関数

    お分かりの方、教えて下さい!! エクセルにて、 A列に13桁の数字がランダムにあり、 C列にも13桁の数字がランダムにあり、 E列には1桁~3桁の数字がランダムにあります。 B列に同じ行のA列の13桁と一致するC列の13桁を見つけ、 そのC列のと同じ行のE列の数字を入れたいのです。 上記の内容が出来る関数を教えて下さい。 分かりにくくてすみませんが、よろしくお願いいたします。

  • EXCEL VBAで

    EXCEL VBAで シート1のA2~G2までの列にA,B,C,D~と題名があり、それぞれの下の行には数字が並んでます。シート2のA2~G2までの列にもA,B,C,D~と題名がありますが、ランダムに並んでます。シート1のAの行を、シート2のAの行に、BにはBへという風にコピーをさせるにはどのようにすればよいでしょうか。またシート1A~Gのどれかが欠けている場合もあります。その場合はシート1にあるもののみコピーすることとします。 わかりにくいかも知れませんか、どうかよろしくお願いします。

専門家に質問してみよう