PR

【便利】エクセルで、シート名・ファイル名をセルに表示する方法!セル→シート名の応用技も紹介!

eyecatch_シート名をセルに表示 Excel
記事内に広告が含まれています。

事務作業をやっていると、このような悩みを持ったことはないでしょうか?

・シート名をセルに手入力していて、手間がかかっている
・シートが多く、管理・参照に時間がかかってしまう
・同じ内容のシートをコピーしたいのに、一つずつコピーして効率が悪い

シート名をセルに表示したいときって、意外と多いですよね!
また同じシートを一つずつコピーしたり、シートが多いと探すのに手間取ったり。。。
こういう作業って、何気に時間かかってしまいますよね。。。
当時は私もどうしたらいいだろう?と困っておりました。

でも、もう大丈夫!
この記事では、これらの問題を解決に導くテクニックを紹介します!

「作業効率を上げたい!」と感じている方!ぜひ一度目を通していただけると嬉しいです!

シート名を自動反映できると、何が便利なの?

シート名を自動反映することができることにより、様々なメリットを享受できます!

同じシートを複数作成するとき便利!

シートを追加したタイミングでシート名を変更すれば、セルに表示される文字列も変わるため、入力ミスを防げたり、手間を減らしたりすることができます!

担当や対象店舗が変わったり、増減したりするときなど、シート名の変更やシートの追加・削除で済むので、使いまわしするファイルには非常に便利です!

セルにシート名を表示させる方法」にて、設定方法を紹介しています!

merit_automatic-update-of-sheets_No1

各シートの情報一覧を作成するのに便利!

INDIRECT関数を使用することにより、各シートの情報を一覧化することができます!
各シートの情報を1シートに一覧化できるため、わざわざシートごとに見に行く必要がありません。

詳細は「各シートの情報を一覧化」にて説明しておりますので、ご覧ください!

merit_automatic-update-of-sheets_No2

各シートへのリンクを作成するのに便利!

HYPERLINK関数を使えば、各シートにとぶリンクを作ることができます!
いちいちシートを探さなくても、一覧化したシートより各シートを参照することができます。

詳細は「各シートをリンク化」にて説明しておりますので、ご覧ください!
(下の図は、リンクをクリックすると、各シートのセルA1にとぶように設定しています)

merit_automatic-update-of-sheets_No3

同じシートを、シート名を指定してコピーすることができる!

同じシートを手動で複数コピーするのって面倒ですよね。。
例えば日報など、「1日」、「2日」、「3日」・・・と、右クリック&移動またはコピーを延々繰り返す、、、嫌になりますよね。。

シート名を自動反映できると、同じ内容のシートを一気にコピーすることも可能です!
詳細は「セルの値をシートに反映する方法」で紹介しています!
とても便利な方法なので、ぜひ活用してみてください!

merit_automatic-update-of-sheets_No4

セルにファイル名やシート名を表示させるには?

エクセルで作業をしていると、ファイル名やシート名を表示させたいことがよくあります。
ただ、毎回シート名を手入力するのは大変ですよね。。

でも、それは数式で自動反映させることができます!
どのようにしたらできるのか、詳しく説明していきたいと思います。

セルにシート名を表示させる方法

 シート名をセルに表示させるには、CELL関数を使う方法が簡単です。以下数式を使用することで、セルにシート名を表示させることができます!

=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))

 エクセルに上記数式をコピペすればシート名が表示されますが、どうやってシート名を表示しているかを解説します!

■シート名を表示する流れ

 ・CELL関数を使い、ファイルパスを取得する
  ↓
 ・LEN関数でファイルパスの文字数を取得する
  ↓ 
 ・FIND関数で「]」の開始位置を取得し、ファイルパスの総文字数から引く(=シート名の文字数)
  ※ファイル名は「[]」記号で囲われるため、「]」以降の文字列がシート名になる
  ↓
 ・RIGHT関数で、右側からシート名の文字数分の文字列を取得する

 文字だと分かりづらいので、実際にエクセルで表現してみました!今回はCドライブ直下「テスト」フォルダに「シート名ファイル名を表示」というエクセルファイルを作成し、そのシート名を取得しました。

explanation-of-formula_No1

それぞれの関数に関しては以下の通りです。

関数書式説明
CELL=CELL(検査の種類,[対象範囲])セルに関する情報を返す
(対象範囲は省略可)
LEN=LEN(文字列)文字列の文字数を返す
FIND=FIND(検索文字列,対象,[開始位置])対象の文字列から、
検索する文字列の開始位置を返す
(開始位置は省略可)
RIGHT=RIGHT(文字列,[文字数])文字列の右端から指定した文字数の文字を返す

セルにファイル名を表示させる方法

数式が少し長くなってしまいますが、MID関数を組み合わせることにより、ファイル名をセルに表示させることもできます!

=MID(CELL("filename",A1),FIND("[",CELL("filename",A1))+1,LEN(CELL("filename",A1))-FIND("[",CELL("filename",A1))-(LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))+1))

こちらもどうやってファイル名を表示しているかを解説します!

■ファイル名を表示する流れ

 ・CELL関数を使い、ファイルパスを取得する
  ↓
 ・FIND関数で「[」から+1の開始位置を取得する
  ↓ 
 ・ファイルパスの総文字数から「[」までの文字数と、「]」から+1の文字数を引く(=ファイル名の文字数)
  ↓
 ・MID関数で「[」から+1の開始位置より、ファイル名の文字数分の文字列を取得する

 文字だとやっぱり分かりづらいですね。。こちらも同様に実際にエクセルで表現してみました!先ほどと同じファイルを使用し、ファイル名を取得しました。

explanation-of-formula_No2

MID関数に関しての説明は以下の通りです。

関数書式説明
MID=MID(文字列,開始位置,文字数)指定した文字列の位置から、指定した文字数の文字を返す

ぜひ、これの関数を活用して作業効率をアップさせてください!

全シート名をセルに表示させる方法

上記ではシート名を取得する関数を紹介しましたが、以下ではエクセルVBAで全シート名を取得できるVBAコードを紹介します!シートの抜け漏れがないか確認できたり、ファイル整理に役立たせることが期待できます。

今回は、下のファイルにあるシート名を「シート名一覧」シートのA列に記載します。

how-to_automatic-update-all-sheet-name_No1

実際にVBAコードを組んでみる

ではVBAコードを作成していきましょう!
実際に使用するときは、シート名とシート名を反映させる場所を適宜変更してください。

Sub シート名を取得()

    Dim ws As Worksheet
    Dim i As Integer
    Dim targetSheet As Worksheet
    
    ' シート名を表示するシートを設定(シート名一覧シートに各シート名を取得)※適宜変更
    Set targetSheet = ThisWorkbook.Sheets("シート名一覧")
    
    ' 出力開始位置(セルA1より出力)※適宜変更
    i = 1
    
    ' シート名をリスト表示
    For Each ws In ThisWorkbook.Sheets
        targetSheet.Cells(i, 1).Value = ws.Name  '1列目以外を指定する場合は適宜変更
        i = i + 1
    Next ws

End Sub

こちらのVBAコードを実行すると、全シート名を取得することができました!

how-to_automatic-update-all-sheet-name_No2

どのような活用方法がある?

全シート名をセルに表示させることができると、色々便利です。
私もシートを多く持つエクセルを操作することが多いため、実際に活用している内容をご紹介します!

目次シートとしての活用

シートが多いと、ファイルの内容を把握するのが大変ですよね。
そのようなとき、どのようなシートがあるかを把握できると便利です。

各シートの情報を一覧化

例えば各シートにある値を一覧表示したいと考えます。
そのときに、一つずつシートから値をコピペして、、、って大変ですよね。

そのようなとき、この目次シートとINDIRECT関数を組み合わせると、簡単に一覧を作成することができます!

今回は、シート名を一覧化したよこに、各都道府県の「面積」を表示させていきます。

merit_automatic-update-all-sheet-name_No1

ちなみに各都道府県のシートはこのようになっており、セルC6に「面積」を入力しています。

merit_automatic-update-all-sheet-name_No2

準備ができたら、ここでINDIRECT関数を使います!
INDIRECT関数って何?ということで、関数の書式を記載しました。

=INDIRECT(参照文字列,[参照形式]) ※参照形式は省略可

簡単に説明すると、INDIRECT関数は「指定したセルを見に行くよ~」という関数です!
どういうこっちゃ?ですよね。

文字で説明するのも難しいので、画像でわかりやすく解説していきます。

セルA1に「シート名一覧」と入力しています。
そこで、セルD2に「=INDIRECT(“A1”)」と入力しました。

すると、、、セルA1にある「シート名一覧」を表示しました!
このとおり、指定したセルを見に行き、その結果を返してくれました!

merit_automatic-update-all-sheet-name_No3

話を戻して、各シートにある「面積」をINDIRECT関数で一覧表示させます。
セルB2に、「=INDIRECT(A2&”!C6″)」と入力します。
(他シートを参照するときは「シート名!セル」と表示されるため、「!」を入力しています)

merit_automatic-update-all-sheet-name_No4

すると、、、北海道の面積が表示されました!あとは入力した数式を引っ張ると、、、

merit_automatic-update-all-sheet-name_No5

すべてのシートにある面積が表示されました!
これでわざわざ1シートずつ見に行かなくても、一つのシートに一覧を作ることができました!

merit_automatic-update-all-sheet-name_No6

便利なやり方だと思いますので、ぜひ活用して効率化アップに役立ててみてください!

シートが大量にあると、まずそのシートを探すことに苦労しますよね。。
目次を作っておくと、そのページにリンクさせることも可能になります。

つまり、リンクを押したらそのページにとぶ、めっちゃ便利な方法があります!
今回は、シート名を一覧化したよこに、各シートにとぶリンクを作成します。

merit_automatic-update-all-sheet-name_No7

各シートにとぶリンクを作るには、HYPERLINK関数を使います。
名前から、リンク作ってくれそうな関数だな~って感じがしますね!

=HYPERLINK(リンク先,[別名]) ※別名は省略可

説明するまでもない気はしますが、HYPERLINK関数は「セルにリンクを作る」関数です!
ではさっそく、各シートにとぶリンクを作っていきたいと思います!

リンクを表示したいセルに、「=HYPERLINK(“#'”&A2&”‘!A1”,A2)」と入力します。
こう設定することで、「セルA2に記載しているシートのセルA1にとびますよ~」ということが表現できています!
(#は同じブック内のリンクを作るときに必要なルールみたいなものです)

merit_automatic-update-all-sheet-name_No8

すると、、、北海道シートのリンクが表示されました!
実際にクリックしてみると、、、ちゃんと北海道シートにとぶことができました!感動ですね!

merit_automatic-update-all-sheet-name_No9

あとは同様に数式をコピーしていくと、全シートのリンクを作成することができました!

merit_automatic-update-all-sheet-name_No10

これでいちいちシートを探す必要がなくなりましたね!
リンクの横にシートの説明文などを載せると、共有する人にもわかりやすいファイルができるので、一目置かれること間違いなし!(笑)

ぜひこちらも活用して効率化アップに役立ててみてください!

セルの値をシート名に反映する方法

例えば同じ内容のシートを使うんだけど、複数シートをコピーして、一つずつシート名を変更するは面倒ですよね。。

実はVBAを使うと、セルに表示したいシート名を入力すれば、シートコピーとシート名変更を一括で行うことができます!

作業効率アップすること間違いなし!今回はその方法も紹介します!

コピーしたいシートを準備する

まずはコピーしたいシートを準備します。
こちらではわかりやすく、「テンプレート」シートを作成し、こちらをコピーしていきます。
(セルC4には、シート名を反映する数式を入力しています)

how-to_automatic-update-sheet-name-by-cell-value_No1

シート名としたい値をセルに入力する

コピーしたシートの名前にする値をセルに入力します。
今回は「参照」シートのセルA1~A13に、都道府県の一部を入力しましたので、こちらの名前でシートを作成していきます!

how-to_automatic-update-sheet-name-by-cell-value_No2

シートをコピー&シート名変更のVBAを作成する

最後にシートをコピー&シート名を変更するVBAを作成します。
今回はシート名・参照先を合わせたVBAを記載します。実際に使用するときは、使用するシート名や参照範囲に編集してご使用ください!

Sub テンプレートからシートを作成()

    Dim rng As Range
    Dim cell As Range
    Dim sheetName As String
    Dim templateSheet As Worksheet
    Dim ws As Worksheet
    Dim sheetExists As Boolean
    
    ' テンプレートのシート名
    Const TEMPLATE_SHEET_NAME As String = "テンプレート"
    
    ' コピー元シートの存在チェック
    On Error Resume Next
    Set templateSheet = ThisWorkbook.Sheets(TEMPLATE_SHEET_NAME)
    On Error GoTo 0
    
    '「テンプレート」シートがなければ、注意メッセージを表示
    If templateSheet Is Nothing Then
        MsgBox "テンプレートシート '" & TEMPLATE_SHEET_NAME & "' が見つかりません。", vbCritical
        Exit Sub
    End If
    
    '名前一覧が入力されているセル範囲を指定(シート名、参照範囲は必要に応じて変更)
    Set rng = ThisWorkbook.Sheets("参照").Range("A1:A13")
    
    For Each cell In rng
        sheetName = Trim(cell.Value)
        
        If sheetName <> "" Then
            
            '同名シートが既に存在するか確認、あればそのシート名はスキップ
            sheetExists = False
            For Each ws In ThisWorkbook.Sheets
                If ws.Name = sheetName Then
                    sheetExists = True
                    Exit For
                End If
            Next ws
            
            'シートが存在しなければ、テンプレートをコピーして名前を変更
            '同じシート名があれば、注意メッセージを表示
            If Not sheetExists Then
                templateSheet.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
                ActiveSheet.Name = sheetName
            Else
                MsgBox "すでに存在するシートはスキップされました:" & sheetName, vbInformation
            End If
            
        End If

    Next cell
    
    MsgBox "シート作成が完了しました"
    
End Sub

実行すると、テンプレートシートをコピーし、指定したセルのシート名に変更されました!

how-to_automatic-update-sheet-name-by-cell-value_No3

VBAを使用すると、今まで手作業でやっていたことが自動化でき、とても便利ですね!

まとめ:シート名を自動化して効率化しちゃいましょう!

今回は、シート名を自動表示する方法、シート名を活用した応用技を紹介しました。

これらのテクニックは、業務効率化に貢献できること間違いなし!
ぜひ活用して、ともに業務効率化の道を歩みましょう(笑)

最後まで読んでいただき、ありがとうございました!

コメント

タイトルとURLをコピーしました