• ベストアンサー

exel2003 行の検索

exel2003での質問です。 ある行の先頭の数値を取得する関数を作りたいのですが、どうしたらいいでしょうか? あるHPで LOOKUP(10^16,A1:A10) とすれば、検索範囲の行の最後の値を取得するというのを見つけました。 また、この検査値10^16というのは最大値という意味だとあり、 ならばここを最小値に変えればできるのかと思っていますが それをどこで探せばいいのかわかりません。 よろしければご教授願います。 また、それ以外の方法でも良いのでよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#204879
noname#204879
回答No.1

「ある行」の範囲が A1:Z1 と仮定すると、次の配列数式では如何かと。 {=INDEX(A1:Z1,MATCH(TRUE,ISNUMBER(A1:Z1),0))}

grayzoone
質問者

お礼

ありがとうございます!無事目的の動作をしてくれました!

その他の回答 (2)

  • _Kyle
  • ベストアンサー率78% (109/139)
回答No.3

「対象範囲の最初のデータが文字列でない」ことが判っている場合は、  =--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である」とか いう意味ではありません。 誤解されているといけないので一応念のため。

grayzoone
質問者

お礼

10^16の部分は完全に勘違いしていたようで・・・。 ありがとうございます!とても勉強になりました!

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

最後の値が入力されている行から上の行では数値が連続して入力されており空の行が無いとすれば、先頭の数値は次の式で求められます。 例えばお示しのケースの場合では =INDIRECT("A"&MATCH(LOOKUP(10^16,A1:A10),A1:A10,0)-COUNT(A1:A10)+1) 簡単な関数はないでしょう。

grayzoone
質問者

お礼

同じ動作でも色々な表現があるんですね。 参考になりました。ありがとうございます。

関連するQ&A

  • エクセル 検索値と一致する行の検索

    Sheet1に以下のようなデータ(3,000件程度)があり、Sheet2を「検索用シート」として、検査値と一致する(Sheet1の)検査範囲の行データ(各対応範囲)を検索・抽出したいと考えています。 なお、検査値及び検査範囲は20桁の数字であるため、文字列で表示しています。 LOOKUP関数を使用して試みたのですが、検査値を入力したところ、異なる対応範囲のデータが抽出されてしまうケースが発生しました。 原因が分かりません。検査値及び検査範囲に問題があるのでしょうか? 参考になるか分かりませんが、この検査値及び検査範囲の上2桁は「11...」、「12...」、「13...」と1から始る数字となっております。 LOOKUP関数では不可能なのでしょうか? 可能であれば、関数を使用して正しいデータを検索・抽出できる方法を教えてください。 Sheet1    A(日付)  B(氏名)   D(20桁の数字)        1  2/1      ○●    11223344556677889911        2  2/3       △▲    12341234123412341234       3  2/5       □■    11112222333344445555         ↑       ↑        ↑      対応範囲1  対応範囲2   検査範囲 Sheet2(例)     A(検査値)          B(対応範囲1)       C(対応範囲2)      1  12341234123412341234      2/3             △▲                               ↑              ↑       A(検査値)に入力した値と、これに一致するSheet1の各対応範囲を検索・抽出したい。  

  • EXCELの質問

    B列で最大の値を取得して、A列でその時の時間を取得したいのですが、 Lookup関数を使用しても行が増えるとうまくいきません。どうしてでしょうか? MATCH関数も行が増えるとうまく値を取れません。誰か教えてください。 例)   A  B 1 8:00 350 2 8:10 500 3 8:20 200 4 8:30 400 この場合8:10を取得したいのですが・・・

  • エクセルで昇順データから検査値以上の最小の値の位置を取得するには

    検査範囲(A1:A10)のデータが、昇順に並んでいます。 検査値(B1)以下の最大の値および検査値以上の最小の値の両方を検索したいのです。 =MATCH(B1,A1:A31,1)で、検査値(B1)以下の最大の値の位置は取得できますが、=MATCH(B1,A1:A31,-1)で検査値以上の最小の値の位置を取得するには検査範囲のデータは、降順に並べ替えておく必要があります。 データの並び順をいじらず、両方を取得するワークシート関数はないのでしょうか?

  • EXCELのLOOKUP関数に似た関数

    EXCELのLOOKUP関数でベクトル形式の場合、 「検査値が見つからない場合、検査範囲内で検査値以下の最大値が、一致する値として使用されます」 のですが、これと似たケースで 「検査値が見つからない場合、検査範囲内で検査値以上の最小値が、一致する値として使用されます」 のように値を返して欲しいのです。 方法をご存知の方、お力をお貸し願います。

  • ACCESSのDLOOKUPについて

    ACCESS超初心者です。クエリーでDLOOKUP関数を使って式を作っていますが、エクセルのLOOKUP関数のように使いたいのです。DLOOKUP関数は参照する値が一致しないと表示しません。LOOKUP関数は検査範囲として検査値を検索し、検査値が見つかると、配列の次の行または列の同じ位置にあるセルに含まれている値を返します。簡単な表を使うと A  B 10  100 20  200 =LOOKUP(10,A1:A2,B1:B2) であれば100が表示されます。エクセルのLOOKUP関数ならここで10を11や12になおしても100と表示されます。しかしアクセスのDLOOKUP関数はこのような範囲をつけられません。10から19までなら100、20以上なら200と表示する方法はあるのでしょうか。初心者なのでVBやSQLなどの高度な技はわかりません。ご指導お願いします。

  • エクセルVLOOKUPで検査値以上の最小の値をもとめるには?

    検索範囲A1:A31 検査値B1で =VLOOKUP(B1,A1:A31,TRUE) では、検査値以下の最大の値しか取得できなかったのですが、検査値以上の最小の値をもとめるにはどうすればいいのでしょう? (VLOOKUP関数に限定するわけではありませんが、VLOOKUPで出来るよと聞いたものですから・・・・)

  • エクセルの条件検索

    行の先頭の値を返すには エクセル関数をどのようにつかったらよいのでしょうか? たとえば CC1を検索すると Bが表示されるようにしたいのですが A AA1 AA2 AA3 AA4 B BB1 BB2 CC1 D BB4 AA5 この表には同じ値は絶対ありません。 VLOOKUPなど LOOKUPを主に検索をしてみたのですが、わかりませんでした よろしくおねがいいたします。

  • Excel 関数 lookup 幅のある数字の検索

    Excel関数のLookupの使い方についてですが、 以下のように、テーブルの検査範囲に幅を持たせて、 その幅の範囲内に検査値が該当した場合、 B列のセルに1~3までの数値をlooup関数で反映させたいと考えていますが、 どうすればいいのでしょうか? ※実際のデータは5,000以上あるので、関数でやりたいと考えています。 ぜひご教示お願いします。 A(検査値)    B 1   0.15       1 2  0.99       3 3  0.31       2 4  2.00       3 --------------------------- テーブル 検査範囲   対応範囲 0.00~0.30     1 0.31~0.50     2 0.51~       3

  • 【Excel VBA】指定した行の最大値を持つセル番地を取得したい

    指定した範囲内で最大値及び最小値のセル番地を取得するには、 どうコーディングしたらよろしいでしょうか? 対象範囲 A1:Z2000の各行(行番は変数で処理) 例えば、 ---------------------------------------------------- For x = 1 To 2000 Range(A列のx行目:A列のx行目)の最大値 → B列                最小値 → Y列 Next x ---------------------------------------------------- このように、2000行分同じことを繰り返し、それぞれの行内での 最大値及び最小値を含むセルの列名を取得し、 B列のx行目を赤(最大値) Y列のx行目を青(最小値) に着色したいのです。 よろしくお願いします。

  • excel関数を用いてある行の範囲内の数値のみを違う行に抽出し、同じ列に対応する値も引っ張ってくることは可能ですか?

        A   B   C   D 1   33   180 2   58   300 3   89   310 4   152   240 5   205   74 上のような表になっている時に、EXCEL関数を用いて、[A]行の「60以上、180以下の数値」のみをC列に引っ張ってきて、なおかつ[A]行のそれぞれの値に対応する[B]行の値をD行に引っ張ってくることは可能でしょうか? 理想的な結果として   A     B      C      D 1   33  180     58    300 2   58   300    89    310 3   89   310    152    240 4   152   240 5  205  74 というようになってほしいのです。 オートフィルターの範囲指定を用いると、C行に範囲内の値を引っ張ってくる事は出来たのですが、関数ではない為、他の表に応用が効かず、毎回フィルターをかけなくてはいけなかったです…そのため出来れば関数を使いたいのですが、何か方法は無いものでしょうか…

専門家に質問してみよう