お世話になります^ ^
みなさんとても親切な方で、大変恐縮ですm(_ _)m
10000以上のデータがあるのですが、、
あるセルからあるセルまでの間隔の数値を、
自動的に求める方法はありますでしょうか??
数値はHセルに入力しています。
例えば、数値1と2と、
他の数値とのセル間隔を数字で求められたらと思っています。
例)セルH1 2
セルH2 8
セルH3 6
セルH4 15
セルH5 1
セルH6 1
となる場合、
1と2以外のセル間を数字で求めると、
0→3→0となります。
このように求められる方法はありますでしょうか?
稚拙な文章のため、
意味がわからない!などありましたら、
ご指摘ください。
よろしくお願い致しますm(_ _)m
No.1
- 回答日時:
>あるセルからあるセルまでの間隔の数値を
これはなんでしょう?
セルの升目の数を数えるのですか?
1行目に1が入力されていて、5行目に2が入力されていたら
間隔はいくつになるのでしょう?
>1と2以外のセル間を数字で求めると、
>0→3→0となります。
この場合の1と2というのは、セルH1とセルH5の事ですか?
0→3→0がわかりません。^^;
読解力がなくてすいません。
この回答への補足
早速のご回答ありがとうございます^ ^
いやぁ~
説明が稚拙で大変申し訳ありません。。
いつもおまえは説明がよくわからんといわれます。
>1行目に1が入力されていて、5行目に2が入力されていたら
>間隔はいくつになるのでしょう?
この間隔は、3になります。
1行目と5行目の間のセルをカウントします。
その間のセルは、2行目、3行目、4行目となり、
3となります。
>この場合の1と2というのは、セルH1とセルH5の事ですか?
>0→3→0がわかりません。^^;
わかりにくくてすみません。。
この場合の1と2というのは、
セルH1、セルH5、セルH6のことになります。
0→3→0は、
セルH1は2(該当数字)です。
初めから該当数字が出たため、
セル間の間隔がないことになります。
ですので、0となります。
そして次の該当数字の1か2までの間隔は?
ということになりますと、
次の該当数字は、セルH5の1となります。
その間隔はセルH2とセルH3とセルH4の3つですので、
3になります。
さらに次の該当数字の1か2までの間隔は?
ということになりますと、
次の該当数字は、セルH6の1となります。
セルH5で該当数字1が出ていますので、
セルH5とセルH6の間にセルがありませんので、
0となります。
まだまだわかりにくい点があると存じます。。
その際は、何なりとお申し付け下さい!
よろしくお願い致します。
No.2
- 回答日時:
という事は、I列に対象となる数値があったら行番号を表示させれば
あとは計算できますよね。
I1セルに
=IF(OR(H1=1,H1=2),ROW(),"")
と記入してデーター分下方にコピーします。
I列にH列の数値が、1か2だった場合に、その該当の行番号が
表示されます。
以降は、引き算の設定ですから間のセル数を数えるなら、
さらに1引くって事になりますね。
この回答への補足
ご回答ありがとうございます!!
バッチリできました!
>以降は、引き算の設定ですから間のセル数を数えるなら、
>さらに1引くって事になりますね。
さらに1引くためには、
数式になにを書き足せばよいでしょうか?
10000以上のデータがあるのですが、、
ご教授いただきました方法ですと、
少し問題が生じてしまいました。。
該当数字の1か2が、
セルH20にあったためセル間が20ということで表示されました。
ここまではバッチリなのですが、、
次のセル間のセルカウント数が、
前回のセル間の値に加算されていってしまうのです。。
例)セルH20に該当数字があり、間隔数20と表示。
セルH30に該当数字があり、間隔数30と表示。
このように加算されてしまい、
セルH20とセルH30の間隔が10ではなく、
30と表示されてしまいます。。
これを解決する方法はありますでしょうか??
何度もお手数をおけして恐縮ですm(_ _)m
No.3
- 回答日時:
さらに「1」引く為には単純に数式の最後に
「-1」を付け足すだけです。
先ほどの関数は、「1」か「2」があった場合のそのセルの行数
ですから、そこから計算しないといけませんよ。
単純にセル番地の行数番号を返しているだけです。
間のセル数を数えるなら、
さらにJ列に次の関数をセットします。
最初は行(J1)は参照が難しいのでセットしません。
関数を入れるのは、「J2」セルです。間違えないで下さいね。
=IF(I2="","",I2-(MAX($I$1:I1)+1))
これで行番号表示されたI列の隣のJ列にセル数を数えた数値が
表示されます。
この回答への補足
またまたご回答ありがとうございます!!
-1の件は完璧にできたのですが、、
=IF(I2="","",I2-(MAX($I$1:I1)+1))がうまくいきません。。
おっしゃられるとおり、
J1セルではなく、J2セルにそのまま
=IF(I2="","",I2-(MAX($I$1:I1)+1))
をコピーペしたのですが、
何も起こりません^ ^;
WindowsXPでエクセル2003SPを使っていますが、
何かバージョンなどの関係があるのでしょうか?
No.4
- 回答日時:
>J1セルではなく、J2セルにそのまま
>=IF(I2="","",I2-(MAX($I$1:I1)+1))
>をコピーペしたのですが、
>何も起こりません^ ^;
ごめんなさい言葉足らずでした。
この数式をそのままデーターがあるだけ下方にコピーです。^^;
J2に該当する1・2の数値が無ければJ2にだけ貼り付けても
何も変化しませんね^^;
この回答への補足
ご回答ありがとうございます!
言葉足らずなんてとんでもないです。
わたくしが初心者すぎるだけですので。。
>この数式をそのままデーターがあるだけ下方にコピーです。^^;
とのことですが、
つまりJセルの行すべて(J1~J10000以上のセル)に、
ご教授いただいた数式をコピペするということでしょうか?
それでしたら先ほどやってみましたが、
何も起こりませんでした。。
No.5
- 回答日時:
Iの列には
=IF(OR(H1=1,H1=2),ROW(),"")
という数式が入っていて、1と2のある行には
それぞれ行番号が表示されてますよね。
で、そのことを踏まえて
=IF(I2="","",I2-(MAX($I$1:I1)+1))
という数式を今度はJ2から下方へコピーです。
この二列、二つの数式で完成です。
この回答への補足
いつもご回答ありがとうございます!!
やっとできました^ ^b
最後の質問なのですが、
J列で取得した、1と2のセル間の数字を、
例えばK列にまとめて表示できますでしょうか?
J列にはセル間の数字が表示されていますが、
空白が長く続きますし、
なにしろデータ量が10000万以上と膨大ですので、
見やすくひとつの列に空白なしで並べられたら、、
と思っております。
いつもお時間をさいていただきまして、
ありがとうございますm(_ _)m
No.6
- 回答日時:
珍しいい型の問題で、それだけに十分説明してもらわ無いとわからない。
例の数も少なすぎる。
ーー
VBAでやれば、下記のように簡単な問題ではないのかな。
まずA列にデータがあるとして、
(1)A列の2を1に置換する。
(2)シートでALT+F11キー
ALTキーを押したままでIキー、そしてMきーを押す。標準モジュールというのが出る。そこへ下記をコピペする。
Sub test01()
d = Range("a65536").End(xlUp).Row 'A列最下行を捉える
k = 1
m = 1
For i = 1 To d
If Cells(i, "A") = 1 Then 'A列の1を探す
gyo = i
'MsgBox gyou - m
Cells(k, "C") = gyo - m 'C列に表示
k = k + 1
m = gyo + 1
End If
Next i
End Sub
ーー
(3)F5キーをおす。実行される
(4)結果(C列)
A列 C列
10
83
60
15
1
1
====
何分質問の問題点を誤解していたらすみません、無視してください。
No.7
- 回答日時:
ごめんなさい。
バレーの練習に行ってました。^^;K列での行詰めですね。
K1セルに
=IF(ISERROR(INDEX($J$1:$J$10000,SMALL($I$1:$I$10000,ROW(J1)))),"",INDEX($J$1:$J$10000,SMALL($I$1:$I$10000,ROW(J1))))
を記入して下方にコピーです。
ただし、範囲の終わりが不明なので、範囲参照の中に「$I$1:$I$10000」と「$J$1:$J$10000」が二つづつありますので
正しい行数に直してください。
最終行の行数に「10000」を書き換えてくれればいいです。^^
この回答への補足
ご回答ありがとうございます^ ^
先日はお世話になりましたm(_ _)m
バレーですか!
いいですね~
お疲れ様です!
ご教授していただいたとおりにやってみたのですが、、
何も起こりません。。
まず、K1セルに
IF(ISERROR(INDEX($J$1:$J$10000,SMALL($I$1:$I$10000,ROW(J1)))),"",INDEX($J$1:$J$10000,SMALL($I$1:$I$10000,ROW(J1))))
をコピーしてエンターを押しました。
そしてK1セルをコピーして、
ためしにK2からK3000までペーストしましたが、
何も起こりませんでした。。
何か手順が間違っていましたでしょうか?
No.8
- 回答日時:
>詰めて表示
J2=SMALL($I:$I,ROW())-SMALL($I:$I,ROW()-1)-1
これを下にコピーでOKです。
エラーを回避するなら、
J2=IF(COUNT($I:$I)<ROW(),"",SMALL($I:$I,ROW())-SMALL($I:$I,ROW()-1)-1)
No.9
- 回答日時:
こんにちは。
No.5までは表示されたのですよね。
さて、数式の解説をしながら検証してみますか。
この数式はエラー処理をしているので、IFの後にISERRORを入れて
あります。
ISERRORの中に書かれた関数がエラーだったら空白を返します。
その部分が、
ISERROR(INDEX($J$1:$J$10000,SMALL($I$1:$I$10000,ROW(J1))))
です。
本来なら、
INDEX($J$1:$J$10000,SMALL($I$1:$I$10000,ROW(J1))))
だけで機能するのですが、行詰めした以降のセルにはエラーが
表示されるのでエラー回避してます。
セル数を数えた数値が0・2・0・3・5・4と6個しかなければ
上から6行目以降はすべてエラー表示されますからね。
では先にSMALLです。
この関数は、指定された範囲の中で小さい順に●番目の
数字を返します。
●番目と言うのは、任意に指定できます。
Iの列には、検索に当たった行数が表示されていますから、
上から下に数字が段々大きくなります。
この数値の中でJ列に小さい方から順番に拾って行こうというのが
狙いです。
そこで●番目の設定ですが、「ROW(J1)」と指定しています。
参照の形が相対参照というコピーする事で参照先が変化する
形をとってますので、下にコピーして行けば、J2 J3と変化します。
ROWは行番号を返す関数ですから、列番号に関係なく
J1=1 J2=2 J30=30という数字を返します。
つまり、提示した基本の数式では、1番目に小さい数字を拾うと
言う事になります。
そしてその上の「INDEX」は範囲の中で行数で指定された場所の
値を拾います。
つまり、SMALLで小さい方からと拾った数値はそのまま行番号なので
その数値を範囲の中で当てはめれば、J列のセル数を数えた数値が
返されるはずです。
何も起こらないって事はエラー回避が働いている可能性がありますから
一度、
=INDEX(J:J,SMALL(J:J,ROW(J1))))
この関数をだけをJ1セルに入力して下にコピーして見て下さい。
その結果を教えて下さい。
この回答への補足
いつもご回答ありがとうございます^ ^
ご教授いただきました処理を行った結果を、
報告いたします。
J1セルに入力して下にコピーして見ましたところ、
入力した数式にエラーが発生しましたという物が出て、
修正を適応しますか?という問にはいと回答しました。
すると、数式を計算できませんという警告が出てきました。
その後J列にはすべて数字の0が表示されていました。
ためしにK1セルに入力して下にコピーして見ましたところ、、
同じような警告文が出ました。
その後K列には#VALUEと表示されました。
度々お世話になりますm(_ _)m
No.10
- 回答日時:
あっ、ごめんなさい。
K列でしたね。No.5まで出来ているなら、次はK列に行詰めですから
J列ではなく、K列に入力して頂く事になります。
それでもエラーが表示されたなら、このエラーは
引数や演算子に使われている種類のアンマッチを示しますので
一旦数式を二つに分けてどこにエラーがあるか見てみます。
K列に入れる数式を
=SMALL($I$1:$I$10000,ROW(J1))
として下にコピーしてください。
問題が無ければ、I列の数値が行詰めされて表示されるはずです。
この操作が出来ていれば、次はL列に
=INDEX($J$1:$J$10000,K1)
と入力してみてください。
この二段階の操作をまとめて書いたのが先ほどの数式です。
PS:ちなみにエクセルのバージョンは何でしょう? 2003?
この回答への補足
いつもご回答ありがとうございます^ ^
そして返事が遅れてしまい、
大変申し訳ありません。。
ちょっと出かけていました。
ご教授いただきましたとおり、
K列に入れる数式を
=SMALL($I$1:$I$10000,ROW(J1))
として下にコピーしたのですが、、
#VALUE
と数式をコピーしたK列のセルすべてに
表示されてしまいました。。
エクセルのバージョンは、
おっしゃるとおり2003であります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 先頭と末尾を指定して連続した数字を入力 1 2022/09/14 13:12
- Excel(エクセル) 条件に合った数値の合計を表示させたい関数と条件指定の方法 3 2023/05/13 16:07
- Excel(エクセル) エクセルの質問です 5 2022/12/19 10:34
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) エクセルの数式を等間隔にオートフィルできるやり方を教えていただきたいです。 実際の作業↓ A3セルに 7 2023/06/05 19:04
- Excel(エクセル) 独自の条件を用いた計算式、もしくは別の方法で打ち出す事は可能でしょうか? 6 2022/05/18 10:38
- Excel(エクセル) 特定の条件で計算式を組みたいのですが、教えて頂けますでしょうか? 6 2022/10/28 19:02
- Excel(エクセル) エクセル VBA セルの結合 2 2022/09/07 11:48
- Excel(エクセル) 関数 9 2022/05/27 09:47
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
Excelで特定の数字の間にあるセルの数を数える方法
その他(Microsoft Office)
-
下記のようにA列にランダムで出現する数字に対して、B列でその出現間隔を
Excel(エクセル)
-
エクセルで数字と数字の間隔(空白の数)を計算する方法を教えてください。
Excel(エクセル)
-
-
4
Excel 特定の文字列間のセルの個数を数える方法
Excel(エクセル)
-
5
座標(x,y)間(=2点)の距離をエクセルで求めるには?
Excel(エクセル)
-
6
[エクセル関数]等間隔に値を取得する方法について教えてください
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
Microsoft1Officeの互換ソフト...
-
Excel ピボットテーブルで日付...
-
エクセル関数を教えてください
-
【マクロ】その時、その時で変...
-
【マクロ】読取専用のファイル...
-
LOOKUP関数を使えばいいのでし...
-
エクセル 白黒印刷で白線を印刷...
-
【関数】先頭だけにある、半角...
-
【関数】適切な文字数の数字を...
-
Excelのチェックボックスの使い...
-
エクセルでの作業計算方法について
-
Excelのpivotについて質問です
-
WPS OFFICEでの縦書きについて
-
時間によってファイル名が変わ...
-
エクセルのセルに同じ大きさの...
-
Aというブックの1というシート...
-
エクセルの順位別一覧表の自動...
-
西暦や和暦の表示をyyyymmdd表...
-
【マクロ】エクセルにかいてあ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報