• 締切済み

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を取得したいのですが・・・

  • 0119
  • お礼率16% (5/30)

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

3日考えてやっと出来ました。エクセルの関数を使う方法で、他よりスッキリしていると思います。 テストデータとして,値と列はどこでも良いですが、私が勝手に決めて作ります。 B1に2、B2に3、B3に4、b4に45、B5に6、B6に78をいれて実例とします。 A6に2002/3/3をいれます。A1からA5には日付が入りますが略します。(本番では下記(1)、(2)は要りません。(3)に至るプロセスを分解して説明するためいれています。) (1)B8セルに=MAX(B1:B6)といれます。B1からB6の値の最大値を求めます。この場合78です。 (2)B9セルに=MATCH(MAX(B1:B6)、B1:B6)といれます。 最大値78は、B1からB6までで、B1から何番目に有るかを求めます。この場合6番目です。またB1からの隔たりは5(5=6-1)です。 (3)B10セルに=OFFSET(B1,MATCH(MAX(B1:B6),B1:B6)-1、-1)といれます。OFFSETはこの場合B1を基点として、下へ5行、-1は左へ1列、隔たったセルを指しますので、最大値のすぐ左の列のデータの2002/3/3を取ってきて、2002/3/3がセットされます。A列の書式は日付にしておくこと。 最大値と同じ値が2個以上あると上記では対応出来ていません

  • kbonb
  • ベストアンサー率51% (254/492)
回答No.5

こんにちは  ひょっとしたら、以下のページがご参考になるのでは? 【エクセル技道場】-編集-連続データの作成(時刻) http://www2.odn.ne.jp/excel/waza/edit.html#SEC12

参考URL:
http://www2.odn.ne.jp/excel/waza/edit.html#SEC12
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

>行が増えるとうまく値を取れません。 下の算式で質問のデータに5、6、7行目・・・とデータが増えても大丈夫ですが・・・ 質問の意味はこのようなことでしょうか(式に行の要素を入れていません) ただし、B列に最大値が複数あると、一番行番号の小さい行になります。  =INDEX(A:A,MATCH(MAX(B:B),B:B,0))

0119
質問者

補足

ありがとうございます。どうも行が100行くらいになると lookupを使っても一番下の行の値をとってきます。

  • psss
  • ベストアンサー率28% (59/209)
回答No.3

 No.1の方の補足になりますが、VLOOKUPをHELPでよく読んでください。 キーになる値の右側のセルの値しか返せない仕様になっています。  右側でさえあれば、離れててもOKなんですが。 また、キーになる値の入っているセルはソートされていないと正常な値が返ってこない場合があります。  いろいろと組み合わせたり、マクロを組まないと、VLOOKUP関数単体では不可能です。

回答No.2

もし、B列の最大値が複数あった場合はどうするのでしょう? たとえば上の例だと 5 8:40 500 なんて行があった場合ですが… 行が増えたことで、最大値が重複してしまった場合は きっとうまく動きませんよね。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 VLOOKUP関数を使用すると出来ますが。 まず、A列とB列を入れ替えます。(一番左の列が検索対象のため。) そして =VLOOKUP(MAX(A1:B4), A1:B4, 2) これで取得出来ます。 もちろん、この式を記入するセルの書式設定を[時刻]にしないと、"8:10"とは表示されませんが。 範囲指定が相対参照なので、行を挿入しても範囲が自動的に"A1:B5"になるはずです。 では。

0119
質問者

補足

ありがとうございます。確かに行を入換えてvlookup関数を使うと 行が増えてもうまくいきましたが出来ればそれ以外の方法でないですか? 行を入換えないといけないのが・・・

関連するQ&A

  • Excelの関数で

    お願いします。 Index関数とMatch関数を使用して表の中の値を求めようとしましたが、 検索行が複数あるため、うまくいきません。 検索する列は1列(a,b,c)ですが、検索行(あ、い、う~)が複数になっています。 更に空白もあります。 こんな感じ↓です。 ---------------------   あ  い   う   え      お   か ---------------------    a  10  20  30 b  40  50  60 c  70  80  90 --------------------- こういった場合にはどんな関数を使って一致する値を求めたら良いのでしょうか? 大変困っております。よろしくお願いします。

  • EXCELの関数探してます、lookupのような

    A列に1,10,20,30とありB列に200,300,400,500とある場合を想定します LOOKUP関数を使い、1のときは200、10の時300,20の時400のように値を出したいとします。つまり横の値。 LOOKUP関数を使うと2,3,4,5,6,7,8や11,12,13~19などの検査値で不完全一致の場合の値を出すとき、 2,3,4,5,6,7,8のときは1の値の200がでて、11,12,13~19の時は10の値の300が出ますよね ようはその値より上の値の数字をだしてくれるんです。14なら300,26なら400,39なら500のように 質問は下の値を出してくれるLOOKUPのようなものはありませんか?14なら400,26なら500のような

  • エクセルについて質問

    =LOOKUP("3",A:A,B:B) A列にある『3』を検索し 『3』の行にあるB列の値を返すという式ですが 『3』が存在しなかった場合は『-』という記号をいれたいんです ちなみにA列には1から200までの数字が昇順で並んでおり、 所々数字が抜けている箇所があります A列   B列  1     10/02/20    2     08/05/07 4     86/09/22   5     02/12/15 6     98/06/02 8     05/07/10 ・ ・ こんな感じです この場合 3が存在しないので『-』と返すようにたいです B列は年代で 1行目で言うと2010年2月20日のことです

  • エクセルVBA MATCHをユーザー定義関数で使う

    ユーザー定義関数の質問です。 ある値をB列で探し、見つけたセルの行番号を取得したいのですが分かりません。 条件が一つあってそれはAの値が10以下のものは検索から除外するということです。 例 A  B 6  50 5  45 7  2 12 45 11 9 例えばBが45かつAの値が10以上であるセルの行番号はこの例だと4になります。 ワークシート関数を使うと{=MATCH(45,(A1:A5>=10)*(B1:B5),0)}でできました。しかしユーザー定義関数で.Match(45, Worksheets("Sheet1").Range("A1:A5>=10") * Worksheets("Sheet1").Range("B1:B5"), 0)とやっても#VALUE!となってしまいました。何がおかしいのでしょうか。

  • エクセルで最大値を求める

    B列の最大値を求めたいのですが、条件が一つあります。 A列の値が10以下の場合はカウントしないようにしたいのです。 例 A  B 6  20 6  58 12 6 11 3 1  100 この場合求めたい最大値は6になります。 これを既存の関数かユーザー定義関数でやりたいのですが、やり方を教えてください。

  • 【エクセル】 行番号を変数とする方法について

    下表のようなデータがあったとします。 A B C D 1 2 TEST 3 4 5 合計 100 6 <目的>ある文字列が含まれる行番号以下の範囲を指定して、VLOOKUP関数を使用。       ある文字列が含まれるセル行番号は、毎回異なる。 <具体例> 1) MATCH関数で、「TEST」という文字が含まれる行番号を取得     この場合「2」 2) VLOOKUP関数で VLOOKUP("合計",A2:D5,2false) というように   MATCH関数で得た行番号を他の関数に組み込みたいです。     どなたか、良い方法を教えて頂けないでしょうか? よろしくお願い致します。

  • エクセルで別シートの値を取得したいです。

    エクセルで質問があります。 別シートからセル値を取得したいです。 ただ、セル番地は行番号、列番号で指定し、 行、列番号はセルに入力してある値を使いたいです。 例 Aシート(値格納シート) B1セル値=1000 -------------- Bシート(値取得シート) A列=行番号入力 B列=列番号入力 C列=Aシートの取得関数 A2セル値=1 B2セル値=2 C2セル=1000(取得値) C2セルの関数に、A2とB2の値を使って Aシートのセル値を取得したいです。 よろしくお願いします。

  • エクセルの関数について教えていただけたらうれしいです。

    エクセルの関数について教えていただけたらうれしいです。 例> A B C 01 70 1 01 20 01 10 02 20 02 50 1 02 30 03 80 1 03 20 04 60 1 04 20 04 20 上記のように、A列内に同じ文字(数字など)がある場合、それぞれのB列にある値の最大値がある、C列へ「1」などのフラグが立つような関数はどうしたらよいのでしょう? 説明が下手ですみません。 A列の「01」が3つあるうち、B列の「70」が最大値なので、C列に「1」が付く。 A列の「02」が3つあるうち、B列の「50」が最大値なので、C列に「1」が付く。 A列の「03」が2つあるうち、B列の「80」が最大値なので、C列に「1」が付く。 A列の「04」が3つあるうち、B列の「60」が最大値なので、C列に「1」が付く。 このようになるようにC列に入れる関数が知りたいです。 よろしくお願いいたします。

  • Excel 順不同数値の検索

    | A | B |   100 115   110   120   130   120   110   120 このように数値が順不同で並んでいるA列を上から検索して、 B1の値と同じ値かそれ以上になる行番号(かその値)をB2に表示させるには どのようにすればよろしいでしょうか。 (上記の場合ですと、3行目の120の値をB2に表示させたい。) 出来ればVBAは使わず関数だけで実現したいと考えています。 VLOCKUP、MATCH等々、検索関数を調べましたが出来そうで出来ません。 ご教示頂けますでしょうか。

  • Excelの関数で複数の行・列範囲を検索する方法

    Excelの関数について質問です。ある値が何行目の何列目にあるかはCtrl+Fを使えばすぐに解りますが、このようなことを関数で実行することはできますか? 例えば、Sheet1のA1からZ40まで重複のない値が入っていたとして、別のシートでA1~A10に探したい10種類の値を入力すれば、その10個の値がSheet1の何行目の何列目にあるかをB列で表示できるといった、そういうことができる関数はありますでしょうか? MATCHでは一度に複数の行や列を検索できないようなので困っています。 よろしくお願いします。

専門家に質問してみよう