• ベストアンサー

エクセルのシート名を、シート1に作成した新旧一覧表に対応させる形で、複数シート一括で変更するには?

エクセルのシート名の変更について教えてください。 シート1のA列に、現在のブックのシート名が、 シート1のB列には、変更したいシート名が 対応するように入力されています。 シート数は50~200程度で、つど変わります。 例     A列    B列 1行目:りんご   赤色  2行目:ばなな   黄色 3行目:メロン   緑色     ・     ・     ・     ・     ・     ・ ※この場合、「りんご」は「赤色」に、「ばなな」は「黄色」に、 「メロン」は「緑色」に、それぞれシート名を変換したい。 今は、手作業でひとつずつシート名を変換しており、 かなりの手間で困っています。 一覧表を作成するまでは手作業でいいのですが、 何とかして、シート名の変更を、この一覧表を参照して できないでしょうか? 過去の質問をいろいろと見たのですが、 該当するものが見つけられず、VBAも初心者のため、 途方にくれています。 ぜひともご教授ください。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

マクロサンプルです。マクロは標準モジュールシートに貼り付けてください。変換表のシート名は4行目を修正のこと。 Sub Macro1() Dim sh As Worksheet Dim res Const trg As String = "Sheet1" 'シート1のシート名に変更 For Each sh In Worksheets   Set res = Worksheets(trg).Range("A:A").Find( _     what:=sh.Name, LookIn:=xlValues, Lookat:=xlWhole)   If Not res Is Nothing Then     sh.Name = res.Offset(0, 1).Value   End If Next sh End Sub

tommm77
質問者

お礼

早々にありがとうございます。 これならば、A列とB列で、列単位で対応できるのですね。 質問文には書いていなかったのですが、 そのほうが都合がよく、使わせてもらいました。 本当に助かりました。 ありがとうございました!

その他の回答 (1)

  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.1

サンプルです参考にしてください。 Sub ChaneSheetName() 'カレントブックのSheet1!A1をカレントセルに ThisWorkbook.Sheets("Sheet1").Range("A1").Select 'カレントセルの値が空白になるまで処理を繰り返す Do Until Selection.Value = "" 'カレントセルと同じ名前のシート名をB列の値に変更 Sheets(Selection.Value).Name = Selection.Cells(1, 2).Value '一つ下のセルをカレントセルに Selection.Cells(2, 1).Select Loop End Sub エラー処理等は書いてませんのでご注意を

tommm77
質問者

お礼

早々にありがとうございます。 思いのとおりに動きました。 目からうろこがぽろぽろです。 助かりました! ありがとうございました!

関連するQ&A

  • 複数のシートから一覧表を作成する方法

    次のことを実現させる方法を教えてください。 シート 「あ」「い」「う」があります。 ※例としてはシートを3つあげましたが、 このシートはどんどん数が増えていきます。 シート「あ」   A   B 1 鈴木 1976/1/1 シート「い」   A   B 1 佐藤 1977/1/1 シート「う」   A   B 1 山田 1978/1/1 そこから一覧表を作成したいのです。 その一覧表のシート名を「一覧表」とします。 シート「一覧表」(実現したいシート内容)   A    B   C 1 シート名 名前 生年月日 2 A     鈴木 1976/1/1 3 B     佐藤 1977/1/1 4 C     山田 1978/1/1 参照元のシートが固定されているなら   A    B   C 1 シート名 名前 生年月日 2 あ    あ!A1 あ!B1 3 い    い!A1 い!B1 4 う    う!A1 う!B1 と直接参照先を書けばいいのですが、 この方法では、シートが増えるたびに B列、C列にえ!A1 え!B1というように参照先を その都度書いていかなければいけません。 だから、一覧表で、シート名(A列)を入力ただけで、 自動的にそのシートに記載されている 名前と生年月日が反映されるようにしたいのです。 例えば今A3には「い」と記載されていますが、 これを「あ」と変更すると 以下のようにしたいのです。 B3のセルの中身は い!A1 → あ!A1 C3のセルの中身は い!B1 → あ!B1 一覧表のセルB列、C列にどのように記入すれば自動化できるでしょうか?

  • エクセルのシート名参照関数

    エクセル関数でいろいろ試したのですがうまくいかず困っています。 VBAは出来ないので(苦手なので)できましたら関数で教えてください。 12年1月~12年12月で別々のシートがあり、それぞれ別の『行』『列』に参照をしたい数字があります。 集計シート名『Sheet1』の『A1』に『検査値』、『B1』~『B12』に『12年1月』~『12年12月』、『C1』~『C12』に『該当する値』を表示したいと思います。 具体例 <シート名 : Sheet1> ---A-----B----C 1 リンゴ 12年1月 値 2 -----12年2月 値 3 -----12年3月 値 4 -----12年4月 値 5 -----12年5月 値 <シート名 : 12年1月> ---A----B 1 リンゴ 100 2 バナナ 50 3 メロン 10 4 スイカ 5 5 ミカン 1 <シート名 : 12年2月> ---A----D 1 パイン 10 2 バナナ 20 3 メロン 30 4 リンゴ 40 5 ミカン 50 <シート名 : 12年2月> ---A----F 1 パイン 10 2 バナナ 20 3 スイカ 30 4 リンゴ 40 5 ミカン 50 <シート名 : 12年3月> ---A----C 1 パイン 1 2 レモン 10 3 リンゴ 100 4 メロン 1000 5 イチゴ 10000 上記<シート名 : Sheet1>の『C列』に式を入れ、それぞれのシートから『A1』に該当する値を表示させたいと思います。 文書が下手ですのでわかりにくい内容で申し訳ありません。

  • Excel シートを自動作成、セル値をシート名に 

    エクセルのマクロの自動記録で作業の効率化を図りたいのですがうまく出来ません、ご教示いただけ無いでしょうか。 (VBAは初心者です。本とネットを検索しながら作成していたのですが、 急きょファイルを作成しなければいけない状況になりました。) ■Excel2010 ■ブック詳細 ・Sheet"企業一覧" → 行ごとに企業名、シート名が記載された表があります。   A列 企業名   B列 シート名 ・Sheet"マスタ" → 見積書のフォーマットがあります。   A4 企業名  ■希望作業 シート「企業一覧」の企業ごとにボタンを作り、ボタンを押すと 1."マスタ(Sheet)"のコピーが作成され、 2.コピーされたシートのA4セルに"企業一覧(Sheet)"A列の企業名が記載され、 3.コピーされたシート名に"企業一覧(Sheet)"のB列のシート名が記載され、 4."企業一覧(Sheet)"のB列のシート名に新しいシートへのハイパーリンクを付け 5."企業一覧(Sheet)"に戻る ※下記作業ができません。 ・コピーされた新しいシートに、シート名が付けられない。 ・"企業一覧(Sheet)"のシート名にコピーされた新しいシートへのハイパーリンクを付けられない。 ※シートのコピーは可能なら"企業一覧(Sheet)"の企業名表記順に作成したいと思っています。 ※各企業行ごとにボタンを作るのは面倒なのですが、 企業名/シート名の表記がよく変更になるため、入力と同時にマクロが実行されるのではなく、 何かワンクッションを置きたいと思っています。 ※シートのコピー作成、企業名の記載までは出来たのですが、 その他の作業ができません。よろしくお願いいたします。 --------------------------- Sub Sheet作成() ' ' Sheet作成 Macro ' ' Sheets("マスタ").Select Sheets("マスタ").Copy After:=Sheets("マスタ") Range("A4:B4").Select ActiveCell.FormulaR1C1 = "=企業一覧!R8C1" Range("C4").Select Exit Sub End Sub --------------------------

  • エクセルのシート間の串刺し?一覧表の作成で

    同じフォーマットのシートが複数枚あります(行事名、場所、日時・・などすべてシートのコピーにより作成)。それを新しいシートに一覧表として、A列には行事名、B列には場所、C列には日時・・という風に1シートに表示させたいのです。シートが増えていっても一覧表の行は下へ増えていく・・といったような表作成の方法を知りたいのです。 当サイトで調べてみたところ、似たような質問があり解決できる!と思いきや、その回答の中でもまた質問をしたくてモヤモヤしています・・・ その方の回答では 【【もし、私がやるとすると、シート名をSheet1,Sheet2,.と最後に数字をつけていく名前にします。 こうやると、串刺しを入力するシートで、どこかのセルにSheet1と入れて、そのセルをマウスでドラッグすれば以下sheet2,.という一列ができあがります。 これさえすれば、後はIndirect関数で該当のセルを参照すればOKです。 たとえば、A1~A10にシート名が入っていて、各シートの C1セルを参照する場合は、 INDIRECT("'" & A1 & "'" & "!$C$1") をB1に入れて、後はB2~B10にコピーすればいいわけです】】 だそうなのです(勝手に拝借してスミマセン)。すっごくわかりやすいのですが私にはこのINDIRECT関数の入れ方がわからないのです。 関数は探せましたがあとは1文字ずつ手入力(スペースも入れる?)すればよいのでしょうか? ("'" & A1 ??? またこの方の回答以外でも方法がありましたら教えてください(失礼ですが・・)。ほぼ初心者なのでVBAとかいう難しそうな方法は避けたいですし、アクセスではなくエクセルで作りたいのです。

  • 【エクセル】複数シートの値を参照して連続で表示する(一覧シートを作る)には

    いつもお世話になってます。 エクセルで教えて下さい。 Sheet佐藤    品名   単価  数量  価格 1  いちご  100    5   500 2  ばなな  200    3   600 Sheet鈴木    品名   単価  数量  価格 1  めろん  500    1   500 2  ばなな  200    5  1000 と入力されていて、これを元に、 Sheet一覧    氏名  品名   単価  数量  価格 1  佐藤  いちご  100    5   500 2  佐藤  ばなな  200    3   600 3  鈴木  めろん  500    1   500 4  鈴木  ばなな  200    5  1000 と表示させたい。 Sheet佐藤・鈴木はそれぞれ行の追加・挿入・削除されることがあり、 その都度Sheet一覧に反映させられるようにしたいのですが、どのようにしたら可能でしょうか? (例えばSheet佐藤の2行目を削除した場合、 Sheet一覧    氏名  品名   単価  数量  価格 1  佐藤  いちご  100    5   500 2  鈴木  めろん  500    1   500 3  鈴木  ばなな  200    5  1000 となるように) また、タイトルとは質問が反れますが、 「価格」の列に「=B2(単価)*C2(数量)」という式が入っている場合、 1:式を変更されたくないので保護をかけたい。 2:保護をかけると行削除が出来ない。 3:行を挿入したら自動的に同じ式が入るようにしたい。 という希望を満たすにはマクロしかないでしょうか? (マクロは初心者でほとんどわからないので・・・) どうぞよろしくお願いします。

  • エクセル数値一覧表の一括入れ替え方法は?

    エクセルの数値一覧表(例えばA~X列の1~100行の数値表)の 列の中心M列?を軸にしてA列をX列へ左右一括入れ替える方法を教えて下さい=又行も50行を軸に1を100に100を1へ上下一括で一覧表を入れ替える方法はありませんか?

  • エクセル のマクロで 複数の表を1つにまとめたい

    エクセル のマクロで 複数の表を1つにまとめたい 下記のようなシートがあります。 Sheet1 A B C E F G I J K 1 日付  品名 数 日付  品名 数 日付  品名 数 2 1/1  みかん 100 1/2 りんご 50 1/1 バナナ 30 3 1/5  みかん 50 1/6 りんご 25 1/7 バナナ 20 4 1/10 みかん 30 1/11 りんご 15 1/10 バナナ 10 5 1/12 りんご 30 1/11 バナナ 10 6 1/13 りんご 50 みかん・りんご・バナナのそれぞれの表をマクロで下記のような1つの表ににまとめたいのですが どのようにしたら良いかご教授お願いいたします。 (初心者なので可能であればマクロ内で’コメント付きで解説いただけると助かります)  M N O 1 日付 品名 数 2 1/1 みかん 100 3 1/1 バナナ 30 4 1/5 みかん 50 5 1/6 りんご 25 6 1/7 バナナ 20 7 1/10 みかん 30 8 1/10 バナナ 10 9 1/11 りんご 15 10 1/11 バナナ 10 11 1/12 りんご 30 12 1/13 りんご 50 うまく説明できないのでイメージ画像を添付いたします。

  • マクロでVLOOKUPを使用した複数シートのデータを一覧シートへ

    VLOOKUP関数を使用してシートを跨いでデータを一覧へもってくることができないようなので、 マクロを使用して以下のような作業をしたいです。 【Sheet1】:データベース(1)    A列  B列 1行 0001  あ 2行 0003  う 【Sheet2】:データベース(2)    A列  B列 1行 0002  い 2行 0004  え 3行 0005  お というデータから 【Sheet3】:一覧    A列  B列 1行 0001  あ 2行 0002  い 3行 0003  う 4行 0004  え 5行 0005  お を作成したい。 データベース(1)(2)は各々で全て手入力をし、 一覧のA列は予め入力しておき、B列の情報だけを一覧シートにもってくるという内容です。 (実際はセル数もシート数ももっと多いです) Application.WorksheetFunction.VLookup()を使うのかな? とは過去の質問から、なんとなく想像はつくのですが 素人なもので、例文を見てもよくわかりません・・・。 ご教授いただけると大変助かります。 よろしくお願い致します。

  • 特定列の転記とシート作成とシート名変更。

    A1からBU160までの表があります(1行目はタイトル行 表は可変です) この表の特定列(例えばBU列)の文字が入っているところまで選択し(タイトル行を除き)コピーするにはどうすればよいですか? また、貼付け先の転記用ブックにおいて、もともとあるシートをコピーし、新たにシートを作りたいのですが、できたシート名に日付をいれるには、どのようなマクロを組めばよいですか?

  • 同一フォーマットの複数のexcelファイルの何箇所かのセルを抽出して一覧表を作るには

    同一フォーマットの複数のexcelファイルの何箇所かのセルを抽出して一覧表を作る仕事をさせられています。 具体的には、一つのフォルダ(フルパスを仮に D:\shitumon とします)の中に "質問事項*.xls" ("*"の箇所は任意の文字列で、何文字あるかもまちまちです)が大量にあります。 この "質問事項*.xls" は同一フォーマットになっていて、シート名は QA となっております。 この "質問事項*.xls" の何箇所かのセルの内容を抽出して "一覧表.xls" というファイルにまとめる作業をさせられています。 "質問事項*.xls" と "一覧表.xls" の対応箇所なのですが、 (質問事項*.xls)   (一覧表.xls)    B5          A列    I3           B列    C8          D列    B10          E列    C34          F列    B36          G列    H34          H列 となっております。 ("質問事項*.xls" の何箇所かのセルは結合されているものがいくつかあります。) 現在、"一覧表.xls" には300行ぐらい入力済みで、 さらにその下の行から入力することになっているのですが、 例えば "一覧表(仮).xls" というフォルダにまとめて "質問事項*.xls" の該当箇所を抽出して、  "一覧表(仮).xls" の内容をコピーして "一覧表.xls" に貼り付けるという作業でも構いません。 プログラミングを全く知らないおじさんなので、 噛み砕いて教えてくださればありがたく思います。

専門家に質問してみよう