次の方法で共有

同じデータの出た時からその1つ前にでた同じデータまでの間隔を取得したいのですが・・・

Anonymous
2010-05-02T06:49:57+00:00

たとえば、A列の行方向に順番に1、2,3、1、9、6、1、5、8、8、1とデータがある場合、最後の1から1つ前の1までの間隔は4、1つ前の1から2つ前の1までの間隔は3、2つ前の1から3つ前の1までの間隔は3というように各々基準になるデータの1から1つ前の1までの間隔を取得したいのですが・・・どうすれば良いでしょうか?よろしくお願いします。

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2010-05-03T13:37:41+00:00

1の場合だけ数えるのでしょうか?

みながさんのと似たようなものですが、一種のお遊びとして、1に限らず、一つ上の同じ数字までの間隔を

数えるということで書いてみました。

A1からデータが入っているとして、B2に

=(COUNTIF(A$1:A1,A2)>0)*(ROW()-LARGE((A$1:A1=A2)*ROW(A$1:A1),1))

でCTRL+Shift+Enter

A2を好きな所までコピーしてください。

参考まで

もし、1の場合だけ数えるということなら、もっと気のきいた手はありますが、一番簡単な改造は

=(A2=1)*(COUNTIF(A$1:A1,A2)>0)*(ROW()-LARGE((A$1:A1=A2)*ROW(A$1:A1),1))

です。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

4 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2010-05-04T08:28:49+00:00

    勉強になりました。

    有難うございました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2010-05-04T07:15:55+00:00

    配列数式でやっています。(これの意味はExcelのヘルプをご覧ください)

    自分で出しておいて言うのもなんですが、見て式の意味を理解できないのでしたら、使うことはお勧めできません。

    後で改造ができなくなるのが目に見えています。また、業務上作成したもので、異動後に引き継がなければ

    ならないものでしたら、ことさらお勧めできません。(後の人が困ること請け合いです)

    式の意味は簡単に記載させていただきますが、式の動きは次の方法で確認できます。

    1.式の入っているセルを選択する

    2.数式バーで、確認したい部分をドラッグ。例えば

    LARGE((A$1:A1=A2)*ROW(A$1:A1),1)

    3.F9を押すと、その部分の結果が表示されます。

    4.ESCキーを押して値⇒式にもどします。

    (4のところを間違えると式のその部分が値に固定されてしまいます)

    式の意味は以下の通りです

    (COUNTIF(A$1:A1,A2)>0) は自分より上に同じ値のセルが存在しないとFalse(つまりゼロ)になります

    ((A$1:A1=A2)

    これで、A1から自分の一つ前のセルまでの間に同じ値があったらTrue,なければFalseの配列ができます。

    ROW(A$1:A1)

    は各行の行番号ですから1,2,3,4・・・・・という通し番号になります。

    その結果同じ数字のないところは0、同じ数字のあるところはその行番号の配列が生成されます。

    例えば7行目に1があり、2行目と5行目に1がある場合では

    {0;2;0;0;5;0}

    となります。

    この配列からLargeで最大数、つまり直前の同数字の行数をとりだし、それを自分自身の行数Row()から引いて

    間隔を計算しています。

    細かいところは、前に述べたF9であちこち調べて確認してください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2010-05-04T05:57:57+00:00

    y sakudaさんありがとうございます。やりたい事が出来ました。

    また、お手数ですが、御迷惑でなかったら、この式の意味を教えていただけませんか?

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2010-05-02T08:30:37+00:00

    取得は関数でいいのでしょうか?

    A1より、1,2,3,1・・とある場合で、上から1番目から2番目の間隔、2番目から3番目の間隔と隣のB1から表示する数式です。

    =IF(COUNTIF($A$1:$A$11,1)<=ROW(A1),"",SMALL(IF($A$1:$A$11=1,ROW($A$1:$A$11),""),ROW(A1)+1)-SMALL(IF($A$1:$A$11=1,ROW($A$1:$A$11),""),ROW(A1)))

    とB1に入れ、CtrlキーとShiftキーを押しながら、Enterキーを押します。B1をコピーし、B2:B10まで貼り付けしておきます。

    例の場合では、上から順に、3,3,4と表示されます。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません