[[20250507152506]] 『複数シートを一気に追加する方法(ピポットテーブメx(そむ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『複数シートを一気に追加する方法(ピポットテーブル)』(そむ)

名前を付けた複数シートを一気に作成したい場合、ピポットテーブルを利用して作成しています。
その際、別のシートにシート名の一覧を入力しているのですが、そこに入力した順番通りにシートを作成する方法はありますか?
1月〜12月の数字や、50音順とかではありません。
(例:sheet1に東京、sheet2に大阪、sheet3に名古屋、sheet4に福岡、sheet5に北海道など)

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


特定のシート(Index)にシート名の一覧を入力しているとして、
入力した順番通りにシートを作成する。

前提条件として、シート名を記載しているのはA列とする

Sub test()

    Dim indexSheet As Worksheet
    Dim wsName As String
    Dim i As Long
    Dim lastRow As Long
    Dim newSheet As Worksheet

    ' 参照「Index」シート
    Set indexSheet = ThisWorkbook.Sheets("Index")

    ' A列の最終行を取得
    lastRow = indexSheet.Cells(indexSheet.Rows.Count, 1).End(xlUp).Row

    ' 1行目から最終行までループ
    For i = 1 To lastRow
        wsName = Trim(indexSheet.Cells(i, 1).Value)

        ' シート名が空でないかチェック
        If wsName <> "" Then
            'シートの存在Check
						' 同名シートが存在しない場合
            If Not SheetExists(wsName) Then
                ' 新しいシートを末尾に追加
                Set newSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
                newSheet.Name = wsName
            End If
        End If
    Next i

    MsgBox "指定された順序でシートを作成しました。"
End Sub

' 指定した名前のシートが存在するか?
Function SheetExists(sheetName As String) As Boolean

    Dim ws As Worksheet
    SheetExists = False
    For Each ws In ThisWorkbook.Sheets
        If ws.Name = sheetName Then
            SheetExists = True
            Exit Function
        End If
    Next ws
End Function

(暇な人) 2025/05/07(水) 15:47:29


ご回答ありがとうございます。
やはり、VBA,マクロを使用した方法しかないという事でしょうか?
当方含めこのファイルを利用する者が全員マクロを使えない人間でして…
(そむ) 2025/05/07(水) 16:50:25

 シートを「作成」となるとそれしかないと思います。
 できているシートがあって、その順番通りにテーブルを作る、という要望と逆なら関数のみで出来ますが……
(i) 2025/05/07(水) 17:09:16

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.