- Profi EKG-s óra lett a Watch Fitből
- Honor 400 Pro - gép a képben
- Samsung Galaxy S21 és S21+ - húszra akartak lapot húzni
- Honor Magic7 Pro - kifinomult, költséges képalkotás
- Samsung Galaxy A54 - türelemjáték
- Milyen okostelefont vegyek?
- Telekom mobilszolgáltatások
- Apple iPhone 16 Pro - rutinvizsga
- India felől közelít egy 7550 mAh-s Redmi
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
-
Mobilarena
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
-
föccer
nagyúr
válasz
Fferi50 #51124 üzenetére
Össze kell fűzni, hogy melyik hónapnak a munkalapjáról kell kivenni. Nem fogom a függvényeket átírni, hanem csak 1 legördíthető cellából lehet kiválasztani az elemezni kívánt hónapot és indítani a makrót, ami szépen dolgozik és megcsinálja arabszolga munkát
Lehet nem elegáns
üdv, föccer
-
föccer
nagyúr
válasz
Fferi50 #51122 üzenetére
Nem az azonosítókat kell összehasonlítani, hanem az azonosítók által meghatározott sorokat, illetve azok adattartalmát. De alakul.
Már megvan az, hogy választható hónapra megvannak az egyedi sor azonostók és azok alapadatok beli pozíciója, sorazonosítója. Innentől kezdve indirektel simán kiszedem egy segédtábláta az aktuális és megelőző hónap adatait (szintén indirekttel összefűzve a képletet) a 2 kikeresett adatsor alá meg nyomok egy sima ha függvényt, ami eltérés esetén 1 eredményt ad, majd az ellenőrző sort szummázom. Ha szum=0, akkor azonos, ha nem akkor adott sor módosult és a mekró visszaírja ennek tényét.
Jó lesz ez, csak végig kellett gondolnom. Imádom az indirekt függvényt is.
üdv, föccer
-
föccer
nagyúr
válasz
Fferi50 #51120 üzenetére
Van egy üzem és egy receptszám oszlop. Az adatok országos listák, így minden üzem adata megvan benne. Viszont vannak olyan receptszámok, amik több üzemben is léteznek. Receptszám üzem szinten uniq, de globál szinten nem. Technikailag összefűtöm az üzem nevét és a receptszámot és ez adja a globál uniq azonosítót. hosszú évek óta így használom, kényszerből.
üdv, föccer
-
föccer
nagyúr
válasz
Fferi50 #51118 üzenetére
Most az idei évet kell megcsinálnom, 1-5 hónap lesz terítéken.
A havi adatokat az A01;A02;A03;A04....A12 nevű munkalapokra rakom.
Minden ilyen munkalapon A
F oszlopokban vannak az adatok. 1 sor fejléc, alatta válozó mennyiségű sorban. Oszlopok adattipusai változó, szöveges, számos.
Az egyedi sorazonosítókat egy külön munkalapon (Seged_modositasok) gyűjtöm össze Ez megadja, hogy milyen egyedi azonosító volt, melyik hónapba (milyen sorban). B oszlopba az első hónap azonosítói, C oszlopba írnám ki, hogy volt-e változás. (első hónapra nem lehet ellenőrzést futtatni, nincs előtte lévő adat). D oszlop, 2. hónap egyedi azonosítói, E, változott-e? F oszlop, 3. hónap alapdataim G oszlop változott-e?
Futtatás előtt kiválasztom Seged_modositasok!AC2 cellában lévő hónapot, ami [A02;A03....A12] értéket vehet fel. Ez megegyezik az alapadatok munkalapjainak a nevével és a Seged_modositasok fül első sorában lévő azonosítókkal (itt lesznek az egyedi azonosítók felsorolva.
A metodika valami olyasmi lenne, hogy sorban bepakolom egy szűrővel az adott havi és az előző havi egyedi azonosítókat és vizsgálom, hogy oszloponként volt-e eltérés-e vagy sem.
Nehezítés, hogy nem biztos, hogy lesz olyan azonosító, ami az előző hónapban még nem volt, így ezt kezelni kell, de azért ez még menni fog.
Jah, hogy így végig gondoltam makróval meg némi szűréssel nem is megoldhatatlan a feladat.
Hmm, mielőtt még nekiugranátok adjaotk még pár órát, lehet, hogy meg is csinálom.
fg
-
föccer
nagyúr
válasz
Fferi50 #51092 üzenetére
Közben kibogarásztam, nagyjából értem. Csak nem ismerem a szintaktikai lehetőségeket a vba-ban.
Delila_1: O365 van a céges környezetben, így minden adott. Asszonynak csináltam valamelyik héten egy oda-vissza kereső táblát, de náluk valami rettenet régi verzió van, pedig elvileg államilag elérhető lenne nála is az O365, de a rendszergizdáék nem akarják felrakni, mert egyébként a cégnél senki nem használja az outlook-word kombón kívül. Outlookba névjegyeket minek frissíteni, van egy wörd vezetve az új belépökkel....
Totál káosz. Szóval ide próbáltam csinálni egy táblát, de annyira funkciószegény a régi verziója az O365 natív tömbfüggvényeihez képest, hogy inkább rábíztam asszoynyágra h győzze meg a főnökeit, hogy frissítsenek O365-re
üdv, föccer
-
föccer
nagyúr
válasz
Fferi50 #51011 üzenetére
Bonyolultnak tűnik. Ha már megvannak a sor azonosítók, akkor sokkal egyszerűbb végig menni. Extrém esetben is ~100 sort kell átrakni 1-1 fájlból. Az egész éves "termés" 4500-5000 sor az összes fájlban. Eddig fájlonként, évente 1-2 alkalommal volt frissítve, manuálisan elbabráltam vele. Most havonta 1-2 alkalommal kell végig fésülni az összes fájlt. Eddig alkalmanként 10-50 sort szedtem be egy fájlból, most már 0-10-et. 10xére nőtt a munka, amit kiváltanék
Egyébként megvan a kód, fut is szépen. Hibakezelés lehetne még benne, de majd egyszer.
Most még a forrás fájlokat kell átalakítanom, uniformizálnom, immáron az éles könyvtárban. Elmolyolok vele, oszt ami eddig volt 1-1,5 nap, most lemegy 15 perc alatt. Kár, hogy a felszabadult időt nem tölthetem a családommal
Köszi még egyszer a segítséget.
üdv, föccer
-
föccer
nagyúr
válasz
Fferi50 #51008 üzenetére
Ismét köszönöm a segítséget.
Minden nap tanul az ember.
A másolandó soron nem egymás alatt vannak. Kigyűjtöm függvénnyel azokat a sorokat, amik kellenek nekem, és ezeket a sor számokat fogom berakni az Akt_sor változóban
Apropó, még egy kérdés. Olvasgattam, hogy a VBA a dinamikus tömböket nem szereti és valami más trükk van a használatára. Próbáltam is a Dim Sorazonositok As New List(Of Integer) kifejezéssel megnyitni a tömböt, amibe bepakolnám az azonosítókat, de nem tetszik neki.
Most csináltam egy statikus tömböt és oda rakom fel a forrás fájl megnyitása után a szükséges azonosítókat (a szükséges sorazonosítókat minden forrás fájl, saját maga kalkulálja egy elrejtett munkalapon. 35 ilyen betöntő fájl van, amit a kollégák töltögetnek az ügyviteli rendben.
Igen, tudom hogy mennyivel jobb lenne célszoftverrel, de az nincs
-
TillaT
tag
válasz
Fferi50 #51005 üzenetére
Szia, köszönöm szépen.
"A nem rögzített sor miatt a szabályban levő függvény "mozog" a formázott területtel együtt."
Igen, ez világos. Az értetlenkedésem inkább amiatt van/volt, hogy amíg a "normál Excel munkalapon" a cellákba írt képletek más cellákba történő átmásolásakor a fogadó cellákban 'testre szabódnak", azaz a célcellákban látható képletekben is megjelennek az adott célcella azonosítói (amennyiben nem rögzítettek az oszlop és sorazonosítók), addig a feltételes formázás céltartományba történő átmásolásakor a formázási képletek csak a céltartomány első cellájában veszik fel a cella azonosítókat, és a tartomány többi cellájában is az első célcella azonosítóit tartalmazó képletek lesznek.Nekem -tudatlannak- az lenne a logikus, hogy a céltartomány minden cellájában vegyék fel a célcellák saját azonosítóit a bemásolt formázási képletek, és az érvényesség csak mindig az adott célcellára vonatkozzon.
Persze -elfogadás és megszokás után- azzal sincs bajom, hogy ez nem így van, hanem a képletek célcellákra történő testreszabása helyett a formázási tartomány megadásával van lehetőség a képlet érvényességének kiterjesztésére.
Ha nem lennék olyan merev, biztosan nem értetlenkednék és akadnék fel ezen."Szerintem érdemes a hivatkozások magyarázatát átnézni az Excelben."
Így teszek. -
föccer
nagyúr
válasz
Fferi50 #50965 üzenetére
A ScreenUpdating kikapcsolása érdemi változást nem hozott, de a range-ben történő érták átadás kb lefelezte a futási időt.
Igaz az átírt kódba valami elcsesztem, így nem adott vissza mindent, helyesen, valahol valami elmehetett, de mindegy. A lényeg, hogy ezt is megtanultam, a többit meg majd javítom.
Köszönöm a segítséget
üdv, Föccer
-
föccer
nagyúr
válasz
Fferi50 #50965 üzenetére
Ránézek, köszönöm.
kiszedem az adatok nagy részét és ilyen 1 perces futással szépen kitesztelem, hogy melyik mennyit hozott a konyhára.
Soronként elvileg átrakható, illetve az egész range. Azt nem ismertem, hogy az egész range-re megy a value = value játék. Látszik, hogy botcsinálta ember vagyok
üdv, föccer
-
föccer
nagyúr
válasz
Fferi50 #50962 üzenetére
Az egyik bemeneti fülről leszedem az üzemek listáját sorba.rendez(egyedi()) függvénnyel. Ezen a listán megy végig az első for ciklus. A manuálisan is használható számoltábla úgy van előkészítve, hogy egyetlen egy paraméter cellája van, amin adat érvényesítéssel lehet listából megadni az üzem megnevezéseket. A for ebbe a cellába pakolja be az üzemek azonosítóját. Segédtáblán számoltatom hogy mennyi sor lesz az eredményen, leddig kell pörgetni a for-t, hogy minden adat kimásolásra és bemásolásra kerüljön.
A második for cikus a már kiválasztott üzem azonosítójához tartozó, leszűrt adatokat tartalmazza. Ez az előbb említett kalkulációs rész, ahol max 500 sorban, elemenként megy a kiértékelés. (ez még 2018 körül készült eljárás, de miáltal sem a bemeneti tömbök, sem a kimenet nem változik, hibátlanul működik). Szóval a 2. for az üzem szűrt elemein megy végig, soronként.
A 3. for ciklussal a a 34 oszlop adatait nyomom át a céltömbbe.
A céltömb a MINTA ÖSSZES munkafüzet. Ide rakom egymás alá az összes üzemre szerzett adatot. Erről a széltömbből. másolom ki egy másik, összesítő táblázatba az eredményt, ahol tövábbi feldolgozást csinálok.
Dim Most As Date
Dim Akt_sor As Integer
Dim Akt_oszlop As Integer
Dim Akt_minta_szama As Integer
Dim Uzemek_szama As Integer
Dim Mintak_szama As Integer
Dim Osszes_minta As Integer
Dim Akt_Uzem As String
Dim Akt_Uzem_sorszam As Integer
Most = Now
Application.StatusBar = "Üzemi mintavételek összesítésének állapota: Előkészítés..."
Akt_sor = 0
Akt_oszlop = 0
Akt_minta_szama = 0
Mintak_szama = 0
Uzemek_szama = Sheets("Mintavetelek_segedszamitas").Range("G1").Value
Osszes_minta = Sheets("Mintavetelek_segedszamitas").Range("G4").Value
Akt_Uzem = ""
Akt_Uzem_sorszam = 0
Sheets("MINTA_OSSZES").Range("A1:AH10000").ClearContents
For Akt_Uzem_sorszam = 2 To (Uzemek_szama + 1)
Sheets("Minta").Range("D1").Value = Sheets("Mintavetelek_segedszamitas").Cells(Akt_Uzem_sorszam, 1).Value
Sheets("Minta").Range("A5").Calculate
Sheets("Minta_NY").Range("A5:AH500").Calculate
Sheets("Mintavetelek_segedszamitas").Range("G2:G3").Calculate
Mintak_szama = Sheets("Mintavetelek_segedszamitas").Range("G3").Value
For Akt_sor = 5 To (Mintak_szama + 4)
For Akt_oszlop = 1 To 34
Sheets("MINTA_OSSZES").Cells(Sheets("Mintavetelek_segedszamitas").Range("G2").Value + 1, Akt_oszlop).Value = Sheets("Minta_NY").Cells(Akt_sor, Akt_oszlop).Value
Application.StatusBar = "Üzemi mintavételek összesítésének állapota: Üzemek: " & Akt_Uzem_sorszam - 2 & "/" & Uzemek_szama & " Minták: " & Akt_sor - 5 & "/" & Mintak_szama & " Összes minta: " & Akt_minta_szama & "/" & Osszes_minta & " Oszlopok: " & Akt_oszlop - 1 & "/34 van kész."
Next
Akt_minta_szama = Akt_minta_szama + 1
Next
Next
Application.StatusBar = ""
MsgBox "Kész vagyok. Köszönöm, hogy ma is dolgozhattam helyetted. Végrehajtási idő: " & Format(Now - Most, "hh:mm:ss;@")
End Sub -
Delila_1
veterán
válasz
Fferi50 #50947 üzenetére
Nem számoltam össze, hányan hány megoldással próbálkoztunk.
Ímé a legújabb, ha már lehet figyeltetni a bevitelt.Private Sub Worksheet_Change(ByVal Target As Range)
If InStr(Target.Value, "X") > 0 Then
Range(Target.Address).NumberFormat = ";;;""X"""
Else
Range(Target.Address).NumberFormat = ";;;"
End If
End Sub -
BDave
őstag
válasz
Fferi50 #50919 üzenetére
Köszönöm, sikerült! Viszont hozzáadtam egy &" előadó" tagot a képlet végére, így meg elkezdte kiírni tizedesvesszővel az amúgy kerek értéket. Hogy tudom újra lekerekíteni? A formázás nem segített.
Tehát így néz ki most a képet:
=SUMPRODUCT((E3:E198<>"E2:E197")/COUNTIF(E3:E198,E3:E198))-(COUNTIF(E3:E198,E3))&" előadó"és így adja ki: 93.0000000000001 előadó
-
föccer
nagyúr
válasz
Fferi50 #50875 üzenetére
Ez be van állítva, így használom rég óra
Egyébként ki kellene crop-olni az időt és csak az év-hónap-nap-ot tárolni, az megoldás lenne. Időbélyegre ninc szükségem, de így érkezik az adat a célszoftver lekérésében.
Most a megoldás végül az lett, hogy a beépített dámum szűrőket használom. Nem sokkal hosszabb és hiba nélkül megy. Érdekes észrevétel volt
-
föccer
nagyúr
válasz
Fferi50 #50873 üzenetére
Szia!
Autoszűrő ki-bekpcsolása mindig megy, nem szoktam egyessével kiszedni a feltételeket, hanem hotkey-el kilövöm az egész szűrőt és újra bekapcsolom. 2 másodperc, sokkal gyorsabb
egyébként sima tartomány, nem szeretem a táblázatos megjelenítést.
Dátum adatok vannak a sorokba, pl 44250,4646412037. (van egy másik, bianco tábla, amibe berakok 4 különböző adatlekérés táblázatát, ami összerendezi, kiválogatja és egy csomó kalkulációt megcsinál és visszaad 1 táblát, amit átrakok adat beillesztéssel az összefoglalóba, így mindig ugyan úgy érkeznek az oszlopok. Fixen így működik évek óta. Nem túl elegáns, de hibátlan).
közben azért nyomozok. Valószínáűleg mégis ott van a gond, h 10 000-nél több uniq adat van az oszlopban és az autoszűrő nem jeleníti meg. Ezt erősíti az is, hogy ha az autoszűrő dátumszűrők funkciójában két dátum között résznél megadom azokat a dátumokat, ami nem jelenik meg a listában, akkor is beszűri, helyesen.
Egéybként meg micsoda it hibát találtam. Nincs tiltva a regedit parancs egyszerű enduserként bejelentkezve
[link] Bár ez nem oldotta meg a problémát, de próbálkozásnak jó volt.
-
jackal79
aktív tag
-
szürke
tag
válasz
Fferi50 #50854 üzenetére
föccer, Fferi50
Köszönöm a segítséget mindkettőtöknek!
"Talán ott, hogy az A oszlopban nincs "GJ/MCs", csak "GJ" és "MCs" külön sorokban"
Talált, süllyedt..."Viszont azt is meg kell nézned, hogy van-e "/" a C6 Cellában:
Pl.HA(HOSSZ(C6)=HOSSZ(HELYETTE(C6,"/","")),FKERES(C6...stb,), 2 FKERES a fentiek szerint)
"
Ez a rész arra vonatkozik ha csak egy nevet kellene visszakapnom eredménynek ezért a vizsgált cella nem is tartalmazza a "/" karaktert?
Tekintsd költői kérdésnek, ebből a részből már semmit nem értekÖrülök hogy a "/" karaktert tartalmazó 2 nevet visszaadó rész működik, a maradék esetben meg majd bepötyögöm ami kell.
Hálás köszönet a segítségért nektek!
-
Lacpac
őstag
válasz
Fferi50 #50842 üzenetére
Igen, úgy értettem, csak az alap képlet ez:
=ÁTLAGHA(D7:W7;"<>"&MAX(D7:W7))
D7-W7 cellatartományban szereplő értékek átlaga, a max-ki van hagyva.
Kellene még ehhez az, ha többször szerepel a max érték ebben a 20 cellában, akkor csak egyszer ne számolja bele az átlagszámításba. -
andreas49
senior tag
válasz
Fferi50 #50829 üzenetére
Szia,
Köszi az infót, kicsit rosszul értelmeztem az "egy lépésben húzással ki tudod jelölni, másolás -> beillesztés" folyamatot. Most már rendben van.
A "Kiegészítés" részt már nem próbáltam, mivel az első válasz értelmezése után megtoldódott a problémám.
Köszi még egyszer a segítséget.
-
botond2225
csendes tag
válasz
Fferi50 #50781 üzenetére
Szia,
Egy összehasonlító tábla lenne a cél:
A táblában lévő A-tól R oszlopok adatai adottak -
(pontosabban C-től I oszlopig kapom meg az adatait, utána lévő J-től P oszlopok csak megnézik, hogy a B oszlophoz képest az egyes boltok hogy szerepelnek és azok kerülnek oda. Tehát pl B3-hoz képest a C3 milyen, ez jelenik meg a J3-ban) -
,ami alapján szeretném hogy az S oszloptól kezdődően végezze el az alábbi számításokat:
A "B" oszlop a referenciaoszlop, ahhoz nézem, hogy az egyes boltok árai hogy viszonyulnak egymáshoz (C-I oszlopok).A J-P oszlopok között jelenik meg, hogy az adott bolt mennyivel tér el, avagy ha nincs összeg, akkor a "nincs" értéket veszi fel.
A Q oszlop egy rangsor oszlop, ami 1-2-3-4-5 értéket vehet fel, ez kitöltve lenne már, mint alapadat, tehát ez is adott mindig.
Az S oszloptól kezdődően az oszlopoknál lévő TOP1-TOP2-TOP3-TOP4-TOP5 oszlopok emiatt lennének, hogy abba az oszlopba kerül annak az adata, amelyik a "Q" azaz a rangsor oszlopban szereplő érték szerepel. Tehát 1 = TOP1, 2=TOP, stb.
Ha egyezőséget talál valahol, oda tegyen 1-et, ha nem talál, tegyen 0-t.
(mivel 4 lehetőség van és mindegyiket szeretném megjeleníteni, ezért 1 sorban az egyes boltoknál valahol szerepelnie kell 1 db 1-esnek a többinek 0-nak kell legyen.Amit ki szeretnék nyerni, hogy az adott bolt olcsóbb-e vagy drágább, vagy pont ugyanannyi, vagy (ha nincs ár) nincs, azaz nincs a kínálatban a vizsgált termékkel.
Tehát a mintafájlban a 3. sorban AA oszlopban azért kap 1-et, mert a B oszlophoz képest az C oszlop magasabb, tehát drágább és a "rangsor értéke", azaz a Q oszlopban 4-es érték szerpel.
Remélem érthetően írtam le és köszi a segítséget.
-
TillaT
tag
válasz
Fferi50 #50756 üzenetére
Kedves Feri és Delila_1!
Nagyon köszönöm, hogy foglalkoztatok a kérdésemmel!
Ahogyan Feri írta, "Ezért úgy gondolom, a kérdező eredeti felvetése pontosításra szorul."
Teljesen igazad van.
Nagyon balga voltam. Valóban csak addig van kiemelés a ComboBoxban megjelenített elemen, amíg a fókusz a ComboBoxon van. Mihelyt elkattintok egy másik vezérlőre, megszűnik a kijelölés.
Én azt szerettem volna elérni, hogy elkattintás nélkül is szűnjön meg a kijelölés.
Végül úgy oldottam meg, hogy a makróban áttettem a fókuszt egy másik vezérlőre.A makró funkcióját tekintve tényleg nem baj ez a kiemelés, csak esztétikailag bántja a szemet, mert az űrlap színvilágához képest nagyon dominál. Még egyszer köszönöm az időtöket!
-
Lasersailing
senior tag
válasz
Fferi50 #50683 üzenetére
Szia,
Ismét köszönöm válaszodat!
Én írtam ki így az adatot (mármint a makróm), így tuti. rá. Sajnos angol cég vagyunk így örökös dátumformátum problémákkal küzdünk.Ami igazán "szép", hogy ez a dátumformátum az exceltől jött automatikusan...
Ezzel írom ki a dátumot oda, ahonnan később beolvasom:Sheets("serials").Cells(sm, 3).Value = Date & "_" & Time
Megcsináltam a mókolást, elég csúnya lett, de működik. Azért megosztom, hátha van szebb ötleted Neked, vagy bárki másnak:
keresdatum = Mid(Sheets("Serials").Cells(se_sm, 3).Value, InStr(1, Sheets("Serials").Cells(se_sm, 3).Value, "/20") + 1, 4) & "/" & Right("0" & Left(Sheets("Serials").Cells(se_sm, 3).Value, InStr(1, Sheets("Serials").Cells(se_sm, 3).Value, "/") - 1), 2) & "/" & Right("0" & Mid(Sheets("Serials").Cells(se_sm, 3).Value, InStr(1, Sheets("Serials").Cells(se_sm, 3).Value, "/") + 1, InStr(1, Sheets("Serials").Cells(se_sm, 3).Value, "/20") - InStr(1, Sheets("Serials").Cells(se_sm, 3).Value, "/") - 1), 2)
Ez úgy tűnik, hogy jól működik, csak nem szeretem, ha kilóg a képernyőről a képlet...
Ill. ekkora képletnél már előfordulhatnak hibák, amit nehéz kiszúrni, ha nem nagyon látványos... -
Lasersailing
senior tag
válasz
Fferi50 #50516 üzenetére
Szia,
Bocsánat, hogy eddig nem válaszoltam, csak közben elragadott a munkám, így ezzel (a szintén munkámmal
) kevesebbet tudtam foglalkozni...
Office 365-öt használunk.
Közben annyit még kinyomoztam az IT-n keresztül, hogy jelenleg 2 vírusírtó fut a szerveren, ami lassítja az írás - olvasást. Elvileg folyamatban van, helyettük egy harmadik telepítése, ha lekerül az első kettő, az segíthet, főleg, hogy az egyik a kettő közül híresen lassú a (helyi) IT szerint...
A dedikált terület nem szerencsés megoldás: Az adatbázis egyik sheetje szériaszámokat tartalmaz. Egyik gépen megnyitják az adott szériaszámot (A-B-C oszlopokba írás), amit a másik gép lezár (D-E oszlopba írás). Ezek között elvileg lehet, hogy csak 5 perc telik el, de akár kevesebb is lehet...
A file megnyitást már úgy csináltam meg, hogy amikor csak olvasni akar belőle, akkor csak olvasásra nyissa meg, azaz az írási jogot meghagyja más felhasználónak.
A munkafüzet megosztást lényegében teljesen kizárom, az (számomra) kezelhetetlen problémákat okozna az adatbázisban (azonos cellába két különböző adat írása), akkor százszor inkább legyen 2 sec az írás.Nagyon köszönöm segítségedet!
Visszatérve az eredeti felvetésemre. Ezeken kívül még van valami, amit érdemes ki/be kapcsolni?
-
Pá
addikt
válasz
Fferi50 #50539 üzenetére
Csak most tudtam megnézni, mert hétvégén másik laptop volt nálam.
Köszi, ez tökéletesen működik, pont azt csinálja, amit szerettem volna tőle. Egy dolgot kéne még megoldani. Hogy amit kiírtunk az új cellába (tehát a függvény eredményét) ki is törölje az eredeti cellából. Vagy a függvények alapvetően nem tudják módosítani a cél cellát és erre egy külön subot kéne írni?Ráadásul talán sikerült is nagyjából visszafejtenem és megértenem, hogy működik, szóval még tanultam is.
Egyedül a végén a "For Each a In b" kifejezés nem logikus. Ha jól értem az a "a" nagyobb egység mert az egész cellára utal. A "b" pedig a kisebb egység, hiszen csak két határoló bizbasz közti rész, nem? Akkor miért nem "For each b In a"?
Mármint látom, hogy valamikor "a" lett a kisebb egység, hiszen a értékér írjuk ki a függvény eredményeként. Csak az nem világos, hogy mikor ment át "a" a teljes cella értékéből csak az adott résszé.ny.janos: neked is köszi, de a fenti megoldás ebben a helyzetben jobban passzol, mert egyéb design okokból sokkal jobb így adott helyen egy extra oszlopból megoldani ezt, mint ennyire szétszedni.
-
Pá
addikt
válasz
Fferi50 #50523 üzenetére
Köszi! Indulásnak jó, de úgy látom, hogy ez minden névre találatot ad a cellában, amelyikben megtalálható a kulcsszó. Nekem arra lenne szükségem, hogy csak arra a névre adjon találatot a cellán belül, ami két időbélyeg között szerepel együtt a kulcsszóval. (egy cellán belül jelenleg sok munkafázis és név van, ebből csak konkrétan egyet keresek)
Most minden névre találatot ad, amik a cellán belül szerepelnek, függetlenül attól, hogy a kulcsszavas, vagy másik munkafázisban szerepelnek.
-
Pá
addikt
válasz
Fferi50 #50512 üzenetére
Közben találtam még pár apróságot, de a fő ludas valóban az volt, hogy egy Transpose függvényem volt, dinamikus indirektes range-dszel és emiatt lefoglalta magának az egész sorokat, plusz valahogy a formázást is vitte magával. Ezt alig tudtam kitörölni.
De így már sikerült elérni a 2.5MB fogyókúrát és most nagyjából reálisnak is tűnik a fileméret.
-
Lasersailing
senior tag
válasz
Fferi50 #50509 üzenetére
Szia!
Először is köszönöm a segítségedet!
1) tömörítés: Ezt nem lehet kikapcsolni esetleg? (hamarabb leszek nyugdíjas, mint hogy a foglalt tárhely számítson, pedig még félidőnél sem járok...)
Most nem látom az adatbázist, de szerintem ~száz kb lehet jelenleg és szerintem évek mire Mb-os méretűvé válik
2) beolvasás miatti megnyitás: Az volt a koncepcióm (lehet, hogy hibás), hogy két file van: Egyik az adatbázis maga, amiben adatokat tárolok (lényegében 3 sheet 3-10 oszlopnyi adattal), másik meg a programot tartalmazza, amit futtatunk 4 számítógépen. A program különböző funkciókat tud ellátni, és mindig az adatbázis file-ba írja az adatokat (ez egyszerre 1-5 cella értékének megváltoztatása). Az adatbázis semmilyen függvényt nem tartalmaz, hogy ne kalkulálgassa újra (ill. egy counts van benne, ezt mondjuk ki tudnám szedni, érdemes lenne?)
3) adatbáziskezelő: sajnos nem értek hozzá. Ill. egész pontosan még középiskolában (25 éve) DBF, meg Clippert tanultam, de azóta azt csak felejtettem. DBF-et tudna excel kezelni? Van esetleg erre valami jófajta oktatóanyag?
accesst nem ismerem egyáltalán, abban nem mernék elmélyedni...
4) beolvasások - kiírások típusa:
elvileg ugyanabba a cellába nem akarok írni kétszer, viszont sokszor írok új sorba. Magyarán az előfordulhatna, hogy mondjuk a 125. sorba írjon egyszerre a program két verziója, két különböző adatot. Amúgy a közös használatúvá tételt 15+ éve használtam melóban, de elég rossz tapasztalatunk volt vele, mindig konfliktus volt belőle, amit viszont az adatbázissal (amit emberi szem nem is lát) nem mernék kockáztatni. -
Lasersailing
senior tag
válasz
Fferi50 #50468 üzenetére
Kár, pedig olyan szép lehetett volna
Sajnos a több textboxot nem szeretném, mert a textboxok adattartama lehet 1-2-3-4 sor is. És úgy írtam az egész makrót, hogy ha kell lehessen 10 soros is a textbox (szakmailag indokolt lenne...).Másik ötletem az alábbi lenne:
Háttértörténet:
Ez a textbox tartalmaz 2 vagy több alkatrész cikkszámot + megnevezést, amikhez tartozó egyedi azonosítót be kell szkennelnie a dolgozónak. Azt szeretném mutatni neki, hogy melyik van már meg és melyik van még hátra.
Mivel azt már megtaláltam, hogy hol kezdődik a törölhető rész és a hosszát is tudom, így elvileg akár ki is törölhetném a már beszkennelt cikkszámokat.
VBAban string típusú változót karakterenként tudok másolni?
Arra gondolok, hogy átrakom a textbox értékét egy stringbe, majd az eredetileg pl. 60 karakter hosszú stringból kitörlöm a 24-40 közötti karaktereket. Ezt hogyan lehet megtenni? (értelemszerűen az új string 43 karakter hosszú lesz) -
bepken
veterán
válasz
Fferi50 #50435 üzenetére
köszi szépen, tökéletes!
én a fenti megoldásommal csak segédoszlop segítségével tudtam elérni, hogy úgy viselkedjen, ahogy szeretném.
a cellaformázás megoldásban nem vagyok még biztos, mert az összefűzött szöveg értékkel kell tovább dolgoznom majd (és ha jól értem, a cell értéke szám marad)
-
-
ny.janos
tag
válasz
Fferi50 #50410 üzenetére
A DARABHATÖBB függvény alkalmazása remek megoldás (nekem magamtól nem jutott volna eszembe, a DARABTELI-vel próbálkoztam volna, de mint rájöttem az nem alkalmas arra, hogy
DARABTELI($A$2:$A$7&$B$2:$B$7;A2&B2)
formában használjam).
Ha megengeded kiegészíteném egy ötlettel, mely esetén nem kell a második segédoszlop:=1/DARABHATÖBB($A$2:$A$7;A2;$B$2:$B$7;B2)
Ez esetben értelemszerűen az összeget kell használni a kimutatásban a maximum helyett. -
TillaT
tag
válasz
Fferi50 #50405 üzenetére
Szia!
Köszönöm. Mielőtt jobban beleásnám magamat inkább egy gyors kérdés.
Jól sejtem, hogy ha pl. e-mailen keresztül elküldök a gépemről egy átalakított menüszalagos munkafüzetet, akkor az a címzett gépén nem az általam testreszabott menüszalaggal jelenik meg, hanem a címzett gépén meglévő Excel beállításoknak megfelelően? -
istvankeresz
aktív tag
válasz
Fferi50 #50399 üzenetére
Szia!
Igen, először MsgBox-al ellenőriztem a ciklusban a változó értékeit, észrevettem, hogy szépen kiírja mindet, de egymást felülírva csak az utolsót írta ki.
Köszi megpróbálom összefűzni!
Delila_1: Köszi ez is nagyon jó megoldás. Kipróbálom mindkettőt.
Más:
Olyan képlet van ami idő formátumolkból pl (08.00 és 16.00) -ból kiszámolja, hogy 8 órát dolgozott valaki? Félórás munkarendel is kellene működni, azaz aki 08:30-tól 16:30-ig dolgozik, akkor arra is kiadja a 8 órát? -
eszgé100
őstag
válasz
Fferi50 #50383 üzenetére
Szia
"Pontosan milyen feltételeknek kell megegyezniük ahhoz, hogy TRUE legyen az eredmény?"
A TRUE eredményt készen kapom, nem nekem kell meghatároznom, van egy programunk, ami rögzíti az eredményeket, és bizonyos paraméterek alapján eldönti, hogy az adott feladat megfelelően lett-e elvégezve? Ha minden paraméternek megfelelt, akkor TRUE, ha valami nem jó, akkor FALSE.
Miért van az, hogy a második képen a MODEL1SUB2_2_3 első sorában FALSE van, a második előforduláskor pedig TRUE?
Valóságban ez egy csavart jelképez, amit egy bluetooth-os nyomatékkulccsal húzunk meg. A program kiküldi a beállításokat a nyomatékkulcsra, majd a nyomatékkulcs visszaküldi a meghúzási nyomatékot, az elfordulás szögét, hányadik csavart húzta meg a programnak, és amennyiben valamelyik érték nem megfelelő, akkor a program FALSE eredményt ír be a Statushoz, majd engedélyez egy újabb próbát, ami ha sikerül, akkor TRUE lesz, 3x lehet próbálkozni, utána supervisor átveszi. FALSE eredményt kaphatunk még akkor is, ha egy lépést vissza- vagy előreugrunk, valamint, ha nem megfelelő értékeket viszünk be a value vagy text inputhoz.A második táblázat hogyan keletkezik?
A táblázat a program log file-ából van kimásolva, egyelőre kézzel, még nem foglalkoztunk automatizálással, de nem hiszem, hogy ez gondot fog okozni a későbbiekben.
Nekem személy szerint csak egy listára van szükségem a végén, hogy volt-e olyan lépés, ami kimaradt, vagy FALSE a Status, és nem lett később korrigálva, illetve, hogy egy-egy lépés volt-e duplikálva, annak ellenére, hogy már elsőre is TRUE volt stb. Ezt az egészet el tudom képzelni, akár egy külön oszlopban a steps tabon, amit aztán egyszerűen leszűrhetünk.
A programban vannak bugok, pl ha egy legördülő listából valasztjuk ki a Step Numbert, akkor arról semmilyen bejegyzés nem keletkezik, legrosszabb esetben egy-egy (vagy akár több) lépés is kimaradhat, ezért nem merjük magunkat teljesen rábízni, kézzel pedig 30-40 perc átnyálazni az eredményeket.
Jelenleg a kézzel ellenőrzött eredmények alapján készítünk egy riportot, kategóriákra bontva és számszerűsítve a dolgokat.
-
föccer
nagyúr
válasz
Fferi50 #50332 üzenetére
Zsír, működik. Kicsit nyakatekert a használata, jó.
Viszont automatikus újra kalkuláció be van kapcsolva, de ha változik a forrás cella értéke, akkor nem kalkulálja újra a cella értékeét. Ha manuálisan kérem az újraszámítást akkor sem. Csak akkor, ha a célcellát megnyitom szerkesztére és nyomok rajta egy entert.
Elrontottam valamit, hogy így kell működnie?
üdv, föccer
-
föccer
nagyúr
válasz
Fferi50 #50313 üzenetére
Alakul. A részhalmazokra bontás működik, megtalálja az új halmazokat, kigyűjti őket.
Viszont, nincs paraméteres választás, csak egy feltététel rendszert tud jelenleg és fixen 20 részhalmazt kezel. Bár utóbbi bővíthető.
Azt szeretném kérdezni, hogy létezik-e arra megoldás, hogy egy szövegcellában összeállított adatot képletként értelmezzen az excel? Olyan kellene, mint a KÉPLETSZÖVEG, csak fordítva kelle, h működjön. Nem egy képletet fordít szöveggé, hanem egy szöveget képletté (hasonlatosan az INDIREKT függvény a hivatkozásokkal.. Ha ez mőködne, akkor onnantól VÁLASZT-al be tudnám rakni a helyére
üdv, föccer
-
föccer
nagyúr
válasz
Fferi50 #50311 üzenetére
Ugyan már. én köszönöm, h időt és energiát áldozol rám
Alapvetően a kapcsolódó üzletág felügyeleti rendszere biztosít (most még manuálisan, később direkt adatkapcsolaton keresztül) 2 db, fejlécezett adattáblát. Ebből a 2 adattáblából némi adatrendezéssel, számítással összefűzéssel de előállítok egy Recept elemzőt. Ez kb 100-120 oszlopot tartalmaz, és minden olyan releváns adatot tartalmaz, amivel később bármilyen műveletet akarok végezni, illetve ebből az adathalmazból tudom legenerálni a "visszatöltő" adattáblákat. (ezt már nem akarom felprogramozni, mert csak részhalmazra bontást szeretném lemodellezni, hogy milyen funkciókkal és paraméterezhetőséggel lássuk el a szoftvernek annak a részét amit később nem fogunk tudni fejleszteni)
Alapvetően ha a technológiát pár oszlopra be tudom vezetni, akkor azt már tudunm bővíteni, duplikálni.
A recept elemző laprol emeli át az adatokat az MCSA1_Szamolo_elsoelem munkalapra az ott megírt INDEX(SZŰRŐ) függvény. (másd előző hsz-em első képkivágását). Az ottani fejléc az adathalmaz első néhány oszlopa.
Az első elem kiválasztására 1 feltételt adok meg, hogy legyen "élő" a recept. Technikailag bármelyik elem lehetne az első, a lényeg az, hogy az adattáblának legyen első, kiemelt eleme, amihez elkezd az algoritmus összehasonlítást végezni. Ha az összehasonlítás eredménye pozitív (összetartozóak), akkor megkapja az adott részhalmaz azonosítóját. Ha negatív, akkor nem kapja meg. 1 recept minden, korábban létrehozott részhalmazon elvégzi a saját összehasonlítását, és amire pozitív a válasz, arra felveszi az adott részhalmaz azonosítóját. Ha végzett az összes részhalmaz "átnézésével" és szegény szerencsétlen recept még mindig magányos ( flag.count = 0), akkor kénytelen magának új részhalmazt létrehozni, mert valahová tartoznia kell. (ilyenkor szegény recept mélyen magába néz, hogy miért közösítették ki a többiek, miért nem találja meg a helyét az univerzumban, de mivel önfejű a lelkem, ezért elvonul még megalapítja a saját kis részhalmazát).
Ez lesz az alap működése a részhalmazra bontásnak.
Az adott részhalmazba való tartozásának ellenőrzésének az algoritmustát a feltételek fülön lehet megadni. Ennek a feltétel rendszer funkcionálitását kell lemodelleznem, hogy mit kell tudjon a lennedő szoftnak.
üdv, föccer
-
föccer
nagyúr
válasz
Fferi50 #50309 üzenetére
Egy komplexebb szoftvernek egy kisebb rész funkciója ez a mester kód ksztó modul, amivel a meglévő gyártási receptúráka "csoportosítani" tudjuk és azokat tömegesen kezeljük.
A szoftver a komplett optimalizációs/tervező/kezelő adatkapcsolati rendszer lesz.
Szintetizálni szeretném a működését, hogy tudjam tesztelni előtte, hogy egy kvázi működőképes algoritmuist adjunk a programozónak.
Irányított szűrő működése megvan, de nagyon rég használtam. Már jó ideje magam rakom össze a kimutatásokat a Sorba rendez, szűrő, egyedi, index, hol.van, szumahatöbb, darabhatübb függvényekkel. Egészen jópofa cuccokat össze lehet dobni 1-1 táblázatos kimutatásra.
-
föccer
nagyúr
válasz
Fferi50 #50305 üzenetére
A makró megírása
Pá
Kicsit szofisztikáltabban, amit a szoftver téma vázlatába írtam a szoftver tervezőnek az árajánlathoz:
o Mester kód újra definiálás futtatása és az eredmény megjelenítése és másik palettán (vagy child form-on).
Első recept definíció szerint első részhalmazként létrehozva
Ezt követően egyesével az összes recepten az alábbi algoritmus hajtódik végre:
• A vizsgált recept megfeleltethető-e az összes, eddig létrehozott részhalmaz elemeinek. Ha igen, akkor az adott receptúra megkapja a részhalmazra mutató flag-et. Egy receptúra tetszőleges számú flag-et kap (nyilván max részhalmazok száma)
• Ha flag-ek száma = 0, akkor recept új részhalmazt nyit az univerzumban.
• Vizsgált recept alapértelmezetten az első flag- szerinti részhalmazba kerül (így az „előrébb” lévő részhalmazok mindig bővebbek)
Részhalmazok szerinti receptállomány megjelenítve, egymás alá csoportosítva, kiemelve azokat a recepteket, ahol flag-ek száma > 1. Kijelölés (akár buttonnal) és drag ezeken engedélyezve.A Mester Kód gyakorlatilag a részhalmaz azonosítójaként értelmezhető.
No, ebből az első recept kijelölése megvan. Odáig kellene egy jő ötlet, hogy a tételek soronként megkapján a flag-eket (ez simán egy sorszám is lehet mindegy, csak rá lehessen szűrővel szűrni.
-
Lasersailing
senior tag
válasz
Fferi50 #50294 üzenetére
Köszönöm Neked, de sajnos ez nem az amire én vágynék:
csinált nekem ~13 kis ablakot, amiből bezárogattam 11-et majd elrendezem azt a kettőt normálisan. Na mondom ez így jó lesz, de utána mikor váltani akarok egy ablakot nem vált, hanem új ablakot nyit meg a már meglévő kettő fölé. Ennél még a a képlopó is jobban használható. Sajnos arra nem gondoltak, hogy az ember szereti látni is amit csinál... -
Lasersailing
senior tag
válasz
Fferi50 #50286 üzenetére
Köszönöm szépen, Neked és Delilának is a segítséget!
olyan kérdés jutott eszembe, hogy két monitoros környezetben dolgozom és szeretném, ha az egyik monitoron a VBA object-jét tudnám nézni, míg a másikon a VBA code-ját. Értelemszerűen ugyanannak az excelnek (általában) ugyanazon userformját
Van erre lehetőség?
-
-
Pá
addikt
válasz
Fferi50 #50238 üzenetére
Közben eszembe jutott egy jó paraszt/favágó megoldás is.
A blokkokat oldalra kellene sokasítani. Szóval "lefelé" van helyem. Elvileg meg tudom csinálni, hogy az A1: D200 blokk első szabályának a hivatkozási celláját sokszorosítom A201 : D400-ban. A második szabálynak a celláját kiterítem A401 : D600-ban és így tovább. Így tudnék rájuk $$ nélkül hivatkozni és érvényesek lennének az egész blokkra.Azon túl, hogy nem túlságosan elegáns, az lenne a kérdésem, hogy ilyen méreteknél mennyire kell aggódni performance issuek miatt? Ugye az eredeti 200x200 blokkos tervemből, ami önagában 40,000 képletezett cella. Lenne kb 7-8x ennyi. Szóval bő 300,000 cella. A legtöbben ilyen halmozott képletek vannak, sok IF-vel, VLOOKUP-pal és INDEXMATCH-csel.
Szóval mennyire lehet számítani teljesítmény gondokra egy ilyen setupnál? Illetve mit és hogy lehet ilyenkor optimalizálni, ha egyáltalán.
Új hozzászólás Aktív témák
Hirdetés
- Luck Dragon: Asszociációs játék. :)
- Vicces képek
- Vezetékes FEJhallgatók
- Kevesebb dolgozó kell az Amazonnak, AI veszi át a rutinfeladatokat
- Profi EKG-s óra lett a Watch Fitből
- Sütés, főzés és konyhai praktikák
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Autós topik
- Honor 400 Pro - gép a képben
- Delta Force (2024)
- További aktív témák...
- ROBUX ÁRON ALUL - VÁSÁROLJ ROBLOX ROBUXOT MÉG MA, ELKÉPESZTŐ KEDVEZMÉNNYEL (Bármilyen platformra)
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Assassin's Creed Shadows Collector's Edition PC
- Gyermek PC játékok
- Telefon felvásárlás!! Samsung Galaxy A50/Samsung Galaxy A51/Samsung Galaxy A52/Samsung Galaxy A53
- 12.000 ft tól elvihető ELITRO Bankmentes , kamatmentes vásárlás .Cooler Master GM2711S Monitor
- Kingmax 2x2GB DDR3 1333 RAM eladó
- ÁRGARANCIA! Épített KomPhone Ryzen 5 7500F 32/64GB DDR5 RTX 5060Ti 8GB GAMER PC termékbeszámítással
- Telefon felvásárlás!! iPhone 14/iPhone 14 Plus/iPhone 14 Pro/iPhone 14 Pro Max
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest