とっておきの「まかない飯」を教えて下さい!

VBAを用いずに、ワークシート関数のみでワークシート名を取得できないか探しています。

自分のシート名は、以下の出力結果の一部より取得することができました。
=CELL("filename")

しかし、他のシート名を取得する方法が思いもつきません。

VBAを用いずにシート名を取得することはできないのでしょうか?

A 回答 (5件)

Excel2000でしたら、


1.[挿入]-[名前]-[定義] から、名前を2つ定義します。
  ・名前:PPP  参照範囲:=GET.WORKBOOK(1)
  ・名前:QQQ  参照範囲:=GET.DOCUMENT(88)
2.A1 に =SUBSTITUTE(INDEX(PPP,ROW()),"["&QQQ&"]","") と入力します。
3.A1 を下方にドラッグコピーすると、シート名が一覧で表示されます。

例えば3枚目のシート名のみを取得する場合は、任意のセルに
=SUBSTITUTE(INDEX(PPP,3),"["&QQQ&"]","") と入力します。

※マクロ関数というものですが、最近のバージョンにこれが付帯されているのかどうか
  わかりませんが。   ^_^;

この回答への補足

回答ありがとうございます。

まさに、これです!

マクロを使っているのに、セキュリティ警告もでませんし、レベル高でも普通に使えるので素敵です。

ただ、ヘルプに載ってないのは・・・。
マクロ関数に関する良い資料などご存知でしたら教えていただけませんか?

補足日時:2006/06/15 01:10
    • good
    • 5

#4です。



次のサイトなどには
 「Excel 4.0 マクロ がいつまでサポートされるかわからず、いつ利用できなくなっても
  おかしくないものなので、これをわざわざ勉強する価値はあまりない。」
のように書かれています。
使ってみると、とても便利なものなのですが......。
http://www.relief.jp/itnote/archives/001368.php

Excel 4.0 マクロ のヘルプファイルは次からダウンロードできますが、英語です。
http://www.microsoft.com/downloads/details.aspx? …
インストールすると、Office以下のフォルダ内に Xlmacro.chm というファイルが書き込ま
れますので、検索してください。

Office97には、前のバージョンのマクロ関数の日本語ヘルプ(Xlmacr8.hlp)が付いていま
したが、2000以降には付いてないようですね。
Xlmacro.chm というファイルは Excel2000にも元々あるのですが、これには「マクロ関数
のヘルプファイルがインストールされていない」とだけ書いてあります。

この回答への補足

その後、Office2003で試しました。

その結果、動きはしましたが、マクロの警告が出てしまいました。
(2000では、出なかったのですが・・・。)

結局、VBAであろうと、マクロ関数であろうとセキュリティ警告が出てしまったので、
場合によってVBAとマクロ関数の使いやすい方でやらせていただきます。

ありがとうございました。

補足日時:2006/06/22 02:00
    • good
    • 0
この回答へのお礼

そういうことだったんですか・・・。
私も、2000なのですが、新しいヴァージョンのものは怪しげですねぇ。

とりあえず、2003で動くことを確認して、問題があるようだったら度合いによって、この機能を使うか使わないか判断させていただこうと思います。

いろいろ、ありがとうございました。

お礼日時:2006/06/16 01:36

シートを指定するのに


Activeシート
Index
名前
の方法があると思うが、名前は、名前がわからないので問題にするので自己矛盾。
Activeシートに当たるのがCELL関数。
シートのIndex番号を指定する関数も無いと思う。
なぜVBAにこだわるのといいたい。関数だって普通は内部で何をしているか知っている人は無い(MSから公表されていない)わけで、よっぽど難しいVBAは別として、下記ユーザー関数で1行で表せるし、中身も
判りやすい。
CELL関数も、関数のなかで異色の、互換性のためのもの。
標準モジュールに下記を貼り付け
Function fn(n)
fn = Sheets(n).Name
End Function
nはシートタブの左からの順番の数字を入れる。
シートでは
=fn(4)
のように入れる。

この回答への補足

回答ありがとうございます。

VBAのSheetsコレクションは知っていて、これで実現できるのも知っているのですが。

> なぜVBAにこだわるのといいたい。
・セキュリティ警告を嫌う風潮があるので、できる限り避けたい。
・セキュリティレベルを高にしている人がいるので、VBAを禁止にしていることに気づかず問題になる可能性がある。
 (最近のは、デフォルトはレベル高ですし・・・。)

という2点です。


教えていただいた、VBAを利用させて頂きます。

補足日時:2006/06/15 00:55
    • good
    • 0

すいません、他のワークシート名ですか。


単にセルに表示させたいだけなら
=CELL("filename",Sheet2!A1)
とか…
シート名を取得する目的は何でしょうか?

この回答への補足

あ、既に返答が来てましたね。
すみません、気づきませんでした。

> =CELL("filename",Sheet2!A1)
これですと、"Sheet2"と自分で入力しているので・・・。

> シート名を取得する目的は何でしょうか?
シート名が変更されても、値を取得したいのです。
また、他のフォーマットを合わせたブックに適用するときもそのような仕組みであれば容易に貼り付けられるためです。

補足日時:2006/06/15 00:48
    • good
    • 0

=MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31)

この回答への補足

すみません、セルの属するシート以外のシート名を取得したいのです。

補足日時:2006/06/15 00:46
    • good
    • 0

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

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


おすすめ情報