• ベストアンサー

関数の意味(HLOOKUPとROW関数)

先週より新しい職場で働いております。 下記のような関数が使われている表があるのですが、どういう意味になるのでしょうか。 =HLOOKUP(A1,$1:$30,ROW()-8,FALSE) この関数は実際の関数ではありません。 確かこんな関数だったなあと思い出しながら書いているので、もしかしたら変かもしれません。 ポイントは、 範囲=セル番地指定ではない(行範囲指定?) 行番号=数値ではなくROW関数で指定 になっているところです。 お手数をおかけしますが、宜しくお願いいたします。

  • hy0423
  • お礼率88% (198/225)

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! まず HLOOKUP関数の意味ですが HLOOKUP(検索値,範囲,行番号,検索の型) というコトになりますので、 お示しの数式だと 検索値=A1 範囲 =$1:$30(列番号がなく、1~30行の範囲) 行番号=ROW()-8 ← 範囲指定した1行目が検索値ですので、2以上の行番号を返すのが普通 すなわち10行目以降のみ有効な数式というコトになります。 おそらくオートフィルで下へコピーするためだと思われます。 検索の型=そのままFALSE型 というコトになります。 ↓の画像の場合、B10セルに =HLOOKUP(A10,D$1:G$5,ROW()-8,0) という数式を入れオートフィルで下へコピーしています。 ※ 範囲指定が5行分だけしかしていませんのでオートフィルをした場合 4行分だけ有効データがかえってきます。 お示しの数式の場合は10行目に数式を入れ 29行分はオートフィルしても有効データが返る(範囲指定内)というコトです。 ※ 通常数式内に ROWもしくはCOLUMNを使用する場合オートフィルコトが多いと思います。 こんなんで参考になりますかね?m(_ _)m

hy0423
質問者

お礼

tom04さん、ありがとうございます。 画像までつけて説明してくださり、大変わかりやすかったです。 オートフィルで下までコピーしたい場合にrowなどは使うことがあるのですね。 勉強になりました。 ありがとうございます。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

記憶で書いている数式ということで、その式はそのままでは意味のない数式ですが、とりあえずそれは置いておいて。 >質問1 1行目から30行目までの範囲の全部のセルを対象に計算します。全く問題ありません。 例: =MAX(A:A)  ’A列の全部のセルの中の最大値 =MIN(1:2)  ’1行目と2行目の全部の中の最小値 >質問2 まずHLOOKUP関数について。 HLOOKUP関数は対象範囲の先頭行で、検索値を探します。 いまは1行目から30行目までを対象にしているので、1行目が検索値を探す範囲です。 そこで一致するセルを見つけたら、そのセルから下がって「指定行数目」のセルを取ってきます。 数式では、ROW()-8の部分です。 次にROW()関数について。 その形式では、ROW()関数は数式が置かれているセルの行番号を計算する関数です。 仮にHLOOKUP関数(の中のROW()関数)が10行目のセルに書いてあれば10、20行目にあれば20になります。 ポイントは、そのHLOOKUP関数の式を「下向けにコピーする」と、ROW()-8の部分の結果が順繰り1ずつ増えていきます。 10行目に最初の数式があれば「ROW()-8」は2になります 11行目にその数式があれば「ROW()-8」は3になります 12行目に数式があれば「ROW()-8」は4になります HLOOKUP関数でヒットしたセルの、縦ヒトカタマリをまとめて持ってきたいといった時に、そういう使い方をよくします。

hy0423
質問者

お礼

keithinさん、ありがとうございます。 ちゃんとした式でなくてすみません。 しかし、よくわかりました。 ありがとうございます。

  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.1

>範囲=セル番地指定ではない(行範囲指定?) その行の左端から右端まで、すべてを指定していることになります。 >行番号=数値ではなくROW関数で指定 ROW()は、現在の(その式が書かれている)セルがある行番号を返す関数です。ROW()-8なので、現在の行より8行上の行になります。 したがって、関数全体は  第1行の左端から右端まで検索してA1と同じ値を探し、  それと同じ列にあって、現在の行より8行上の行のデータを得る という意味になります。

hy0423
質問者

お礼

foomufoomuさん、ありがとうございます。 Row関数がよくわからなかったのです。 自分でも調べてみたのですが、本当にそれで合っているのか疑問でした。 教えていただき、大変助かりました。

関連するQ&A

  • HLOOKUP関数

    HLOOKUP関数?だけでは無いことなのかも知れませんが、HLOOKUP関数にて処理したい物があるので今回はHLOOKUP関数というタイトルで質問しているのですが? HLOOKUP(検索条件,デ-タ-表の範囲,行目,検索方法)の所の検索条件の該当セルは、他の関数で求めた結果の数値では、HLOOKUP関数に使用することは出来ないのでしょうか? そういう事もありえるので、貼り付ける時に形式を選択し、値にて貼り付け同様作業しているのですが?上手くいきません。 例えば、ある関数にて求めた数値が12だったとすると、このセルでは出来ない、このセルをコピ-後値で貼り付けても不可! しかし、他のセルに12と直接手動にて入れたセルを利用すると上手くいきます? どの様な間違いがあるのでしょうか?それとも不可能な事なのでしょうか?(因みに検索条件の当該セルの左上に緑マ-ク付いています) どなたかアドバイスお願いいたします。

  • =MOD(ROW(),2)=0が一行置きになる意味

    初歩的な質問ですみません。 =MOD(ROW(),2)=0 について教えてください。 MODはあまりを返す関数、ROWが行を示す関数ということはわかるのですが、どうしてこの「=MOD(ROW(),2)=0」という数式が「一行置きに」を表すようになるのでしょうか? 「ROWの()で指定した範囲の行番号を2で割ったときの余りが0」ということだと思うのですが、これは「余りが0=偶数」だから「偶数行を指定する=一行置き」という理解であっていますか? また、( )の中を「,」で区切るのはどういう意味を持ちますか? 関数によって違うとも思いますが、「,」の前と後で、「前の数値に(を)後の数値を(で)」というかんじでしょうか?「IF」関数の場合「,」がいくつも続く時はどういう意味になりますか?

  • ROW関数について

    先日質問をしたのですが、理解が足りないようなので質問させて頂きます。 ROW関数はセルを入力したそのセルの行番号を返すものだと思うのですが、例えば =INDEX(シート1!C2:シート1!HR2,(ROW()-3)*3+1,) このような数式をワークシート2のD3のセルに入れると、ROW()は3と解釈されるので、 ・範囲はData!のワークシートのC2からHR2まで、 ・(3-3)*1+1となるので、その範囲内の1番であるData!D2セルを参照するのだと思うのですが、何か間違っているでしょうか? この際に、ROW()に参照されるセルは、もしかしてシート1のものなのでしょうか? 宜しくお願いしますm(_ _)m

  • HLOOKUP関数とINDIRECT関数の組み合わせについて困っていま

    HLOOKUP関数とINDIRECT関数の組み合わせについて困っています。 「=HLOOKUP($A$3,[計画.xls]日付合計!$B$3:$AI$18,12,FALSE)」 上の数式だと正常に結果が得られます。 HLOOKUP関数の範囲を「計画」ファイルの「日別合計」シートのB3:AI18に 設定しています。 このHLOOKUP関数の範囲をINDIRECT関数を用いて設定したいと思っています。 ※原紙シートのF25のセルに「計画」とL25のセルに「日付合計」と入力されています。 そこで次のように入力しましたが、うまく表示されません。 「=HLOOKUP($A$3,"["&INDIRECT("原紙!F25")&".xls]"&原紙!L25&"!"&$B$3:$AI$18,12,FALSE)」 どこが誤っているか、教えていただけないでしょうか。

  • セルの結合がされた表をHLOOKUPで検索する場合について

    Excel初心者です。質問があります。 下記のような表があります       A列   B列   C列   D列 行番号1    12/1       1/1 行番号2  件数   金額  件数   金額    行番号3   2    100   3    200 行番号5   1/1 ここでHlookupを使って下記のように検索します A5に1/1と入力して 件数を検索するには   =HLOOKUP(A5,A1:D3,3) → 3 ここまではいいのですが 金額の「200」を検索するにはどのような関数を使えばよいのでしょうか? ※行番号1の「12/1」と「1/1」はセルの結合をしており 「12/1」のセルはA1、「1/1」のセルはC1になっています。 HLOOKUP関数とVLOOKUP関数又はCOLUMN関数を組み合わせれば出来るのでしょうか よろしくお願いします。

  • エクセルでHLOOKUP関数の選択範囲について

    エクセルでHLOOKUP関数を使って、検索したいのですが、 シートは、一覧表のシートと データが入っているA101、B203、C305、...シートは300シートくらいあります。 一覧表のシートには、下のような表になっていて、      A列  B列  C列  D列 ...          1003、1004、1005、1006、... 2行目 A101  3行目 B203 4行目 C305       .       .       . データのはいっているシート、A101は下の表になっています。      B列 C列 D列、・・・、Z列 2行目 1004、1005、1006、... 3行目 100、 200、 150、... 一覧表のB列の2行目には HLOOKUP(B2、シートA2のB2:Z3、2行目、FALSE) という感じで、シート名をセルA2のものを参照にして 探して表示させ、B列、C列、D列の2行目から下の行も 表示させたいのですが、うめくできませんでした。 INDIRECT関数を使ってみましたが、セル範囲が無効という エラーがでてしまいます。↓こんな感じで入力してみたのですが... SUMPRODUCT((INDIRECT($A2&"!$B$2:$Z$3"))=$B$1,(INDIRECT($A2&"!$B$2:$Z$3"))) 1つづつデータを見て手打ちはデータが多く、 どんどんデータが増えていくので できれば関数を使って表示させたいと思っています。 詳しい方いらっしゃいましたら、どうか教えてください よろしくお願いします。

  • Excel2010でのHLOOKUP関数

    Excel2010で列(縦方向)に1組のデータ(200個程度)を入れ、現在140組のデータが入っています。別シートに票を作成し、票内の各セルにHLOOKUP関数を入れ、この140列×200行のデータベースから、指定した列(検索値)のそれぞれの行からデータを抽出し表示するようにしています。 これまでは、検索値を入力すると、該当する列内の値を票内に反映していてくれていたのですが、この度新たな列を増やしたところ、その列の値を表示してくれません。関数内のデータの範囲はその列以上に広く指定しています。わかりにくい説明で申し訳ないのですが、考えられる原因はありますか。よろしくお願いします。

  • ROW関数について

    セルA5を番号1にして順番に番号振っていっています。 =ROW()-4をA5に入力しています。 行を追加した際に追加したセルより下のせるには連番が崩れず入っているのですが、 行を追加したセルには何も入っていない状態です。 行を追加と同時にそのセルに連番を追加することは可能でしょうか?

  • HLOOKUP関数ではうまくいいきません

    下記のような表があります 1日後│2日後│3日後│4日後│5日後│6日後│7日後│8日後│  +25│ -48│ -44│ +30│ -88│ -82│ -44│ -32│  -73│ -69│ -82│ +50│ -17│ -69│ -28│ -64│  -59│ -72│ -13│ -97│ -59│ -18│ -54│ -97│ 左に新たに列を挿入してそこに以下の条件の関数を入れようとしています。 ・20以上のセルのラベル(○日後)を表示する ・複数ある場合もああるので一番左側のセルのラベルを表示する 列方向への検索なのでHLOOKUPを使おうとしたのですが 最初の検索値には不等号が使えないようでした。 どうかご教授お願いしますm(__)m

  • HLOOKUPで

    HLOOKUPを使いたいのですが、 =HLOOKUP($B$2,$D$4:$P$1000,2) このようになっているときに、下方向へコピーして使用したいのですが、行番号の指定を自動で行うことは出来ませんか? =HLOOKUP($B$2,$D$4:$P$1000,2) =HLOOKUP($B$2,$D$4:$P$1000,3) =HLOOKUP($B$2,$D$4:$P$1000,4) というふうに・・・ よろしくお願いします。

専門家に質問してみよう