- ベストアンサー
エクセルで数字の間のセル個数を調べる方法
- エクセルで特定の数字間のセル個数を調べる方法を教えてください。
- セルA1~A10にランダムに数字が入力されている場合、最新のセルの数字とそのセル以前に入力されている同じ数字の間のセルの個数を知りたいです。
- 例えば、セルA1=8, A2=3, A3=2, A4=5, A5=9, A6=2となっている場合、A6の2と一番最近の2の間には2つのセルがあります。このようなセルの個数を求める方法を教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 外していたらごめんなさい。 ↓の画像で説明します。(データは2行目からという表にしています) かなり強引な方法になりますが・・・ 作業用の列を1列設けています。 作業列C2に =IF(A2="","",ROW()) 結果のB2セルに =IF(COUNTIF($A$2:A2,A2)<2,"",INDEX($C$2:C2,SMALL(IF($A$2:A2=A2,ROW($A$1:A1)),COUNTIF($A$2:A2,A2)))-INDEX($C$2:C2,SMALL(IF($A$2:A2=A2,ROW($A$1:A1)),COUNTIF($A$2:A2,A2)-1))-1) これは配列数式になってしまいますので、この画面からB2セルにコピー&ペーストしただけではエラーになると思います。 B2セルに貼り付け後、F2キーを押す、またはB2セルをダブルクリック、または数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定します。 数式の前後に{ }マークが入り配列数式になります。 最後にB2・C2セルを範囲指定し、C2セルのフィルハンドルで下へコピーすると 画像のような感じになります。 以上、参考になればよいのですが 他に良い方法があれば読み流してくださいね。m(__)m
その他の回答 (4)
- MackyNo1
- ベストアンサー率53% (1521/2850)
A列のセルの値と同じ値がそのセルより上にあった場合に、最後に出てくる数字との行の差(A6とA3なら「3」)を求めたいなら以下のような数式をB2セルに入力し下方向にオートフィルします。 =IF(COUNTIF($A$1:A1,A2)=0,"",ROW(A2)-MAX(INDEX(($A$1:A1=A2)*ROW($A$1:A1),))) ちなみに、A6とA3の場合に「2」を返したいなら上記のIF関数の第3引数を「-1」してください。
お礼
参考にさせていただきます。 回答ありがとうございます。
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルで指定した数値や文字列のセルを発見できるのは、MATCH関数(VLOOKUP関数)ぐらいしかなく、それは ・同一列内 ・指定行(普通は第1行)から最初のものだけ という制約(そのほかの良い関数が無い)があります。 本質問例では注記が無いが、2はA列で複数出現すると思われる。その場合最も行数的に近いセルを問題にせよ、ということだろうが、A6を起点にリバースMatch的な関数は無い。(参考 言語によっては文字列内ですが、InstrRev関数などがある) だから難物。 ーーー ユーザー関数を作ると出来るかもしれない、がVBAの経験あるかな。 ーー 例データ A列入力 B列=関数の結果 1 F 2 F 3 F 2 2 2 1 11 F 1 6 1 1 2 4 3 7 4 F 5 F 2 4 3 4 1 7 ーーー B1に式 =IF(A1="","",revf(A1)) を入れて、下方向に式を複写。 ユーザー関数定義は 標準モジュールに Function revf(a) For i = a.Row() - 1 To 1 Step -1 If Cells(i, "A") = a.Value Then revf = a.Row - i Exit Function End If Next revf = "F" End Function Fは初出の印(空白でも何でも文字列など指定して良い)。 revf = a.Row - i はrevf = a.Row - i-1にするかは好みで決めてください。 ーーー この質問は過去にもあったような気がするが。
お礼
回答ありがとうございます。 エクセルはよく使うのですが、未だに関数などを使った作業が苦手でして…。 参考書も買い勉強しているのですが…。 しかし、毎回とても参考になります。本当にありがとうございました。
- kmetu
- ベストアンサー率41% (562/1346)
B2に =COLUMN()-MATCH(B1,$A$1:A1,0)-1 と入力して右に必要なだけフィルしたらいかがでしょう それぞれの数値の下に一致したセルがあるときに間のセルの数を表示します。
お礼
なるほどですね! 参考になります。 回答ありがとうございました。
- bin-chan
- ベストアンサー率33% (1403/4213)
列Aにオートフィルタを設定して、対象とする数値を指定して 表示された行の列Bに何か目印になる値を入力していく、では駄目ですか?
お礼
オートフィルタですね。 試してみたいと思います。 回答ありがとうございました。
お礼
回答ありがとうございます。 とても参考になります。 しかし、エクセルは難しいですね。