Hozzászólások
-
SzerzőBejegyzés
-
Szia Imre!
Szerintem ez volt az amit kerestem és valóban csak homályos emlékeim voltak róla.
Ezek alapján akkor jöhet az újratervezés 🙂Köszönöm a segítséged és a türelmed!
KareszSzia!
Tulajdonképpen egy saját statisztikai adatbázist szeretnék csinálni (pl.: labdarúgás). A terv az, hogy egy munka lapon egy ország egy bajnoksága lenne, a bajnokság tabellájával és a bajnokságban lejátszott mérkőzésekkel. Tehát vegyünk mondjuk 10 országot országonként 10 bajnokságot az így 100 munkalap egy munkafüzetben.
Az adat bevitel egyszerű másolással történik weblapról.
Minden mást (szükség esetén formázást, számításokat, a tabella frissítését eredmények alapján, a lejátszott mérkőzések listájának bővítését) makrók végzik.
Nincs szükség diagrammokra és kimutatásokra sem igazából, mert amit szeretnék megjeleníteni statisztikai adatot azt egy userformra rá tudom tenni.
A cél az lenne, hogy ne kelljen a programnak újabb és újabb munkafüzeteket megnyitni( mondjuk, ha országonként más más munkafüzetben tárolnám az adatokat), mert ez a megoldás időnként hibához vezet a mentések során (korábbi tapasztalat, pl.: lefagyott..)
Az, hogy a munkafüzetben olyan formán tárolja az adatot ami nem támogatja a „simán rákattintok a cellára és átírom” módszert az nem baj , ha így kissebb helyet foglal de makróval ezt lehet szerkeszteni/szerkeszthető állapotba hozni…Lehet rosszul emlékszem (arra a kevésre ami megmaradt :)) de az előző írásomba említett cikkben mintha az lett volna, hogy valami kis trükkel(mint fentebb írtam én a pivotra emlékszem de lehet rosszul) ,hogy az adatokat valamihez hozzárendelve halvány piros lesz a betű szín és nem szerkeszthető , és talán az excel egy saját formátumba menti le saját magába vagy munkafüzetbe… Ebben a cikkben viszont az is benne volt, hogy az így tárolt adatot vissza lehet hozni szerkeszthető formába.
Remélem mindent leírtam 🙂
Ha van ötlet szívesen fogadom, és köszönöm!Idő közben egy másik megoldást is találtam, de az sufni tunig ehhez képest.
userform-on label-ekbe kiiratni a hibás találat adatait és ugyanezen userform-on egy listbox-ba betölteni az adatbázist. A betöltött adatbázisból kikeresve a delikvenst kijelölni. Egy commandbuton és két textbox segítségével kijavíttatni a hibát az programmal listbox -ból kiszedett sor szám alapján. Ebben az esetben nem kell a munkafüzeten keresgetnem csak a listbox-ban .
De a fenti megoldás sokkal komplexebb lehetőségeket biztosít.Szia!
Egy kis plussz…
Miután meghívtam a Teszt programot (call Teszt), nemcsak a munkalapon enged garázdálkodni, hanem az űrlapon elhelyezett commandbutton -hoz rendelt makrót is engedi lefutni. Szabad a gazda amíg az userform-ot be nem zárom.Ez így több mint tökéletes!
Örök hála!!Szia Imre!
Ha felém jársz a vendégem vagy… ez a kod működik! A példa programba az userform1.show helyett betettem a call Teszt parancsot. (Andreas Killer-től származó linkből a teljes Teszt kod.)
Sub sorteszt() ‘példa program a bejegyzésből
For sor = 1 To 3
Range(„A” & sor) = sor
If sor = 2 Then Call Test
Next
Range(„A5”) = „Kész”
End SubSub Test() ‘ Andreas Killer megoldása a linkből
Load UserForm1
UserForm1.Label1 = „Make some changes, close me if finished”
MsgBox „Start of the macro”On Error GoTo Continue
UserForm1.Show vbModeless
Do While Not UserForm1.Visible
DoEvents
Loop
Do While UserForm1.Visible
DoEvents
Loop
Continue:MsgBox „Rest of the macro”
End SubTökéletes! Nagyon köszönöm Imre!!
Szia Imre!
Ha jól értettem akkor valami ilyesmire gondoltál. Erre az összefűzős megoldásra nem gondoltam, érdekes de jó. Nálam ez 6 mp alatt fut le 155791 soron.
Sub teszt2()
starttime = Timea = Range(„D1”).Value & Range(„E1”).Value
b = Range(„E1”).Value & Range(„D1”).Value
c = 1
sor = 155791
Do
If Range(„A” & sor) & Range(„B” & sor) = a Or Range(„A” & sor) & Range(„B” & sor) = b Then
Range(„F” & c) = sor
c = c + 1
End Ifsor = sor – 1
Loop Until c = 10 Or sor = 1
endtime = Time
fut = (endtime – starttime) * 24 * 60 * 60
Range(„A1”) = futEnd Sub
Én erre a megoldásra jutottam. Ez 1 mp alatt lemegy ugyanazon a listán.
Sub teszt3()
starttime = Timevég = Cells(Rows.Count, „B”).End(xlUp).Row
x = Range(„D1”).Value
y = Range(„E1”).Value
sor = 1
With Range(„A1:B” & vég)
Set c = .Find(x, LookAt:=xlWhole)
If Not c Is Nothing Then
firstAddress1 = c.Address
Set c = .FindPrevious(c)
Z = c.RowEnd If
Set c = .Find(y, LookAt:=xlWhole)
If Not c Is Nothing Then
firstAddress2 = c.Address
Set c = .FindPrevious(c)
v = c.RowEnd If
End WithIf Z > v Then
With Range(„A1:B” & vég)
Set c = .Find(x, LookAt:=xlWhole)
If Not c Is Nothing Then
firstAddress = c.Address
End If
Do
Z = c.Row
o = c.ColumnIf o = 1 And Range(„B” & Z) = y Or o = 2 And Range(„A” & Z) = y Then
Z = c.Row
o = c.Column
Range(„G” & sor) = Z
sor = sor + 1
End If
Set c = .FindPrevious(c)Loop Until sor = 10 Or Not c Is Nothing And c.Address = firstAddress
End WithElse
With Range(„A1:B” & vég)
Set c = .Find(y, LookAt:=xlWhole)
If Not c Is Nothing Then
firstAddress = c.Address
End If
Do
Z = c.Row
o = c.ColumnIf o = 1 And Range(„B” & Z) = x Or o = 2 And Range(„A” & Z) = x Then
Z = c.Row
o = c.Column
Range(„G” & sor) = Z
sor = sor + 1
End If
Set c = .FindPrevious(c)Loop Until sor = 10 Or Not c Is Nothing And c.Address = firstAddress
End With
End Ifendtime = Time
fut = (endtime – starttime) * 24 * 60 * 60
Range(„B1”) = fut
End SubKöszönet a segítségért és ezért az oldalért, igazán hasznos.
Szia Imre!
Köszönöm a segítséget!
Mind a két ciklus .find és .find previous -t használ. Első körben for ciklussal kerestem soronkénti feltételvizsgálattal de a kb 800.000 soron nagyon lassú volt. Utána rátaláltam a .find metodusra ez sokkal gyorsabb, de ezzel nem tudom hogy lehet-e és ha igen hogyan két elemet keresni egyszerre. Most ugy megy hogy az első ciklus C és D oszlopban megkeresi név1-et ha talál és a C oszlopban van megnézi D oszlopban hogy név2 van-e, ha igen megjegyzi a sorszámot. Ezután fut a második ami név2 keres ugyan így csak a C oszlopban vizsgálja név1-re. Szóval lentről lépked felfelé de kétszer, emiatt nincs sorban és nekem a tíz legnagyobb sorszám kellene.
A ciklusok nem változtatnak az adatokon.
Szóval kb azt csinálja a két ciklus mint ha auto szűrővel leszűrném C oszlopot név1-re utána D oszlopot név2-re kiírnám a sorszámokat és ujra szűrnék de most C oszlopot név2-re D oszlopot név1-re és ezt is kiírnám az előző listához csak ennél nincs sor elrejtés felfedés.Szia Titok!
Abban esetleg tudsz útmutatást adni hogy ezt a változáshoz rendelést hogyan tudom megoldani?
Szia Titok!
Köszi, eddig jó! Ez egy kis elemző „program” része lenne. Az első legördülőben a bajnokság a másikban a csapatok. Egy másik munkafüzetben azt már megoldottam, hogy a két legördülő alapján egy adatbázisból kikeresse a bajnokságot és a csapatokat azután elvégezze a szükségesnek vélt számításokat, ez igazából csak arra lenne, hogy ne keljen minden alkalommal keresgetni hogy milyen bajnokság és abban mely csapatok játszanak az aktuális napon.
Ha ez működik akkor csak belinkelem a napi listát végigmegyek rajta és kész. Ezzel így több órát is megspórolhatok, remélem.Köszönöm!!!!
Minden Tiszteletem a Tiéd és ne haragudj hogy ilyenekkel fárasztalak!
Legyen szép napod!!
Szia delila!
Köszi a segítséget de valamiért hibára megy amit én csináltam. Tettem fel egy vezérlő gombot amit ha megnyomok ki kellene jelöljön a C2 és E2 szerint de hibára megy. Teszek fel egy táblát ha megtennéd hogy ránézel mit rontottam el igazán hálás lennék!
Attachments:
You must be logged in to view attached files.Köszönöm!
Szia!
Köszönöm, hogy ránéztél. Jól látod. Az E1 legördülöt megoldottam szűrés, táblázattá alakítás, elnevezés útján. Egy másik munkafüzetben sikerült azt is megoldani, hogy E2-ben azok jelenjenek meg akik az E1-hez tartoznak, de ehhez tagolnom kellene az alap listát. Szóval esetleg van olyan megoldás, akár egy másik lapon is jó, amivel meg tudom mondani az excelnek, hogy minden piros sor elé szúrjon be egy üreset?Nagyon hasznosak a videok és a fórum is, mióta elkezdtem ezzel foglalkozni csak ámulok mit tud az excel és a hozzá értők!
Külön köszönet ezért is!Sziasztok!
Egy picit későn de ha valaki még nézi ezt a fórumot, kíváncsi lennék rá, hogy ha nem egy fix értékkel szeretném ezt megoldani, hanem pl a C2 cella értékével ami lehet 1,2,3… bármi, akkor a képlet hogy néz ki?
Köszi
-
SzerzőBejegyzés