한 시트에서 다른 시트로 조건부로 데이터를 복사하는 VBA 코드

발행물

시트 1 (원시 데이터)에서 시트 2, 시트 3 등으로 데이터를 복사 할 수있는 VBA 코드가 필요합니다. 특정 조건을 기반으로합니다.

열 --- A ------------ B ------------ C ------------ D ------ -이자형

----------- 이름 ----- 장소 ---- 회사 --- 국가

----------- name1 ---- AB ------- Nokia ------- 미국

----------- name2 ---- CD ------- Sony -------- 영국

----------- name3 ----- EF ------- LG ----------- 인도

----------- name4 ----- AB ------ Sony ------ 러시아

----------- name5 ----- AB ------ Sony ------ 독일

----------- name6 ----- CD ------ Nokia ------ 인도

----------- name7 ----- CD ------ 에릭슨 - 미국

----------- name8 ----- EF ------ 에릭슨 ---- 러시아

----------- name9 ----- GH ------ Lenore ----- 영국

----------- name10 --- GH ------- HP --------- 인도

해결책

다음 코드를 사용할 수 있습니다.

 Sub SplitSheets () Dim DataSht, wsCrit, SplitSht as Worksheet Dim lrUnq, lrData, i Long Dim FtrVal As String Application.ScreenUpdating = False Set DataSht = 워크 시트 ( "sheet1") '를 원시 데이터 시트의 이름으로 변경합니다. lrData DataSht.Range ( "B1 : l"& lrData) .AdvancedFilter Action : = xlFilterCopy, _ CopyToRange : = wsCrit = "DataSht.Range ("a "& Rows.Count) .End (xlUp) .Range ( "A1"), Unique : = True lrUnq = wsCrit.Range ( "a"& Rows.Count) .End (xlUp) .Row For i = 2 lrUnq FtrVal = wsCrit.Range ( "A"& i ) .Value Set SplitSht = Worksheets.Add DataSht.Select 'DataSht.ShowAllData ActiveSheet.AutoFilterMode = False ActiveSheet.Range ( "A1 : Z"& lrData) .AutoFilter 필드 : = 2, Criteria1 : = FtrVal Range ( "a1") Select Range.And (xlToRight)) Range 선택 (Selection, Selection.End (xlDown)) Selection.Copy SplitSht.Select Range ( "A1")를 선택하고 ActiveSheet.Paste 'Cells.Select Cells를 선택합니다. .EntireColumn.AutoFit SplitSht.Name = FtrVal Application.CutCopyMode = False Next i App lication.DisplayAlerts = False wsCrit.Delete Application.DisplayAlerts = True .AutoFilterMode = False End Sub 

이 팁 덕분에 RWomanizerfor.

이전 기사 다음 기사

톱 팁