2016-09-24 3 views
-1

に、単一のワークシートにすべてのワークシートをマージすることができは、どのように私は、単一のシートには、このファイル内のすべてのシートを組み合わせ、その結果、シート名を追加する必要があり、私は複数のシートとのxlsxファイルを持っているエクセル

sheets :[class A, class B] 
class A sheet 
id Name 
1 a1 
2 a2 

class B sheet 
id Name 
1 b1 
2 b2 
第三列はそれほどシートは、私がExcelで、このようなマージを行うことができますどのように

All sheet: 
id Name sheet_name 
1 a1 class A 
2 a2 class A 
1 b1 class B 
2 b2 class B 

なり結果として私が欲しいもの

はすべてマージし、シート名を使用するのですか?

+0

[複数のシートからデータを統合](https://support.office.com/en-us/article/Consolidate-data-in-multiple-をチェックworksheets-007ce8f4-2fae-4fea-9ee5-a0b2c9e36d9b)Microsoftサポートの記事を参照してください。 3列目には、各ソースシートに一定のシート名でその列を追加することができます。 – nik

答えて

2

あなたはこのコードを試みることができる:

Sub main() 
    Dim isht As Long 
    Dim allSht As Worksheet 
    Dim dataArr As Variant 
    Dim shtName As String 

    Set allSht = Worksheets.Add(After:=Worksheets(Worksheets.Count)) 

    For isht = 1 To Worksheets.Count - 1 
     With Worksheets(isht) 
      dataArr = Intersect(.UsedRange, .Range("A:B")).Value 
      shtName = .Name 
     End With 
     With allSht 
      With .Cells(.Rows.Count, 1).End(xlUp).Offset(1) 
       .Resize(UBound(dataArr, 1), UBound(dataArr, 2)).Value = dataArr 
       .Offset(, 2) = "sheet_name" 
       .Offset(1, 2).Resize(UBound(dataArr, 1) - 1).Value = shtName 
      End With 
     End With 
    Next isht 

    With allSht 
     .Rows(1).Delete 
     .Name = "All" 
    End With 
End Sub 
関連する問題