- ベストアンサー
exel2003 行の検索
exel2003での質問です。 ある行の先頭の数値を取得する関数を作りたいのですが、どうしたらいいでしょうか? あるHPで LOOKUP(10^16,A1:A10) とすれば、検索範囲の行の最後の値を取得するというのを見つけました。 また、この検査値10^16というのは最大値という意味だとあり、 ならばここを最小値に変えればできるのかと思っていますが それをどこで探せばいいのかわかりません。 よろしければご教授願います。 また、それ以外の方法でも良いのでよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
「ある行」の範囲が A1:Z1 と仮定すると、次の配列数式では如何かと。 {=INDEX(A1:Z1,MATCH(TRUE,ISNUMBER(A1:Z1),0))}
その他の回答 (2)
- _Kyle
- ベストアンサー率78% (109/139)
「対象範囲の最初のデータが文字列でない」ことが判っている場合は、 =--VLOOKUP("?*",INDEX(A1:A99&"",),1,0) (対象範囲が列範囲の場合) とか =--HLOOKUP("?*",INDEX(A1:Z1&"",),1,0) (対象範囲が行範囲の場合) といった数式でも最初の数値を取れます。 まぁ、 =INDEX(A1:A10,MATCH(TRUE,INDEX(ISNUMBER(A1:A10),),0)) といったあたりが素直かなとは思いますし、 私が自分で使うなら#1さんのように配列数式にしますが…。 以上ご参考まで。 ------------------------------------------------------ なお、余談ですが、 >この検査値10^16というのは最大値という意味だとあり、 10^16というのは「対象範囲に現れないだろう十分に大きな値」という程度の意味です。 対象範囲の数値がすべて100未満だということが判っていれば100としても良いですし、 一般的な状況では、10^10でも2^50でも同じことです。 逆に、10^16より大きい値が対象範囲にあれば、不適切な結果が返る可能性があります。 そのHPで10^16としてあったのは おそらくExcelの有効桁数からの連想ではないかと思われますが、 「有効桁数が15桁」というのは単に精度の問題であって 「15桁以上の数値は扱えない」とか「最大の数値は999,999,999,999,999である」とか いう意味ではありません。 誤解されているといけないので一応念のため。
お礼
10^16の部分は完全に勘違いしていたようで・・・。 ありがとうございます!とても勉強になりました!
- KURUMITO
- ベストアンサー率42% (1835/4283)
最後の値が入力されている行から上の行では数値が連続して入力されており空の行が無いとすれば、先頭の数値は次の式で求められます。 例えばお示しのケースの場合では =INDIRECT("A"&MATCH(LOOKUP(10^16,A1:A10),A1:A10,0)-COUNT(A1:A10)+1) 簡単な関数はないでしょう。
お礼
同じ動作でも色々な表現があるんですね。 参考になりました。ありがとうございます。
お礼
ありがとうございます!無事目的の動作をしてくれました!