Un cod VBA pentru copierea condiționată a datelor de la o foaie la alta

Problema

Am nevoie de un cod VBA care să poată copia datele din foaia1 (date brute) la foaia 2, foaia3 și așa mai departe ... în funcție de o anumită condiție.

coloană --- A ------------ B ------------ C ------------ D ------ -E

----------- numele ----- Locul ---- firma: --- tara

----------- name1 ---- AB ------- Nokia ------- Statele Unite ale Americii

----------- name2 ---- CD ------- Sony -------- Marea Britanie

----------- NAME3 ----- EF ------- LG ----------- INDIA

----------- NAME4 ----- AB ------ Sony ------ RUSIA

----------- name5 ----- AB ------ Sony ------ GERMANIA

----------- name6 ----- CD ------ Nokia ------ INDIA

----------- name7 ----- CD ------ Ericsson - Statele Unite ale Americii

----------- name8 ----- EF ------ Ericsson ---- RUSIA

----------- name9 ----- GH ------ ----- Lenore UK

----------- name10 --- GH ------- HP --------- INDIA

Soluţie

Puteți utiliza următoarele coduri

 Sub SplitSheets () Dim DataSht, wsCrit, SplitSht Ca Foaie de Lucru Dim lrUnq, lrData, i În Dim FtrVal ca Aplicație String.ScreenUpdating = Set False DataSht = Fișe de Lucru ("sheet1") "schimbați-l la numele fișei de date brute lrData = DataSht.Range ("a" & Rows.Count) .End (xlUp) .Set Set WsCrit = Fișe Lucrare.Add DataSht.Range ("B1: l" & lrData) .AdvancedFilter Acțiune: = xlFilterCopy, _ CopyToRange: = wsCrit .Range ("A1"), Unic: = Adevărat lrUnq = wsCrit.Range ("a" & Rows.Count) .End (xlUp) .Rând Pentru i = 2 Pentru lrUnq FtrVal = wsCrit.Range ). Setul de valori SplitSht = Worksheets.Add DataSht.Select 'DataSht.ShowAllData ActiveSheet.AutoFilterMode = False ActiveSheet.Range ("A1: Z" & lrData) .AutoFilter Field: = 2, Criteria1: = FtrVal Range ("a1" . Selectați intervalul (Selecție, Selecție.End (xlToRight)) Selectați intervalul (Selectare, Selecție.End (xlDown)) Selectați Selecție.Copie SplitSht.Select Range ("A1") Selectați ActiveSheet.Paste 'Cells.Select Cells .EntireColumn.AutoFit SplitSht.Name = FtrVal Application.CutCopyMode = False Next i App lication.DisplayAlerts = False wsCrit.Delete Application.DisplayAlerts = Adevărat .AutoFilterMode = False End Sub 

Mulțumită lui RWomanizer pentru acest sfat.

Articolul Precedent Articolul Următor

Cele Mai Importante Sfaturi