• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel :シート名を複数のセルから取得して追加するには?)

Excelシート名の追加方法と変更方法

このQ&Aのポイント
  • Excelでシート名を複数のセルから取得して追加する方法を教えてください。
  • キーとなるデータの抽出と重複したキーの削除はできたが、シート名を変更しながら追加する方法がわかりません。
  • シート名を追加する方法として、取得したキーをシート名に指定する方法と全て追加後にシート名を変更する方法が考えられます。どちらが良いでしょうか?

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.1

重複したキー云々はあまり関係ありませね。 もちろんやり方によっては重要となりますが。 方法はいくつもありますがシンプルなコードを提示します。 新しいブックのSheet1にテストデータをいれ以下のコードを実行してください。 (条件) データシート: Sheet1 データ見出行: 1行目 データ開始行: 2行目~~ データ列__: A~K列(最後の列K列は適当に) データキー列: A列 '-------------------------------------------- Sub Test()  Dim mySheet As Worksheet  Dim NewSheet As Worksheet  Dim myRange As Range  Dim myKey  Dim R As Long  Dim StartRow As Long  Dim EndRow As Long  Application.ScreenUpdating = False  Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)  Set mySheet = ActiveSheet  Set myRange = mySheet.Range("A1").CurrentRegion  myRange.Sort Key1:=mySheet.Range("A2"), Order1:=xlAscending, _  Header:=xlYes, OrderCustom:=1, MatchCase:=False, _  Orientation:=xlTopToBottom, SortMethod:=xlPinYin  StartRow = 2  With mySheet   For R = 2 To .Cells(Rows.Count, "A").End(xlUp).Row    If .Cells(R, "A").Value <> .Cells(R + 1, "A").Value Then      myKey = .Cells(R, "A").Value      Set NewSheet = Sheets.Add(After:=Sheets(Sheets.Count))      NewSheet.Name = myKey      EndRow = R      .Range(.Cells(StartRow, "A"), .Cells(EndRow, "K")).Copy NewSheet.Range("A2")      .Rows(1).Copy NewSheet.Range("A1")      StartRow = R + 1    End If   Next R End With  Application.DisplayAlerts = False    mySheet.Delete  Application.DisplayAlerts = True  Application.ScreenUpdating = True End Sub '--------------------------------------------------- 見れば分かると思いますが、 先ず、データシートSheet1を丸ごとコピーして新しいシートを作成し、それを使って作業をします。 作業が終わったら、そのコピーしたシートは削除する。 以上。  

oji_sanba
質問者

お礼

大変助かりました。パーフェクトにやりたい事が出来ました。 当然のことですが、やはりツギハギで作っている物とは大違いですね。 まだ、いろんなパーツを拾い集めてはくっつけて動かす程度の事しか出来ないため、教えて頂いた 中身も完全には理解できていませんが、凄く良いお手本を頂けましたので一つひとつを紐解いて、 今後の参考にさせて頂き、いつの日か自力で完成出来るように頑張ろうと思います。  本当に有難うございました。