• ベストアンサー

Excelの関数で、セルの位置情報を出したい

VLOOKUP HLOOKUPなどで数値を検索して出したあと、 その数値がどのセルに入っているか表示させる関数は組み立てられるでしょうか? 検索範囲内の端から、1、2。。。って表示されるタイプではなく、 A10とかC5とかで出したいです。 さらに、位置を出したセルから、ひとつ下へ下がったセルの数値を参照したい、ということは出来ませんか? VBAは全く分かりません。 関数で出来ないなら諦めます。。。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

VLOOKUPの例で端から1,2はINDEX関数で出来るのはわかりますよね。 アドレスにする場合は 範囲がA1:A100の場合 =ADDRESS(INDEX(A1:A100,MATCH(検索値,A1:A100,0),1),1,4) 範囲がA100:A200の場合 =ADDRESS(INDEX(A100:A200,MATCH(検索値,A100:A200,0),1)+99,1,4) >さらに、位置を出したセルから、ひとつ下へ下がったセルの数値を参照したい、ということは出来ませんか? 単純に+1で出来ます 範囲がA1:A100の場合 =ADDRESS(INDEX(A1:A100,MATCH(検索値,A1:A100,0),1)+1,1,4) 範囲がA100:A200の場合 =ADDRESS(INDEX(A100:A200,MATCH(検索値,A100:A200,0),1)+100,1,4) HLOOKUPの場合は下記の様になります。 範囲がA1:AA1の場合 =ADDRESS(1,INDEX(A1:AA1,MATCH(検索値,A1:AA1,0),1),4) 範囲がAA1:BA1の場合 =ADDRESS(1,INDEX(AA1:BA1,MATCH(検索値,AA1:BA1,0),1)+26,4)

skullfish8
質問者

お礼

仕事で困っていたので、こんなにすぐ回答が集まってとてもうれしかったです。 この回答で試してみて、うまくいかず、少し修正して望み通りの結果になりました。 よって、これをベストアンサーにさせていただきます。 皆様ありがとうございました。

その他の回答 (6)

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

例えばA列からC列にかけてデータが入力されており、E1セルにA列で検索するためのデータを入力し、D1セルには検索した結果でC列のデータをF1セルに表示させるとしたらF1セルには次の式を入力しますね。 =IF(E1="","",VLOOKUP(E1,A:C,3,FALSE)) そこでF1セルに表示されているセル番地をG1セルに表示させるとしたらG1セルには次の式を入力します。 =IF(E1="","","C"&MATCH(E1,A:A,0)) G1セルの一つ下行のセルの値をH1セルに表示させるとしたらH1セルには次の式を入力します。 =IF(G1="","",INDIRECT(LEFT(G1,1)&MID(G1,2,10)+1))

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

たとえば =VLOOKUP(A1,D1:G5,3,FALSE) といった式があったとすると,キーになるのは  検索値である「A1」  対象範囲の「G1:G5」  その中から実際に取ってきたい「3」列目 の3つの情報です。 この3つを使って式を組んでみると =ADDRESS(MATCH(A1,INDEX(D1:G5,,1),0),COLUMN(D1:G5)-1+3,4) とか =CELL("address",INDEX(D1:G5,MATCH(A1,INDEX(D1:G5,,1),0),3)) =SUBSTITUTE(CELL("address",INDEX(D1:G5,MATCH(A1,INDEX(D1:G5,,1),0),3)),"$","") といった組み立てで,セル番地は計算できます。 しかし >位置を出したセルから、ひとつ下へ下がったセルの数値を参照したい 位置を出す為にわざわざセル番地を求めたいと思ったのなら,そんな事をする必要は全くありません。 たとえば上述式でも縦方向はいずれもMATCH関数で割り出しているので,その+1すれば =INDEX(D1:G5,MATCH(A1,INDEX(D1:G5,,1),0)+1,3) あるいはこの場合はそもそも「具体的に何列のデータが欲しいのか」は最初から判っているのですから =INDEX(F1:F5,MATCH(A1,D1:D5,0)+1) で十分です。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.5

A10とかC5とかで出すのは難しいです。 C列に検索される数値が入っているとして、その数値がどの行に入っているか表示させる関数は、 =MATCH(4,C:C,0) ちなみに、 行は、=ROW(B1) 列は、=COLUMN(B1) で出せます。 位置を出したセルから、ひとつ下へ下がったセルの数値を参照したい場合は、OFFSET関数はいかがでしょう。 位置を出したセルをC1とすると、 =OFFSET(C1,1,0) でひとつ下へ下がったセルの数値を参照できます。

回答No.4

>その数値がどのセルに入っているか表示させる関数は組み立てられるでしょうか? =CELL("address",INDEX(B4:B9,MATCH(C6,A4:A9,0))) =SUBSTITUTE(CELL("address",INDEX(B4:B9,MATCH(C6,A4:A9,0))),"$","") =SUBSTITUTE(CELL("address",INDEX(B4:B9,MATCH(C6,A4:A9,0))),"$","",1) =SUBSTITUTE(CELL("address",INDEX(B4:B9,MATCH(C6,A4:A9,0))),"$","",2) ただ、アドレスを返しても活用方法が考えられません。 >さらに、位置を出したセルから、ひとつ下へ下がったセルの数値を参照したい =INDEX(B4:B9,MATCH(C6,A4:A9,0)+1) とか =INDEX(B5:B10,MATCH(C6,A4:A9,0))

  • m6324m
  • ベストアンサー率34% (26/76)
回答No.3

まず、範囲名を付けます。 ・VLOOKUPで検索する範囲に『データ』 ・VLOOKUPで検索する範囲の一番左上に『sデータ』 VLOOKUPは下記のように、F2の値を範囲データの一番左の列で照合し、3番目の列を持ってくる例です。   =VLOOKUP(F2,データ,3,FALSE) 一例として、この抽出されたセルのAddressを、   =IF(ISERROR(VLOOKUP(F2,データ,3,FALSE)),"",ADDRESS(MATCH(F2,sデータ)+CELL("row",データ)-1,CELL("col",データ)+3-1,4)) のようにして計算式で、セルの位置情報が出ます。 MATCH関数で何行目か検索し、検索範囲の位置を補正して表示しています。

  • oct1290
  • ベストアンサー率35% (75/213)
回答No.1

情報が少なく質問の内容があまり理解できませんが http://ohpa.net/modules/xlnote/content0174.htmlが参考になりますか?

関連するQ&A

  • VLOOKUP関数の範囲をセルで指定したいと思っています。

    VLOOKUP関数の範囲をセルで指定したいと思っています。 B1:参照シート名(VLOOKUP関数で使用する範囲があるシート) C2:範囲の開始位置 E2:範囲の終了位置 B3:G3:列番号(B3の値は、B6:B8の範囲で使用する列番号、 D3の値は、D6:D8の範囲で使用する列番号) これらのセルに入力された情報をもとにB6:G8の範囲にVLOOKUP関数を 反映させたいと思っています。 例えば、 B1に参照シート名「2ケタ」 C2にVLOOKUP関数の範囲の開始位置「A5」 E2にVLOOKUP関数の範囲の終了位置「G7」 B3に範囲の列番号「2」がある場合 B6に「=VLOOKUP(A6,'2ケタ'!A5:G7,2,0)の関数を入力。 B2に参照シート名「3ケタ」 C5にVLOOKUP関数の範囲の開始位置「B5」 E2にVLOOKUP関数の範囲の終了位置「H7」 C3に範囲の列番号「3」がある場合 C6に「=VLOOKUP(A6,'3ケタ'!B5:H7,3,0)の関数を入力。 といった感じです。 現在、B6に「=VLOOKUP($A6,INDIRECT($B$1&"!a5:g7"),INDIRECT("$b$3"),0)」と 関数を入力して、VLOOKUP関数の「範囲の参照シート名」と「列番号」の情報は セルから持ってくることができました。 しかし、「a5:g7」という範囲だけは、INDIRECT関数をうまく入れることができません。 どのように関数を入力したら、上手くいくのか、教えていただけないでしょうか。

  • エクセル関数のセル参照方法

    エクセル関数のセル参照で、あるセルに入力した数値を、参照するセルの行番号として使いたいのですがどうしたらよいのでしょうか? VBAではそのような方法があったと思うのですが、関数で処理する方法はあるのでしょうか? たとえば、 =SUM(C5:C*) のような関数で「*」を他のセルに入力して参照させることは可能でしょうか? よろしくお願いいたします。

  • エクセル関数内で位置としての行列値の扱い方がわからない

    例えば エクセルでA列とB列があり値が入力してあります。 A列の値が最初からだんだん増加し設定値以上になった、そのセルと同行でB列のセルの位置をだし、 B列セルの最初からそのセルまでを範囲で参照して その値群の最小値を求め、値を抜き出したいのです。 そこでA列にMATCH文を使用したらはじめのセルから何番目が設定値以上の値のセルかは出るのですが、その値をどのようにして関数で最初のセルの位置行列値に加えたらいいのかが分かりません。 VLOOKUP関数でもできそうなのですが出てきた値のその下のセルを参照したいのですが、やっぱりセルの位置行列値を下にずらす(例 B10→B11)方法が分かりません。 結局、たぶん関数内部で位置としての行列値の扱い方がわからないのが原因だと思います。 誰か教えていただけないでしょうか。

  • エクセルの関数

    =VLOOKUP(A1,B10:C100,2,FALSE) の関数において条件により参照するセル、セルの範囲を変更したいです。 参照するセル A1 や B10:C100 を変数に置き換えることはできますか? つまり A1を参照する場合やその他のセル(例えばA2)を参照したり B10:C100の範囲を例えばB101:C200に変更させたいです。

  • VBAの関数について

    VBA初心者です。 VLOOKUP関数の使い方がわかりません。 具体的に書かせてもらうと VBAの中にVLOOKUP関数を使いたいです 試験1ファイルのシート"sheet1"にある 検索値を使い 試験2ファイルの指定した検索範囲を 試験1ファイルのシート"sheet1"の指定した位置に数値を挿入することです。 例えばですが(この使い方も間違ってるかもしれません)コードを書いてみると 試験1の検索値はA5セルとします 試験2の検索範囲はB1~C20とします 検索範囲から取得した数値の位置はD5とします VLOOKUPに関してですが 検索値は変数を使い 検索値範囲も変数を使い 列番号はC列がいいので3で 検索方法はFALSEでお願いします sub test() dim a as range dim b as workbooks dim c as range set a = range("B1~C20") set b = workbooks("sheet1") set c = range("A5") workbooks("試験1").worksheets("sheet1").range("D5").value=workbooks("試験2").activesheet."=VLOOKUP(ここがわかりません)".value end sub そもそも変数やsetの使い方が間違ってるかもしれませんm(__)m コードを書いて貰えるととても助かります。 回答お願いします。

  • HLOOKUP関数

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

  • ExcelのVlookup関数で一致した文字のセルの番地を取得する方法

    ExcelのVlookup関数で一致した文字のセルの番地を取得する方法 プログラム(VBA)で、検索で使用する関数でVlookup関数というのがあるというのが最近知ったのですが、Vlookup関数は、検索するセルの範囲を指定して、検索対象の文字列が一致した場合、そのセルの内容(値)を返すという風に書いてあったのですが、値ではなく、そのセルの番地を取得する方法はあるのでしょうか? ありましたら、その方法を詳しく教えてください。Vlookup関数以外でも検索するコードがあるようですが、Vlookup関数に限った場合でよろしくお願いします。 回答よろしくお願いします。

  • VLOOKUP関数、HLOOKUP関数(確認)

    私は、マイクロソフトオフィスエキスパートエクセルの試験に向けて勉強中です。 ひとつ確認です。 VLOOKUP関数、HLOOKUP関数の「関数の引数」→「範囲」とでますよね。 ここで、「範囲」は絶対参照にしないといけないですよね?絶対参照ということがあいまいになっているのですが「固定する」ということですよね。そうしないと、「範囲」がずれていくわけですよね?

  • VLOOKUP関数の選択範囲にセルの値を入れたい

    エクセルのVLOOKUP関数の選択範囲にセルの値を入れることは出来ませんか? やりたい事は(画像参照) 1、現在の時刻に一番近い時間を検索して、現在の色を出す。 =VLOOKUP(現在時刻の入ったセル,B1:C50,1) 2、次に一番近くに来る赤の時間を表示する 1が何行目かを表示して、 =VLOOKUP("赤",A【表示したセル】:B50,2) にしたかったのですが、出来ませんでした。 わかりにくい説明ですが・・・わかる方、よろしくお願いします。 また、他に良い方法があれば教えてください。

  • 関数

    在宅ワーク研修中で、エクセルで表を作成するのですが、C列(上期売上数値)を利用して人数を表示する関数は、COUNT関数と勉強し範囲を入力したのですが、そのまま(C3:C12)と、表示したいセル(C14)に表示されてしまいます。使用する関数が違うのでしょうか?また、もう一つの表に、地域の列に店舗のセルを参照して店舗マスター表から地域を参照して表示する関数はVLOOKUP関数と勉強したのですが入力の仕方が解りません、、。参考になるサイトはありませんか? 商品名、単価、原価の列にも商品IDを参照して商品マスター表からそれぞれの商品名、単価、原価を参照して表示する関数もVLOOKUP関数ですか?入力の仕方が参考になるサイトがあれば教えて下さい。m(_ _)m

専門家に質問してみよう