hungmanh.th1
Thành viên mới

- Tham gia
- 22/10/22
- Bài viết
- 17
- Được thích
- 0
Chào mọi người ! Mình có một sheets excle cần tách ra thành nhiều sheets nhưng gặp lỗi "that name is already taken. try a different one"
Chỉ tạo ra 1 sheet đầu tiên và báo lỗi như vậy . Nhờ anh em xem code và chỉ giáo ạ !

Public Sub GPE()
Dim I, Arr, Dic As Object, Tem, Item As String, Wb As Object, Rng As Range, Ws As Worksheet
Application.DisplayAlerts = False
Application.ScreenUpdating = False
For Each Ws In Worksheets
If Ws.Name <> "ABC1" Then Ws.Delete
Next Ws
Set Wb = ActiveWorkbook
With Wb.Sheets("ABC1")
Set Rng = .Range(.[A11], .[K65000].End(3))
Set Dic = CreateObject("Scripting.Dictionary")
Arr = .Range(.[K12], [K65000].End(3)).Value
For I = 1 To UBound(Arr)
Tem = Arr(I, 1)
If Tem <> Empty And Not Dic.exists(Tem) Then
Item = Tem
Rng.AutoFilter 11, Item
.Range(.[A1], Rng).SpecialCells(12).Copy
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Item
Sheets(Item).[A1].PasteSpecial xlPasteValues
Sheets(Item).[A1].PasteSpecial xlPasteFormats
End If
Next I
.Activate
.AutoFilterMode = False
End With
Application.CutCopyMode = False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Chỉ tạo ra 1 sheet đầu tiên và báo lỗi như vậy . Nhờ anh em xem code và chỉ giáo ạ !


Public Sub GPE()
Dim I, Arr, Dic As Object, Tem, Item As String, Wb As Object, Rng As Range, Ws As Worksheet
Application.DisplayAlerts = False
Application.ScreenUpdating = False
For Each Ws In Worksheets
If Ws.Name <> "ABC1" Then Ws.Delete
Next Ws
Set Wb = ActiveWorkbook
With Wb.Sheets("ABC1")
Set Rng = .Range(.[A11], .[K65000].End(3))
Set Dic = CreateObject("Scripting.Dictionary")
Arr = .Range(.[K12], [K65000].End(3)).Value
For I = 1 To UBound(Arr)
Tem = Arr(I, 1)
If Tem <> Empty And Not Dic.exists(Tem) Then
Item = Tem
Rng.AutoFilter 11, Item
.Range(.[A1], Rng).SpecialCells(12).Copy
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Item
Sheets(Item).[A1].PasteSpecial xlPasteValues
Sheets(Item).[A1].PasteSpecial xlPasteFormats
End If
Next I
.Activate
.AutoFilterMode = False
End With
Application.CutCopyMode = False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub