-
Fototrend
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
Fferi50
Topikgazda
válasz
mulli86
#44095
üzenetére
Szia!
Próbáld ki ezt a makrót légy szíves:Sub rendezo()Dim sh1 As Worksheet, sh2 As Worksheet, cl As Range, cl2 As Range, xo As Byte, xu As Long, sh3 As Worksheet, x As Integer, oszlop, drb As Long, ido As DateApplication.ScreenUpdating = FalseSet sh1 = Sheets("hiba_kod")Set sh2 = Munka2 'Most ez az adatok munkalapja Névvel is hivatkozhatsz rá, nekem túl hosszú volt.Set sh3 = Worksheets.Add(after:=Sheets(1))sh3.Name = "hiba"sh3.Cells(1, 1).Value = "Teszt"xu = 3: xo = sh2.UsedRange.Rows(5).Columns.Countsh2.UsedRange.Rows(5).Copy Destination:=sh3.Cells(2, 1)ido = Time()For Each cl In sh1.UsedRange.Rows(1).Cells ' a hiba-kódok listájaApplication.StatusBar = cl.Valueoszlop = Application.Match(cl.Value, sh2.Rows(5), 0)'melyik oszlopban van?If Not IsError(oszlop) Thenx = 1 'végig megyünk a hibakódok értékeinDodrb = Application.CountIf(sh2.Columns(oszlop), cl.Offset(x, 0)) 'hány hibás tétel vanSet cl2 = sh2.Cells(1, oszlop)Do While drb > 0Set cl2 = sh2.UsedRange.Columns(oszlop).Find(what:=cl.Offset(x, 0).Value, LookIn:=xlValues, Lookat:=xlWhole, after:=cl2)If Not cl2 Is Nothing ThenIf sh2.Cells(cl2.Row, xo + 2).Value <> "x" Then 'ha még nincs másolvash2.UsedRange.Rows(cl2.Row).Copy Destination:=sh3.Range("A" & xu) 'másoljuksh2.Cells(cl2.Row, xo + 2).Value = "x" 'és jelöljük a másolástxu = xu + 1End Ifdrb = drb - 1End IfLoopx = x + 1Loop While cl.Offset(x, 0) <> ""End IfDoEventsNextApplication.ScreenUpdating = TrueApplication.StatusBar = FalseMsgBox "Futási idő indulás: " & Format(ido, "hh:mm:ss") & " vége:" & Format(Time(), "hh:mm:ss")End SubMit csinál?
A hiba-kod munkalapon levő kódokon megy végig. Megszámolja, hogy az adatok között az adott oszlopban hány hibás tétel fordul elő. Ezeket átmásolja. Mivel egy sorban több hiba is lehet, a duplázás elkerülése érdekében az átmásolt sor végére tesz egy x-et.
A végén pedig kiírja, mikor indult és mikor fejezte be.
Ha túl hosszúra nyúlna az idő akkor Ctrl+Break megállítja (ezért van benne a DoEvents sor. Ekkor az éppen aktuális sornál megáll. Meg lehet nézni az eredményt és leállítani vagy folytatni, ahogyan éppen szeretnéd.
Remélem, nem lesz túl lassú.
Ha ismételten tesztelsz, ne felejtsd el az x-es oszlopot törölni!
Üdv.
Új hozzászólás Aktív témák
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Játékkulcsok ! : PC Steam, EA App, Ubisoft, Windows és egyéb játékok
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem.
- Kaspersky, BitDefender, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Kaspersky, BitDefender, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs
Fferi50
