- ベストアンサー
Excelで連続したデータの個数を調べる方法
初めて質問させて頂きます。 現在、下記のような形式のファイルを作成しています。 例 2 2 2 1 1 1 1 1 ある条件式にて1か2のフラグをたてて、それを日付データの横に記述させるようにしています。 一番下が最新のデータになるのですが、ここで2が1に変わってから何個目(何日目)と言うのを得たいのですが(この例だと2が1に変わって5日目)、どのような関数を使えば良いか分かりません。 基本的な質問かもしれませんが、どうぞよろしくお願いいたします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
関数はifを使用します。 A|B 1| | 2|2|1 3|2|2 4|2|3 5|1|1 6|1|2 7|1|3 8|1|4 9|1|5 この場合、B1の式は =IF(A2=A1,B1+1,1) になります。 これをB1に入力して、B1のセルの右下にある四角形を下へドラックしてコピーしてください。式は自動的に変わります。 式を詳しく説明するとまずフラグが変わったか変わってないかを判定し、変化があるのならば1を代入します。 変化がないのならば上の数値に1を加算します。 またこの式をA行にコピーすると当然エラーになるので、データは2行目から入力してください。1行目から入力するのならばB1は1と入力してください。 ちなみにこの式はフラグがいくつに増えても大丈夫です。
その他の回答 (5)
- maron--5
- ベストアンサー率36% (321/877)
◆これで、いかがでしょうか? =IF(COUNT(A:A),COUNT(A:A)-MAX(INDEX((A1:A100<>LOOKUP(10^10,A:A))*($A$1:$A$100<>"")*ROW(A1:A100),)))
お礼
ご回答ありがとうございました。 色々な関数や考え方があるのだとあらためて知る事が出来ました。 私ももっと勉強して理解を深めたいと思います。
- maron--5
- ベストアンサー率36% (321/877)
◆回答の式は不適切です、無視してください
- maron--5
- ベストアンサー率36% (321/877)
◆関数でこんな方法もありますよ =SUMPRODUCT((((A1:A100=LOOKUP(10^10,A:A))*(A1:A100<>""))>0)*1)
- imogasi
- ベストアンサー率27% (4737/17069)
>基本的な質問かもしれませんが 私にとって、皮肉に聞こえる、難しい問題です。 しかし、ありえるニーズの質問ですね。 配列数式、SUMPRODUCTともとりあえずうまくいかなくて。 作業列を使わない方法を考えると難しい。 作業列を使えば既回答のように答えが出るが。 色々やってみたが、下記で逃げた。 ロジックは、一番下の行のほうから比較して行って、同じならカウントアップし、変わったら件数カウントアップ停止し、その時の数字が答え。 標準モジュールに Function fromd(a) c = a.Column k = 1 d = Cells(65536, c).End(xlUp).Row For i = d - 1 To 1 Step -1 If Cells(i, c) = Cells(d, c) Then k = k + 1 Else fromd = k Exit Function End If Next i End Function と入れる。 シートで、答えがほしいセルに =fromd(A1) と入れる。A列の数字または文字列が問題になっている場合です。 例データ a xx f g gg xx xx xx 結果 3
お礼
素早いご返答、ありがとうございました。 自分自身、難しく考えていたところもあったのですが、何とか上手く処理する事が出来ました。 また何かご質問をさせて頂くことがあるかと思いますので、よろしくお願い致します。
- gosuke32
- ベストアンサー率29% (36/124)
一番上の「2」が「A1」のセルにあって、それから下に1つづつ下がっていって一番下のセルが「A8」と仮定をして回答します。 数式を入力するセルをその隣の「B1」から「B8」として、「B1」のセルには数字の「1」、「B2」のセルに「=IF(A1=A2,B1+1,1)」を入力して、「B3」から「B8」までコピーすればOKです。 お試し下さい。
お礼
ご回答、ありがとうございます。 初めて利用したのですが、こんなに早く回答を頂けた事に驚いています。 また何かありましたらよろしくお願いいたします。
お礼
大変参考になりました。 早速この方法でやってみたところ、上手くいきました。 ありがとうございます。