2013-11-21 1 views
0

제조업체 이름이있는 열이 포함 된 하나의 마스터 데이터 시트가 있습니다. 데이터 시트에는 동일한 제조업체의 여러 UPC가 포함되어 있습니다. 제조업체별로 여러 탭을 만들어 (복제하지 않고) 특정 제조업체의 마스터 시트에있는 모든 정보를 포함해야합니다. 나는 또한 각 탭이 그 소란스러운 시트에서 제조자의 이름으로 개명되기를 바랄 것이다.VBA - 탭 복제 및 이름 바꾸기가없는 열 기반 다중 탭

트릭입니다 : 모든 팀 구성원이이 문서를 템플릿으로 사용할 수 있어야하며 우리 모두는 다른 제조업체와 UPC를 사용하게됩니다. 코드는 제조업체의 세트 목록을 사용하지 않고 문서의 열에 대한 정보를 가져와야합니다.

감사합니다. 어떤 도움이라도 대단히 감사합니다.

+2

무엇을 시도해 봤습니까? 코드를 묻는 질문은 해결하려는 문제에 대한 최소한의 이해를 보여 주어야합니다. 시도한 해결책, 실패한 이유 및 예상되는 결과를 포함하십시오. 참고 항목 : [Stack Overflow question checklist] (http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist) –

+0

안녕하세요 Siddharth - 다음을 시도했지만 제거 할 수 없습니다. @SiddharthRout을 중복합니다. – user3018807

+0

죄송합니다. 아래를 참조하십시오. 서브 CreateSheetsFromAList() 희미한 MyCell으로 범위 MyRange으로 범위 설정 MyRange = 시트 ("모든 공급 업체 매트릭스"). 범위 ("E7") 설정 MyRange = 범위 (MyRange, MyRange.End (xlDown)) MyRange 에서 각 MyCell를 들어 Sheets.Add 후 : = 시트 (Sheets.Count)는 새 워크 시트 다음 MyCell 끝 하위 – user3018807

답변

0

이 코드는 작은 조정과 함께 사용해야합니다. sColumn 상수를 제조업체 열로 업데이트하십시오.

Sub SplitListIntoWorksheets() 
'split list into individual worksheets 
Dim lLoop As Long, arrData As Variant 
Dim shtData As Worksheet, lgCol As Long, rgSel As range 
Dim cUnique As New Collection, shtDest As Worksheet 
Const blTitles As Boolean = True     'true if the data has titles, false otherwise 
Const sColumn As String = "A"      'Which column should the list be split on 

application.ScreenUpdating = False 
application.Calculation = xlCalculationManual 
application.DisplayAlerts = False 

lgCol = Cells(1, sColumn).Column 
Set rgSel = Cells(1, 1).CurrentRegion 

Set shtData = ActiveSheet 

With shtData 
    'load the column into an array for faster processing 
    arrData = .range(.Cells(1, sColumn), .Cells(.Rows.Count, sColumn).End(xlUp)).Value 

    'load the array content in a collection, to keep individual values only 
    On Error Resume Next 

    For lLoop = LBound(arrData, 1) To UBound(arrData, 1) 
     cUnique.Add arrData(lLoop, 1), CStr(arrData(lLoop, 1)) 
    Next 

    On Error GoTo 0 

    'for each individual value, filter the list, copy the results to a new worksheet 
    For lLoop = 1 To cUnique.Count 
     .AutoFilterMode = False 
     rgSel.CurrentRegion.AutoFilter Field:=lgCol - rgSel.CurrentRegion.Column + 1, Criteria1:=cUnique(lLoop) 
     Set shtDest = Sheets.Add 
     shtDest.Name = "Data " & cUnique(lLoop) 
     rgSel.CurrentRegion.Copy shtDest.Cells(1, 1) 
    Next 

    .AutoFilterMode = False 
End With 

application.ScreenUpdating = True 'reenable ScreenUpdating 
application.Calculation = xlCalculationAutomatic 
application.DisplayAlerts = True 
End Sub 
+0

감사합니다! rgSel.CurrentRegion.AutoFilter 필드 : = lgCol - rgSel.CurrentRegion.Column + 1, Criteria1 : = cUnique (lLoop) – user3018807

+0

필자 문서에 1-5 행의 데이터가 있지만 이후에 시작합니다. 열 H.의 데이터는 행 6까지 시작하지 않습니다. – user3018807