Kód VBA na podmienečné kopírovanie údajov z jedného hárku do druhého
Problém
Potrebujem kód VBA, ktorý dokáže kopírovať údaje z listu 1 (nespracované údaje) do hárku 2, hárku 3 atď. Na základe určitých podmienok.
kolóna --- ------------ B ------------ C ------------ D ------ -E
----------- názov ----- miesto ---- spoločnosť --- krajiny
----------- name1 ---- AB ------- ------- Nokia USA
----------- meno2 ---- CD ------- Sony -------- UK
----------- meno3 ----- EF ------- LG ----------- INDIA
----------- NAME4 ----- AB ------ Sony ------ RUSKO
----------- NAME5 ----- AB ------ Sony ------ NEMECKO
----------- name6 ----- CD ------ Nokia ------ INDIA
----------- name7 ----- CD ------ Ericsson - USA
----------- name8 ----- EF ------ Ericsson ---- RUSKO
----------- name9 ----- GH ------ Lenore ----- UK
----------- name10 --- GH ------- HP --------- INDIA
Riešenie
Môžete použiť nasledujúce kódy
Sub SplitSheets () Dim DataSht, wsCrit, SplitSht ako pracovný hárok Dim lrUnq, lrData, i Ako dlhé dim FtrVal As String Application.ScreenUpdating = False Set DataSht = Pracovné hárky ("sheet1") 'zmeniť na názov vášho surového hárku údajov lrData = DataSht.Range ("a" & Rows.Count) .End (xlUp) .Row Nastaviť wsCrit = Worksheets.Add DataSht.Range ("B1: l" & lrData) .AdvancedFilter Akcia: = xlFilterCopy, _ CopyToRange: = wsCrit .Range ("A1"), Unique: = True lrUnq = wsCrit.Range ("a" & Rows.Count) .End (xlUp) .Row Pre i = 2 Do lrUnq FtrVal = wsCrit.Range ("A" & i ) .Value Set SplitSht = Worksheets.Add DataSht.Select 'DataSht.ShowAllData ActiveSheet.AutoFilterMode = False ActiveSheet.Range ("A1: Z" & lrData) .AutoFilter Pole: = 2, Kritériá1: = Rozsah FtrVal ("a1") Vyberte rozsah (Výber, Výber.End (xlToRight)) Vyberte rozsah (Výber, Výber.Zadať (xlDown)) Vyberte položku Výber.Objednať Rozdelenie Shift.Select ("A1") Vyberte ActiveSheet.Paste 'Cells.Select Cells .EntireColumn.AutoFit SplitSht.Name = FtrVal Aplikácia.CutCopyMode = False Next i App lication.DisplayAlerts = False wsCrit.Delete Application.DisplayAlerts = True .AutoFilterMode = False End Sub
Vďaka RWomanizer pre tento tip.