• ベストアンサー

excelのシート番号を取得したいのですが、ご存知の方宜しくお願いします。

excelのシート番号を取得したいと思っています。 シート名称ではなくシート番号です。 出来れば左から1番目、二番目・・・と言った情報を取りたいです。 複数のexcelシートのデータを、別のファイルへ複写して使用します。この時に、識別情報として、シート番号を添付したいと思っています。 運用上でシート名称は使用できません。 難しいようであれば、左から何番目と言う事ではなくても、excelのシステムで管理しているシート番号でもかまいません。 ファイル名=CELL("filename")のような感じで、簡単に取得したいです。 尚、マクロを使わないで、実現できないかと思っています。 申し訳けありませんが、ご存知の方いらっしゃれば、宜しくお願い致します。

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

  • ベストアンサー
  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.4

#1,2です。 #3の方のご指摘通り、シートの順番を入れ替えても、この関数の結果は、自動的に修正されません。 関数を入れたセルの値は、 その関数が、「直接参照するセル」の値が変化しない限り再計算されません。 引数がある関数の場合、自動的に再計算がおこなわれるので問題ないのですが、 この関数には引数がないため、自動再計算が行われないのです。 そこで、その点が気になる場合は、以下のように変更してください。 なんらかのイベントが発生するごとに、このユーザー定義関数については、強制的に再計算が行われるようになります。 Option Explicit Function SHEETNAME() As Long Application.Volatile SHEETNAME = ActiveSheet.Index End Function

tosi0000
質問者

お礼

度々のご回答有り難う御座います。 参考になりました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

=CEll()、=INFO()などは要求を満たすものは無いようです。その他にも見つかりません。 私も私製関数をテストしていて、回答を開くと既に#1・#2のご回答が入っていました。 >(#2より)Indexプロパティは順番を返すようです。 Function sheetindex() sheetindex = ActiveSheet.Index End Function を作り、私の場合sheet4は左から2番目にありました。 sheet4のA1セルに=sheetindex()と入れると2と出ました。 sheet4のシートタブをマウスで掴んで、4番目に移動しました。 そこでsheet4のA2に=sheetindex()と入れると4と入りました。 A1セルの2はそのまま2です(関数としては私には不思議なタイプ)。 これで画面上の左からの表示順番を表すことが確認できて間違いないと思います。

tosi0000
質問者

お礼

有り難う御座います。 色々とテストして頂きまして、有り難う御座います。 (締め切らないで良かったです。)

  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.2

#1です。 先ほどの回答で  >左から何番目、というのはたぶん無理かと。 は勘違いでした。 やってみたらできました。 (Indexプロパティは順番を返すようです。) ちなみに、コードをかくとたったこれだけです。 このコードを書くと、 ワークシート関数と同じように  =SHEETNAME() という式だけで、簡単にシート名を取得できます。 どうですか?マクロも捨てたもんじゃないでしょう? Option Explicit Function SHEETNAME() As Long  SHEETNAME =ActiveSheet.Index End Function

tosi0000
質問者

お礼

早速の回答有り難う御座います。 ただいま色々と触っていましたら、具体的な回答頂きましたので早速動かしました。 goodです! ユーザー定義関数は使ったことが無かったので、大変に良い勉強になりました。 これから、どんどん使ってみたいと思います。

  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.1

こんばんわ。 >マクロを使わないで、実現できないか >ファイル名=CELL("filename")のような感じで 残念ですが、これはVBAを使わないとできません。 ユーザー定義関数を使えば、関数のようなイメージで、 たとえば 「=SHEETNAME()」でシート名を取得するのは簡単にできます。 ただし、ユーザー定義関数を作成するためにはVBAを使うことになります。 ちなみにVBAでは、  シート名、 もしくは  インデックス番号(これは順番とは異なります) を取得できます。 左から何番目、というのはたぶん無理かと。

関連するQ&A

  • EXCELのSheet番号って変更できる!?

    EXCELのシートを追加したり削除したりしていると Sheet番号が飛び番になってわかりにくくなると思います。 この番号を振りなおすことは出来るでしょうか。 例えば、 新しいBOOKを開くと、sheet1~sheet3があると思います。 そこに新しいシートを追加してsheet4を作ります。 次にsheet3を削除します。 VBEを開いて、プロジェクトエクスプローラーで見てみると sheet1(sheet1) sheet2(sheet2) sheet4(sheet4) となっていると思います。 この状態で、 sheet4(sheet4)の名称を、sheet3に変更しようとしても sheet4(sheet3)とはできますが sheet3(sheet3)にすることがができません。 そういうものなんでしょうか。 よろしくお願いいたします。

  • =CELL("filename")で取得したファイル名をHYPERLI

    =CELL("filename")で取得したファイル名をHYPERLINK関数で使いたい。 エクセルで「目次」というファイルを作り、そこからHYPERLINK関数で別のファイルにリンクを貼りたいと思っています。 万が一ファイルの場所が移動した場合にも、リンクが切れないように、=CELL("filename")で取得したブック名をHYPERLINK関数で使ったらどうかと思うのですが、うまくできません。 考えた方法は、 (1)ファイル名(テスト1)sheet1のA1のセルに=CELL("filename")と入力したものをコピーして、ファイル名(目次)sheet1のA1にリンク貼り付けする。 (2)(1)で表示された(目次)sheet1のA1のファイル名をHYPERLINK関数の中に使って、リンクを貼れるようにする。 としたいのですがどのように書けばいいのでしょうか。 よろしくお願いいたします。

  • シート内のセルに各シート名を表示するには

    セルに下記の値を入力してシート名を取得しています。 RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename"))) シート名を取得できたのでこのシートを雛型にしてシートをコピーしてシート名を変更したら雛型側も変更されてしまいました。 例えば  シート名が「シート1」のセルに「シート1」  シート名が「シート2」のセルに「シート2」  シート名が「シート3」のセルに「シート3」 というようにしたいのですがうまくいかず困っています。 ※セルとは上記の値を組み込んでいるセルです。 各シート内のセルにそれぞれの各シート名を表示するようにどうしたらいいのでしょうか? 説明が下手ですみませんが理解していただけましたでしょうか? 宜しくお願いします。

  • エクセルVBAでシート番号が大きい

    検索しましたがそれらしい情報が見つからなかったので質問させていただきます。 会社で使っているエクセルファイルにて、 「ツール」→「マクロ」→「VisualBasicEditor」と進み、 左に表示された「プロジェクトエクスプローラ」にて、 現在作成しているシート名が表示されますが、 ここで、通常は sheet1 sheet2 sheet3 と表示されていますよね? これが、 sheet11111121212111 sheet22212111211111 sheet31111112111111 などのように表示されています(数値は適当ですが、桁数は多いです) これはファイルの破損などでしょうか?

  • エクセルで左隣シートの特定のセルの値を表示させたい

    エクセルで左隣シートの特定のセルの値を表示させたいのですが、 どのようにすればよいでしょうか? 似たような質問の回答をいくつか試したのですが、 よく理解できていないため、うまく応用できずエラーになってしまいます。 ="No."&SUBSTITUTE(MID(CELL("filename",$A$1),FIND("(",CELL("filename",$A$1))+1,5),")","") とか =INDIRECT(SUBSTITUTE(RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))),"日","")-1&"日!A"&ROW(F24)) とか =SUM(INDIRECT("'"&(SUBSTITUTE(RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))),"日","")-1)&"日'!c5"),F24) とか といった式が参考になりそうですが、結局どう書き変えればいいのかわかりません。。 具体的には、シート名が「04」「05」…「12」「01」「02」「03」と1年分の12シートあります。 半角2桁のみのシート名です。 05以降のシートには、それぞれF1セルに、 「左隣シートのF24のセルの値を表示させたい」のです。 (F24のセル自体は「=F11+F23」という式が入力されています。) 例の式の「日」とか「row()」とかは必要ないと思いますが、 消しただけではムリそうなのでそのままコピーしています。 おわかりになる方、どうぞよろしくお願いします。

  • エクセルの別シートにページを通しで付けるには?

    検索しても、同様の質問が見つからないので質問いたします。 エクセルにて、1ファイル内に収まっている複数のシートにページ番号を通しで振るには、どのような設定をすればよろしいのでしょうか。 ・全てがA4縦です。 ・各シートには1~5ページが存在します。 ・シート表示の左から順にページを付けたい *例えば。1ファイルに3シートが存在する場合に 一番左のシートに3ページ、2番目に4ページ、3番目のシートに5ページが存在していれば、3番めのシート内の各ページには、8、9、10、11、12のページ番号を設定したいとのことです。 その後2シート目と3シート目の間に1ページのシートを挿入すると、4シート目(挿入前の3シート目)の各ページは9、10、11、12、13と自動で設定変更となるようにしたいのですが、方法はあるのでしょうか? 実際は100シートぐらいページを設定したい。 更にできるならば、その目次を作りたいのですが、それも判れば教えて下さい。

  • ネット上Excelで、シート名をセルに表示するに

    Excel2003です。ネットワーク上に保存してあるExcelのA1セルに拡張子なしのファイル名を表示するにはどうしたらいいでしょうか? 自分のPCに保存してある場合は以下で表示出来るのですがネットワーク上に保存すると表示されなくなってしまいます。=REPLACE(LEFT(CELL("filename",$A$1),FIND(".",CELL("filename",$A$1))-1),1,FIND("[",CELL("filename",$A$1)),)

  • 他のワークシート名の取得方法 (VBAを使用せずに)

    VBAを用いずに、ワークシート関数のみでワークシート名を取得できないか探しています。 自分のシート名は、以下の出力結果の一部より取得することができました。 =CELL("filename") しかし、他のシート名を取得する方法が思いもつきません。 VBAを用いずにシート名を取得することはできないのでしょうか?

  • Excelで可視セルの行番号取得

    Excelでグラフ(散布図)のポイントをクリックしたときに、そのグラフ上の何番目かを所得してレコード情報をフォーム上に表示するように作成しました。 しかし、オートフィルタで絞り込んだ場合には取得した番号と行番号が一致しないので困っています。 そこで質問なのですが 1.可視セルの何番目というような取得方法はあるのでしょうか? 2.それともグラフからポイントの何番目というのではなく、元データの行番号は取得可能でしょうか? 分かりにくい質問で申し訳ないのですが、よろしくお願いします。

  • エクセルで、シート番号をシート名にする方法

    エクセルのシート番号を、シートの名前にする、ということをVBAをつかってやりたいのですが、うまくいきません。 たとえば、5枚のシートがあったとしたら、最初のシート名=1となり、二番目が"2"、三番目が"3"で、"付録"というシートになったらなまえをつけるのをやめる。。。。ということをしたいのです。それをフッターにいれて、ページとして表示したいのですが、どうしてもうまくいきません。 シートの名前をつける方法として、 ActiveSheet.Name = "シート名前" ということですが、BOOK内の複数のシートに名前をつける方法がわかりません。 詳しいお方、どうかおしえてください。

専門家に質問してみよう