プロが教えるわが家の防犯対策術!

シートが複数在り、(当たり前ですが)それぞれシート名称が違います。
ただ、最新のシートは2枚目にあります。
このシートを参照するには、sheet名!C12のようにしますが、
シート名称がころころ変わる(どんどん追加される)ので、
シート名称を使うのは面倒です。

そこで、
sheet(2)!C12のような使い方は出来ないでしょうか。

宜しくお願いします。

A 回答 (2件)

ちょっとエクセルが使えるようになった頃に一度は思いつくアイデアですが、残念ながらシートを相対的に指定して参照する方法はありません。



参考:よく見かけるご相談
「隣のシート」の指定セルの値を参照したい
「何枚目のシート」を指定して計算したい


状況に依っては全く別のアプローチで解決できる場合もあります(たとえば「先月」のシートの残高を「今月」のシートで参照したい)が、今回は何の縛りもなく「ただ2枚目」としかという事なので、マクロまたは古いマクロである4.0マクロを使って実現する方法になります。で、折角マクロを使うならもうちょっと機能を持たせてみます。



手順:
ブックを用意する
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

public function GetSheet2(byval target as excel.range) as excel.range
 application.volatile
 set getsheet2 = worksheets(2).range(target.address)
end function

ファイルメニューから終了してエクセルに戻る


使い方その1:
任意のシートに
=GetSheet2(C12)
と記入すると、2枚目のシートのC12セルの値を参照する


使い方その2:
任意のシートに例えば
=SUM(GetSheet2(B2:B30))
などのようにすると、2枚目のシートの指定セル範囲(B2:B30)を対象に組み合わせた関数で計算する
    • good
    • 0
この回答へのお礼

何時も本当に、かつ的確に、有り難うございます。

>ちょっとエクセルが使えるようになった頃に一度は思いつくアイデアですが
まさにそのとおりです。
何処を探しても出ていませんでした。

>何の縛りもなく「ただ2枚目」としかという
はい、1枚目に総括表があり、2枚目以降に新しい、かつ何の関係もないシートが追加されていきます。
総括表から最新のページのある項目を参照する。という課題です。

前置きが長くなりましたが、
教えの通り動かしましたら、完璧に出来ました。
何時も感心に堪えません。
有り難うございました。

取り敢えず出来ただけなので、また勉強してみます。
何時も何時も有り難うございます。

お礼日時:2013/12/14 06:50

こんばんは!



VBAになってしまいますが・・・
仮にA1セルにお示しのようなSheet2のC12セルを返すとします。

画面左下の表示したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓の3行をコピー&ペーストしてみてください。

Private Sub Worksheet_Activate()
Range("A1") = Worksheets(2).Range("C12")
End Sub

これでSheetがアクティブになればSheet見出しの左から2番目のSheetのC12セルがA1セルに表示されます。

※ お望みの方法でなかったらごめんなさいね。m(_ _)m
    • good
    • 0
この回答へのお礼

早速有り難うございます。
申し訳在りません、VBAならナンとかこなせます。
今回はexcelベース(関数ベース)で解決したかったので。
お手間をお掛けしました。

お礼日時:2013/12/14 06:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A