• ベストアンサー

Excel ワークシート関数で参照セルのアドレスを固定値ではなく動的に記述したい

皆様こんにちは。 Excel ワークシート関数で参照セルのアドレスを固定値ではなく、他のセルの値 (式の計算結果) を使用して動的に記述したいのですが、可能でしょうか。 一例ですが、 =VLOOKUP("山田 花子",Sheet2!A2:C100,3,FALSE) という式の参照先アドレス範囲開始行「2」を固定値ではなく、他のセルの値を使用して動的に記述したいのです。 また、参照先の終端である、「100」についても固定値ではなく、有効データ領域の終端を動的に取得する方法 (VBA の Worksheet.UsedRange.Rows.Count または Worksheet.UsedRange.Rows.Address に相当) が知りたいと思います。 どちらも、計算式そのものをVBAで動的に出力するのは容易なのですが、出力されたブックを手作業で編集する際の利便性も考慮すると、ワークシート関数だけで解決する方法も知っておいたほうがよいと思っています。 ご存知の方、コメントを頂けると幸いです。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

A列の入力済みの最下行が文字列の場合 =MATCH("",A:A,-1) 最下行が数値の場合 =MATCH(MAX(A:A)+1,A:A,1) で、最終行が取得できます。 取得された数値を、関数でセル範囲の指定に使うためにはINDIRECT関数を用います。 今夜は今から飲み会なのであとはINDIRECT関数を検索してみてください。 成功を祈ります。では。 (*^∇^)ノロ"ロヾ('∇'*) Cheers!!

luan78zao
質問者

お礼

手掛かりが得られたので、後は何とかなりそうです。 ありがとうございました。

その他の回答 (1)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 仮にSheet2のリストは1行目から定義、A1に開始行値としています。 =VLOOKUP("山田 花子",INDIRECT("Sheet2!A"&A1&":C"&COUNTA(Sheet2!A:A)),3,FALSE)

luan78zao
質問者

お礼

式が複雑化すると、可読性が下がるのが泣き所ですが、目的のものを作り込むのは何とかなりそうです。 ありがとうございました。

関連するQ&A

  • エクセルで、ワークシート名をセルから参照する

    エクセルで、ワークシート名をセルに表示する方法は書いてありますが、セルの値をワークシート名とするにはどうしたらいいでしょうか。 つまり、 「ワークシート名 → セル」 ではなく、 「セルの値 → ワークシート名」 ということです。 現状、会社が変わると決算期が変わるため、決算期を変更する度にワークシート名を変えていますが、変わった都度ワークシート名を手で変更するのは手間が掛っています。 具体的には、例えば、 3月決算の会社のファイルは、4月シート、5月シート・・・ 12月決算の会社は、1月シート、2月シート・・・ のようにシート名を変えています。 そのため、セルに決算期を入力すると、自動で各ワークシート名も変更するようにしたいのですが、どうしたらいいでしょうか。 そういう関数はないようですし、マクロ・VBAの本等を見ても、よくわかりません。 宜しくお願い致します。

  • Excelのシート参照をするにあたって

    あるセルに他のシートを参照して集計する関数を記述しているのですが 参照先のシートが一度消去されてしまうと参照もとのセルに記述した 参照先シート名が自動的に#REFになってしまいます。 (例:「=Sheet1!A2」と記述していて「Sheet1」を削除すると「=#REF!A2」になってしまう) この現象はどうにか防げないものでしょうか? よろしくお願いします。

  • EXCEL2007 VBA アクティブでないワークシートの名前を取得したい

    Sheet1とSheet2の【A1セル】【B1セル】には以下の処理が入っています。また2つのシートにはVBAを使って、再計算がされるたびに自身のシート名を表示するメッセージボックスを出力する処理を記述しています。 【A1セル】  リアルタイムで値が送られてくる。 【B1セル】  A1セルの値を使った式 【VBA】  Private Sub Worksheet_Calculate()   MsgBox **************  End Sub ここからが質問なんですが、Sheet3をアクティブシートにしている場合、VBAの「*****」の部分に何と記述すれば、再計算されたシート名を取得できますか?

  • 「ワークシート関数」

    良くわからないのですが エクセルのワークシートで使う関数を「ワークシート関数」と言い、 VBAで使うワークシート関数を「WorksheetFunction関数」と言うのですか?

  • ワークシート関数とはどのことなのですか?

    【1】エクセルのワークシート上で使う=TODAY()などの関数 【2】VBAのCountなどのWorksheetFunction 【3】VBAのLENなどの関数 どれのことを俗に言う「ワークシート関数」と言うのでしょうか? VBAで使う【2】【3】のことですか?

  • エクセルVBAでワークシート関数のようにしたい

     例えば、セルA1に日付を入力して、セルB1に関数WEEKDAYが入力されていると、すぐセルA1の値を返してくれますが、これと同じことをVBAで再現したいのですが、可能でしょうか?  マクロやVBAでWEEKDAYを記述しても、「ツール」→「マクロ」→「マクロ」か「VBA」でやらないとA1の値をB1に返せないので、A1に日付を入力した瞬間、B1に値を返したいのですが、よろしくお願いします。

  • Excel 別シートのセル参照

    Excel で、二つのシート間でセル参照したいのですが、シートに書き込んでおくコマンドの書き方を教えてください。 (操作) Sheet2 でA列のどこかのセルをダブルクリックしたとき、B列およびC列の該当行の値を、Sheet1 の二つの固定セルにそれぞれ表示させる。 よろしくお願いします。

  • 【エクセル関数】参照するセル

    エクセル関数で教えていただきたいです。 セル参照で、参照するセルを、ある法則道理に参照していきたいのです。 例えば、シートA,シートB、とあったときに、 シートBのC3に → シートAのC3を参照、 シートBのC6に → シートAのC4を参照、 シートBのC9に → シートAのC5を参照、 シートBのC12に → シートAのC6を参照・・・・ ・・・・・・・・・・・ という風に、参照元の列は1行づつ増やしていきたいのですが、 それをシートBでは、3行ごとに表示したいのです。 自分でいろいろ試してみましたが、うまくできません。 こういったことは、関数でできるのでしょうか? もし、あれば、教えていただけると助かります。 よろしくお願いします。

  • エクセルVBAで関数が入った空白セルの取得

    エクセルVBAで下記のようなセルの参照をしたいのですが、よろしくお願いします。(エクセル2002です)   A  B  C  D  E  F 1 78 80 セル(A1)(B1)には値も関数も入れられています。 セル(C1)(D1)(E1)には値は入っていませんが、ワークシート関数が組み込まれており空白となっています。(関数の""にて空白) セル(F1)には何も入力されていません。 今回はセル(B1)の80の値を取得できるようにVBAで下記のようにコードを組みました。 Range("F1").End(elToLeft).Activate そうすると、セル(E1)に関数があるために(?)(E1)がアクティブな状態となります。 関数が入力されていても空白として(B1)をアクティブな状態にするために良い方法はありますでしょうか? 誠に申し訳ございませんが、よろしくお願いします。

  • エクセルのセル参照について

    エクセル2007でワークシートAのセル参照をワークシートBのセル(20カ所位)で設定しています。このワークシートBのセル参照のワークシート名をAから新たに作成するワークシートCに効率良く変更する方法はありますか?

専門家に質問してみよう