• ベストアンサー

エクセルのシート名をリスト化したい

エクセルで一つのファイルを作成しました。 ファイル内には複数のシートが存在しています。 最後のページに印刷用のシートを作成させ、各シートからデータを抽出させて印刷できるようにしました。 方法としてはA1にシート名を入力して、各セルに=INDIRECT($A$1&"!L8")のようなリンクを張りました。 今度はA1に打ち込むシート名をリストで選べないかと思いましたが、方法はありますか? シートの数は30ほどあり、シート名は変更がでます。そのたびにリストを変更するのは手間なので、何かいい方法はありますか?よろしくお願いします。

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

1)各シートに、下記数式を入れる(シート名が表示されます) =MID(CELL("FILENAME",A1),FIND("]",CELL("FILENAME",A1))+1,99) 2)印刷用シートで、各シートの上記セルを参照表示 3)印刷用シートのA1に、「リスト」から選択入力するように入力規則を設定 入力規則 【リスト】同一シート http://www.eurus.dti.ne.jp/~yoneyama/Excel/n-kis.htm#risuto

517hama
質問者

お礼

うまく出来ました。ありがとうございました。 お礼が遅くなりすいません・・・

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 最後のシートのA1に入力規則ができます。 以下は、Alt + F11 で、VBEditor を開き、プロジェクト・エキスプローラ(窓)の中から、ThisWorkbook をダブルクリックして開き、以下を貼り付けます。シートの名前を変更して、最後のページを開けば、入力規則のリストの中のシート名が変更されています。 '----------------------------------------------------- 'ThisWorkbook モジュール Private Sub Workbook_SheetActivate(ByVal Sh As Object)   Dim i As Integer   Dim n As String   Dim j As Integer   Dim ar As Variant   Dim Vl As Validation   Dim flg As Boolean   With ThisWorkbook     If Sh.Index <> .Worksheets.Count Then Exit Sub     j = .Worksheets.Count     Set Vl = .Worksheets(j).Range("A1").Validation     ar = Split(Vl.Formula1, ",")     For i = 1 To j - 1       n = n & "," & .Worksheets(i).Name       If ar(i - 1) <> .Worksheets(i).Name Then         flg = True       End If     Next     Set Vl = Nothing     If flg = False Then Exit Sub '変更がない場合     With .Worksheets(j).Range("A1").Validation       .Delete       .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _       xlBetween, Formula1:=Mid$(n, 2)     End With   End With End Sub

517hama
質問者

お礼

うまく出来ました。ありがとうございました。 お礼が遅くなりすいません・・・

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

Cells(行番号, 列番号) Cells(i, 1) Cells(i, "A") http://oshiete1.goo.ne.jp/qa2726187.html

517hama
質問者

お礼

うまく出来ました。ありがとうございました。 お礼が遅くなりすいません・・・

関連するQ&A

  • (sheet1)顧客名を入力すると、(sheet2)リストから、住所などのデータを抽出出来る様にしたい。

    最終的には、EXCELで作成した住所録から、WORDで封筒に宛先が印刷される様にしたいと思ってます。 WORDの差込み印刷の方法は知っていますが、 私はそれほど大量の宛名印刷をする事はないので、 まず、EXCELの住所録リスト(sheet2)から、印刷したい宛先を抽出して(sheet1)、それを、WORDに飛ばそうかと考えました。  VBAなどは詳しくないのですが、何か良い方法ありますでしょうか?  理想としては、sheet1のA1セルに、「佐藤株式会社」と入力したら、 sheet2のリストから、住所全てが抽出されてくるっていう風にしたいのですが・・・

  • エクセルでシート名をセルに表示させたい。

    エクセルで複数のシートからなるファイルがあり、シート名は「4月」「5月」「6月」・・・となっています。 このシート名をそれぞれのシートの「A1」セルに表示させる方法はありますか?シート名を変更したときに「A1」セルも連動して変わるようにしたいのです。お願いします。

  • エクセルで、別シートを参照しているセルのリストアップ

     はじめまして。検索して同種の問題が見当たらなかったため、質問させてください。  エクセルで、別シートを参照しているセルの調査と抽出を手作業で行っています。  シートの中には別シートのセルを参照・計算しているセルと、同一シート内での計算のみを行っているセルがあります。法則のあるものもないものもあり、数百行を検索と目視でまかなっております。  これが 数十ファイル×十数シート あり、手作業に時間の足りなさとつらさを感じ始めております……  エクセルのシートの中で、別シートを参照しているセルの抽出を行いたいです。  セルの色を変更し、セル名(A17 など)とセルの値(='Bシート'!A17 など)を別のファイルなどに出力したいんです。  イメージとしては、数式として「!」を検索したときの検索結果と同じだと思うんですが、検索ではセル名と値をコピーができなかったために困っています。  どなたかご教授いただければと思います。よろしくお願いします。  おまけ。  上記のリストアップ後、リンクの設定されたセルの色付けを行います。参照元のシートごとに色をかえて、見やすくまとめられたら嬉しいなぁと思います。  でもこちらは、リストアップが終わればその後に手作業でもできますので、蛇足ということで……

  • EXCELで参照シート名含む計算式の変更マクロ

    マクロを作成しておりますして、わかりづらいか質問もしれませんが宜しくお願いします。 (1)マクロを配布し先方(複数拠点)で持っているブックに変更をかけ  たい。 (2)そのブック内には複数シートがあり、計算式で他シートを参照して  いる。 (3)その計算式を変更かけたい。が(2)でいう参照シートのシート名を各  拠点にて変更しているので、計算式も変更後のシート名が入って  いる。 例えば、 シート1のA1セルに「=(xxxxx)!B1/C5」という式を埋め込みたい。    ※(xxxxx)はシート名。 でも、(xxxxx)のシート名は拠点によってシート名がことなることが 問題。尚、シート名以降の計算式は全拠点共通。 そこで、こんなことがやれればのイメージですが イメージ1: シート1の他のセル(D1)で(xxxxx)と同じシート名を参照している 式が必ず存在している。拠点毎にシート名は異なるがセル(D1)の 場所は共通。 このセル(D1)の式からシート名を抽出し、上の「=(xxxxx)!B1/C5」 の(xxxxx)に入れて、シート1のA1セルにこの計算式を記載する マクロを作る イメージ2: もし「=(xxxxx)!B1/C5」の(xxxxx)部分に仮名称を入れたものを マクロでシート1のA1セルに書き込んだあと、各拠点にて(xxxxx) →それぞれ拠点で使っているシート名に置換する ような方法があ るか?(存在しない参照シート名のまま書き込むとファイル指定の ダイアログが開くので、開かないような汎用的な記述を一旦仮置き できないか?) 以上宜しくお願いしたします

  • 異なるファイルのセル値を抽出する

    excel2010 異なるファイルのセル値を抽出する方法を教えてください。 下記に例を示します。 ファイル名:001.xlsm(ファイル名は、任意に変わります。どんなファイル名になるかは分かりません) シート名称:sheet1、sheet2…(複数あり不定です) 抽出したいセルには名前がついています。 sheet1のA4セルのセル名称が _nameAAA の様に。 ファイルによりセルの位置は変わるかもしれませんがセル名称は固定です。 001.xlsmのファイルに新規シート作成し、 あるセルに =_nameAAA とすると、sheet1のA4セルの値を表示してくれます。 抽出したいファイルが下記の様に複数あります。 001.xlsm,002.xlsm,003xlsm… 抽出したいセルの名前は固定で、下記の様にあります。 どのファイルにどのセル名称があるかは分かりません。 _nameAAA _nameAAB _nameAAC というセル名称があった時、 それぞれのファイルに新規シート作成して、セル名参照するのは手間なので、 以下の様にしたいです。 参照.xlsmというファイルを作成し、c:\workに登録します。 中身は sheet1の A1セルに=_nameAAA A2セルに=_nameAAB A3セルに=_nameAAC としておきます。 抽出したいファイルをc:\workにコピーし、参照.xlsmからマクロで セルの値を抽出して表示する様にしたいのです。 マクロ初心者なのでベタを教えていただきたく、よろしくお願いします。

  • エクセルのハイパーリンクのシート名の一括変更(再)

    いつもお世話になります。 先日ここでハイパーリンクを張ったシートのコピーについて教えてもらったのですがダミーシートで試してみたらうまくいくのですが、本番のシートで複数枚コピーしてみたらやっぱり最初のシート(コピー元)の指定のセルに飛んでしまうのですが、何が違うのか分かりません。 教えていただいた方法は、 セルを右クリックでリンクを張るのではなく、「ハイパーリンク関数を使って =HYPERLINK("#A1","ABC")とリンクを貼ると、シート名が入らないのでシートをコピーしてもそのシートの指定のセルに飛びます」というものです。 なぜシート名が入っていないのに違うシートのセルに飛ぶのでしょう?

  • EXCEL セル値のシートにリンクを付ける

    同じブック内の別シートのセルにハイパーリンクを設置したいのですが、 シートの選択を、セルの値に設定する事は出来ないでしょうか。 シート1: A列:シート名       B列:各シートへのハイパーリンクを付けたいセル B1セルに、A1セルのシート名シートのA1セルへのリンク B2セルに、A2セルのシート名シートのA1セルへのリンク を付けたいのです。 シート名はたびたび変更をするため、 A列のシート名を変更すると、各シート名も変更になるように設定しています。 よろしくお願いいたします。

  • 複数ファイルの同じ位置のセル内容を、それぞれファイル名・シート名にして保存したい

    VBA初心者ですが、いろいろなQ&Aを検索して、やりたいことの解決方法を模索しているのですが、私の疑問にドンピシャの回答が見つからず悩んでいます。 目的は、あるフォルダ内の、複数のランダムなファイル名のエクセルファイルについて、それぞれのファイルを開き、アクティブシートのA1セルの入力内容に基づき、そのシートの名前を変更し、ファイル名も変更して保存するという作業です。(例えば、A1に「山田」と入っていたら、シート名も「山田」にして、「山田.xls」で保存する。) マクロの自動作成で、例えば「A」というファイルは開いてシート名を変え、ファイル名を付けて保存するくらいのことはできるのですが、ファイル名がランダムに代わったり、ファイル数が複数になるとできません。 このようなマクロを作ることは可能なのでしょうか?。 よろしくお願いいたします。

  • ユーザーフォームでチェックしたシートを保存する方法

    「台帳」というExcelのブックに「リスト」「印刷用1」「印刷用2」「印刷用3」…というように複数のシートがあります。「印刷用1」…はVLOOKUP関数を用いて「リスト」に入力したデータを参照しています。 現在ユーザーフォームを用いてチェックを入れたシートを出力できるようになっているのですが、このユーザーフォームを利用してチェックを入れたシートをリンクを外した状態で1つのブックとして保存させる方法はないでしょうか? 詳しく言うと、例えば「印刷用1」「印刷用3」をコピーして新しいブック(ファイル)を作成し、シート名はそのまま維持してファイル名は「A1」セル(全シート共通です)の内容に、加えてVLOOKUP関数で取得しているデータはリンクを外してテキストに変換し、現在のフォルダに保存するという作業をVBAを使用して自動化させたいのです。(上司の要望です) もともとあるユーザーフォームは前任者が作成したもので、当方はVBAは用語もろくにわからない全くの初心者ですので、詳しい解説も添えていただけると勉強にもなり非常に助かります。 よろしくお願いいたします。

  • EXCEL Sheet名指定

    いつもお世話になります。 EXCELにてFILE1.xls ⇒ Sheetが1日~31日まであります。 FILE2.xls からリンクして集計するのですが 式:サンプル ='[FILE1.xls]1日'!G7 上の式の1日の部分がSheet指定ですが、 例えば、FILE2のA1に1日と指定したら FILE1のSheetの1日にリンクさせる。 例えば、FILE2のA1に2日と指定したら FILE1のSheetの2日にリンクさせる。 FILE2のA1セルに指定した日にちによりSheet名を自動変動 させるにはどのようにすればよいのでしょうか? INDIRECT関数にて可能ですが、FILE1と2を同時に 開かないとREFエラーになるため、INDIRECT以外での方法を 教えて頂けたらと思います。 関数・マクロでも構いませんのでお願いいたします。 どなたか、ご教授下さい。

専門家に質問してみよう