Hozzászólások
-
SzerzőBejegyzés
-
Szia Márk!
1. Nem szükséges VBA kódot alkalmazni.
2.1 Készítettem 3 munkafüzetet. (Forrás1, Forrás2 és Összegző)
Beírtam a forrás adatokat, elkészítettem a csatolást az Összegző fájlban.
Titkosítottam a dokumentumokat, mentettem a változást.
2.2 Amikor a Munkatárs1 dolgozik a Forrás1 fájlon, megnyitja az Összegző fájlt. Ezzel biztosítja a az Összegző fájlban lévő csatolások frissülését. Hasonló módon jár el a Munkatárs2 a Forrás2 fájl kezelése során.
2.3 Amikor valaki csupán az Összegző fájlt nyitja meg, akkor a csatolt forrásadatok utolsó frissülése szerinti állapotot fogja látni. Ügyesen szervezett adatszerkezet mellett a diagramok is a legutolsó frissítés szerinti állapotot tükrözik.üdv’
veraxSzia Márk!
1. Igen.
2. Van.verax
Sziasztok!
Lehet, hogy félreértem a feladatot, de nekem egyszerűnek tűnik a megoldás.
A feladat leírásból az derül ki, hogy egy lapra egymás alá 10 darab vonalkód fog elférni
„A10 után B1-ben folytassa”[A1]
=N1
[A2]=HA($N$2>(OSZLOP()-1)*10+SOR()-1;$N$1;"")
Ezután az A2 cella képletét másolhatod az A3:A10, B1:M10 tartomány celláiba.üdvözlettel
veraxAttachments:
You must be logged in to view attached files.Nagyon jó. 😉
Most már csak arra vigyázz, hogy legközelebb pontosan fogalmazd meg a kérdésedet! Az eredeti feladat meghatározásban számjegyek darabszámáról beszéltél. Az 1,2,8,12,23 szövegben hét számjegy alkot öt számot. Nem mindegy.üdv’
veraxA számjegyek megszámlálásához:
=HOSSZ(HELYETTE(A1;”,”;””))
A számok megszámlálásához
=HOSSZ(HELYETTE(HELYETTE(HELYETTE(HELYETTE(HELYETTE(HELYETTE(HELYETTE(HELYETTE(HELYETTE(HELYETTE(A1;”0″;””);”1″;””);”2″;””);”3″;””);”4″;””);”5″;””);”6″;””);”7″;””);”8″;””);”9″;””))Szia iltre!
Két kérdés
1. Makrót szabad-e használni?
2. A számjegyek vagy a számok számát szeretnéd-e tudni?üdvözlettel
veraxSzia GBali!
Nos, akkor én is nekifutok újra. Kicsit „lassabban”.
Hogy érthetőbb magyarázatot adjak, csupán egyetlen sorban szereplő adatokról fogok beszélni. Legyen ez a sor az első adatsor, a táblázat második sora.
Az „A2” cellába beírtad az érkezés időpontját. 11:00
A „B2” cellába beírtad a távozás időpontját. 18:30
A „C2” cellában egy egyszerű kivonással megállapítod a jelenlét időtartamát =B2-A2A „D2” cellában jelölöd, hogy a dolgozó 30 perc fizetetlen pihenő időt (ebédidőt) kapott.
Ez azt jelenti, hogy a dolgozó érkezése után legalább egy megszakítással összesen 8 órát tölt munkával és 30 percet kedve szerinti pihenéssel. Így tehát papírforma szerint 8 és fél órával az érkezése után távozik. Azonban, ha a „D2” cellában nem lenne jelölés, az azt jelentené, hogy a 30 perces pihenő idő mellet csupán 7 és fél órai munkavégzést vár el a dolgozótól a munkáltató.
Ezt a két esetet kell vizsgálni a HA() függvény segítségével.
Ha a „D2” cellában van „x” akkor 8,5 órát vegyen alapul a további számítások során, egyéb esetben pedig csak 8 órát.
De mi is lesz a további számítás? Semmi különös, csak egy újabb kivonás, a „C2″ cellában már használt képlethez hasonló.Fontos és ezért érdemes tudni, hogy a dátum és az időértékek is számformátumú adatok. Az Excel a dátumokat úgy kezeli egész számokként, hogy megszámolja, hogy hány nap telt el az aktuális dátumig 1900. január 1. napja óta (1900. január 1. = 1)
Az időértékek ebből következően viszont törtszámok. Mivel egy nap 24 órából áll (ez a 24 órányi idő tesz ki egy egész napot, egy egész számot) ezért például a reggel 6 óráig eltelt időt a 6/24 tört értékkel fejezhetjük ki legszemléletesebben. 6/24 = 1/4 (0,25) Egy másik nagyon egyszerű példa délig éppen a nap fele telik el. Számtanilag így írhatjuk le: 12/24 = 1/2 (0,5).Kis kitérő után visszatérek a félbehagyott =HA(D2=”x”; … ) függvényhez. Tehát ha a feltételként meghatározott egyenlőség IGAZ, akkor 8,5/24 törtértéket kell kivonni a „C2” cellában már kiszámolt tényleges jelenlét időtartamából, ha viszont az egyenlőség nem teljesül, azaz HAMIS, akkor a 8/24 értékkel kell számolni. Ez eddig bár helyes eredményt ad, de te nem egy törtszámot szeretnél kapni, hanem a percek egész számú értékét.
Mit lehet itt tenni?
Láttuk, hogy ha órákról, az azokra egy egész napból jutó részről beszélünk akkor az egész nap óráinak számához, 24-hez viszonyítottunk. A percek esetén sincs másképpen. Egy napban 24×60 = 1440 perc van. Ha tehát a fenti HA() függvény tört értékű eredményét megszorozzuk 1440-nel, máris megkapjuk a vágyott végeredményt.Azt remélem, hogy érthetően magyaráztam a gondolatmenetemet, de tudom, hogy a szemléltetés sokkal hatékonyabb, mint a „száraz leírás”, ezért mellékelem az általad eredetileg közzétett fájl fentiek szerint kiegészített változatát.
üdv’
veraxAttachments:
You must be logged in to view attached files.Sziasztok!
Ránéztem Imre javaslatára. Mivel én régi Excel változatot használok, nálam nem jelenik meg az Imre által javasolt képlet eredménye – de vakon megbízok benne 😉 néhány aprósággal azért mégis kiegészítem azt.
1. Kényelmetlen és kockázatos feladat minden mondattöredék esetén megvizsgálni, megszámlálni és beírni a töredékek számát. Ezt elkerülendő hoztam egy javaslatot, amit a „Munka1” munkalapon nézhettek meg.
2. Nem elegáns, bár nyilvánvalóan célravezető eljárás, amelynek lépéseit Imre zárszóként felsorolta. Ezekkel kapcsolatban is hoztam egy javaslatot, amely kiváltja, kiegészíti esetleg helyettesíti a „kézimunkát”. Nem meglepő, a „verax” munkalapon elemezhetitek az ötletemet.üdv’
veraxAttachments:
You must be logged in to view attached files.Szia Dénes!
Az első kérdésre adott pozitív válaszod érdektelenné tette a másik kettő kérdést.
Makróval könnyen megoldható a feladat. Csupán két változóra, egy ciklusra és egy kétirányú elágazásra lesz szükséged.Mellékelem a makró-barát megoldási javaslatomat. Tekints a menüszalag végére! 😉
üdv’
veraxAttachments:
You must be logged in to view attached files.Szia dani!
Megengedett-e a makrók használata?
A példában legfeljebb három cellára szétesett mondatot látok. A valóságban is erre kell számítani?
Megengedhető-e a létrehozott mondatok között üres sorok jelenléte?üdvözlettel
veraxSzia GBali!
Látom hallottál már a HA() függvényről. Sajnos elkövettél egy súlyos hibát. Körkörös hivatkoznak nevezik. Az E2 cella értékét szeretnéd a HA() függvény segítségével megváltoztatni a szerint, hogy az E2 cellában milyen értéket találsz. Érted, ugye, a logikai hibát!?
Az érkezés és távozás időpontjából helyesen számolod a jelenlét időtartamát.
Az előírt jelenlétet a „D” oszlop értéke határozza meg. Ha a „D” oszlop aktuális cellája üres, akkor az előírt jelenlét 8 óra, egyébként 8,5 óra.
Az eltérés számításához használd a HA() függvényt és az előzőleg a „C” oszlopban kiszámolt tényleges jelenléteket!<!– Bántóan rossz a helyesírásod. Ez most itt csak zavaró. Máskor ügyelj arra, hogy helyesen írj! Talán ezért nem értettél szót a mesterséges intelligenciával sem? –>
üdvözlettel
veraxSzia sziszidrive!
Készíts egy Excel fájlt és itt a hozzászólások alatti Tallózás… gombra kattintva csatolhatod.
Mi le tudjuk tölteni, meg tudjuk nézni, hogy milyen képleteket, formátumokat, … használsz.
Könnyebben adunk javaslatokat amelyek közelebb visznek a lehetséges megoldásokhoz.
Esetleg röviden leírhatod az általad használt szoftver verzió számát is.üdvözlettel
veraxSziasztok!
birotom! Szerintem ismerkedj a „Terc” árajánlat készítő rendszerrel! Meríts belőle ötleteket! Továbbá hasznos lenne az adatbázisok „lelkivilágához” is közelebb kerülnöd – ahogy Imre is tanácsolta.
Mellékelek egy példát, amely a sok szintű legördülők kezelésének egy módját mutatja be. Ebből is csemegézhetsz. 😉
Egyébként pedig kicsit pontosíthatnád a feladat meghatározásodat!
Milyen bemeneti adatokból dolgozol?
Hányféle tulajdonsággal rendelkezik az árajánlat(?)? Abban esetleg külön a termék és külön a szolgáltatás?
Milyen végeredményre számítasz?
Kell-e nyomtatnod az egyes tételeket vagy csak egy adatbázisban tárolod azokat?
A csatolt fájlod ad némi iránymutatást, de számomra nem tűnik logikus elrendezésnek a „redőny_számoló” munkalap szerkezete. Nyilván nem ismerem a pontos munkafolyamatot, az ajánlat(?) készítés lépéseinek egymás utáni sorrendjét.
Kérdés, hogy egy három, négy paraméterrel összeállított példa logikája mentén tovább tudsz-e lépni? Szerintem igen, de jó lenne tőled „hallani”.Azt hiszem, hogy én a termék egyes tulajdonságait egy-egy (esetleg két-két) hexadecimális számjeggyel kódolnám. Az így keletkező karaktersorozat egyértelműen azonosítana minden terméket.
pl. 124F118F132…
Műanyag redőny, Redex redőny szúnyoghálóval kombinálva, mahagóni, SZ:118 cm, M:132 cm, …1. hely: Termék típus (14 féle)
2. hely: Termék az adott típuson belül
3. hely: Színkód
4. hely: Járatos szélességi méret (1-E vagy Fxxx – egyedi)
5. hely: Járatos magassági méret (1-E vagy Fxxx – egyedi)
…stb…A lassulásról: Ha sok képletet használsz, az magától értetődően előidézi ezt a problémát. Alternatív megoldás – amire Imre is utalt – a makrók használata. Ez utóbbi esetben mellőzhetők a feleslegesen lefutó számítások. Cserébe el kell fogadni a makró használat kockázatára figyelmeztető rendszerüzenet okozta kényelmetlenséget vagy gondoskodni kell a kivételes státusz beállításáról.
üdvözlettel
veraxAttachments:
You must be logged in to view attached files.Szia sziszidrive!
Azt próbáltad már, hogy a hét napjainak neveit a Cellák formázása > Szám > Egyéni > Formátumkód: nnnn beállításával jeleníted meg?
Egy ilyen cellaformátum beállítása után írj az adott cellába egy dátumértéket! A megjelenő eredmény mindenféle további képlet használata nélkül az adott dátumhoz tartozó nap neve lesz.
A feltételes formázásnál viszont a =HÉT.NAPJA() függvényt használhatod. A függvény első paramétere a vizsgálandó dátumérték, a második pedig legyen 2!
=HÉT.NAPJA(dátumÉrték; 2)<6
Ez a feltétel vizsgálat a hétköznapok esetén válik igazzá.
=HÉT.NAPJA(dátumÉrték; 2)>5
Ez pedig hétvége esetén.üdvözlettel
veraxSziasztok! Szia MartaRoth!
„Van egy szolgáltatás, amit különböző határidőre tudunk teljesíteni, az ügyfél kérésére, 1-2 nap, 5 nap, 10 nap.”
Kérdés:
Az egy-egy konkrét munkát (szolgáltatást) háromszor, három határidőre teljesítetek? Ugye nem?
Szerintem nem szükséges mindhárom határidőt kiszámolni, megjeleníteni, majd ezek közül választani.
Mivel szolgáltatási határidőről van szó én nem használnék egyetlen kattintással átállítható értéket. Vitás helyzet kialakulására ad lehetőséget. Konkrét dátumot írnék a cellákba képletek használata nélkül.üdv’
veraxSzia Laszlosala!
A mellékelt fájl UserFormján lévő TextBox sem és a ComboBox sem tartalmaz kezdőértéket.
Mit jelent számodra az hogy ciklusban?
Mivel akadtál el? Nem tudod törölni a sort a ComboBoxból?
A ComboBox-nak elemei vannak, nem sorai.
Miért ComboBox-ot használsz, miért nem ListBox-ot?Nagyon fontos, hogy pontosan határozd meg a problémát. Ha ez sikerül, az is lehet, hogy magad is felismered a megoldást.
Ha a ComboBox elemei közül szeretnél egyet törölni, ahhoz nem kell ciklus. Egyszerűen add meg a törölni kívánt elem indexét! A törölni kívánt elem – az éppen kijelölt elem indexét pedig a ListIndex tulajdonsággal kérdezheted le.
`ComboBox1.RemoveItem (ComboBox1.ListIndex)
Azon még elgondolkodhatsz, hogy jó ötlet-e állandóan visszaírni a ComboBox aktuális értékét a TextBox-ba?
(spoiler: szerintem nem)üdvözlettel
veraxSzia MartaRoth!
Nem írtál semmi konkrétumot, nem írtad le a képletet, amit használni szeretnél, ezért így a „sötétben tapogatózva” azt javaslom, hogy ismerkedj az abszolút és a relatív hivatkozásokkal!
Esetleg mellékelj egy „érzékeny” adatokat nem tartalmazó fájlt, amin bemutatod a kérdésedet!üdvözlettel
veraxSziasztok!
Én évekkel ezelőtt találtam egy beépülő dátum választót. Itt megtalálod.üdvözlettel
veraxSzia Imre!
Sok sikert! Azért, ha megvan a megoldás, azt is közre adhatod 🙂 hadd tanuljunk mi is egy kicsit!
üdv’
veraxSzia Imre!
A hibakeresés fáradságos tevékenység. Ezért hangsúlyozza minden komoly fejlesztő a tervezés fontosságát. Azt is szokták mondani – eltúlozva a valóságot-, hogy minden kód egyszerűsíthető.
Nos.
Amit én tennék:
1. Feltenném magamnak a kérdést, hogy biztos nincs-e jobb módszer a feladatom megoldására, mint az Excel táblázatkezelőt és az abban lévő VBA-t használni? Ha a válasz nyomokban sem tartalmaz bizonytalanságot akkor …
2. Megpróbálnám meggyőzni magam arról, hogy túl bonyolult, ahogy te írtad: igen összetett a kódom. Amikor eredményes az „önmeggyőzésem” …
3. Átírnám a kódomat. Ehhez többféle segítséget is igénybe vennék. Mindenek előtt különféle szakirodalmakat (Bocs’ Bizonyára jelentős mennyiségű tapasztalattal rendelkezel már most is, de soha nem tudhatod, hogy másnak milyen jó ötletei, megoldási javaslatai vannak a te problémádra, ha nem tájékozódsz. Nem mellesleg szerintem éppen ezért vagy most itt. 😉 ) és fórumokat. De amit biztosan használnék a hiba felderítésére az az
Application.StatusBar = " <valami szöveg> "
Ez a parancs a munkafüzet, munkalap fülei alatti sávban (StatusBar) jeleníti meg a <valami szöveg>-et. Ezzel az utasítással „gazdagon fűszerezném” a kódomat. Így amikor valamely programrésznél „megtorpan a rohanás”, le tudom olvasni a képernyő alján lévő utolsó, még végrehajtott feladathoz tartozó üzenetet. Ez segíthet meghatározni a túl sok erőforrást igénylő program részlet helyét.
Első nekifutásra ennyi ötlettel tudlak támogatni. Nyilván több átadott információból, pontosabb választ is kaphatsz.üdvözlettel
veraxSziasztok! Szia Adri!
Köszönöm Imre! Nekem tetszik a megközelítésed. Nem keresgélünk kimutatást a munkalapon, hanem célirányosan odamegyünk, ahol lennie kellene.
Apró kiegészítés: Lehet, hogy a leegyszerűsített példa miatt kerülte el a figyelmemet, hogy vizsgáljam az „K”-val jelölt táblázatok szélességi méretét. Adri leírásában ott van:
„…nem tudjuk hány táblázat lesz és mekkora méretű,…” továbbá: „…készüljön kimutatás pontosan a táblázattal egy vonalba, két oszloppal jobbra.”
Ezek miatt mégis vizsgálni kell a táblázatokat is. Kicsit összetettebb a megoldás de nem reménytelen.1. Keresed meg a „K”-t!
2. Határozd meg a hozzá tartozó táblázatot! Imre által javasolt, a kimutatás tábla nevére való rákérdezéshez hasonló módon. A táblázatok ListObject típusú objektumok.
3. Állapítsd meg a táblázat szélességét! Ezt az értéket használd a „K”-kat tartalmazó cellákhoz viszonyítottan eltolt kimutatások létezésének vizsgálatához – ahogyan Imre mutatta!Az On Error Resume Next is hasznos. Én egy String típusú változónak adom át a kimutatás tábla nevére való rákérdezés eredményét. Ezt az eredményt vizsgálom tovább egy Select Case elágazásban. Létező kimutatás tábla esetén (Err.Number=0) a Case 0, nem létező esetén (Err.Number=1004) a Case 1004 irányt választom. Nyilván ez utóbbiban kell a kimutatás tábla elkészítéséről gondoskodni.
üdv’
veraxSzia Adri!
„…keresse meg a táblázatokat, és ha az meg van jelölve K-val…’
Van olyan „K”, ami nem valamelyik táblazatot jelöli meg? Ugye nincs. Akkor nem a táblázatokat kell megkeresni, hanem a „K”-kat.„…ÉS! még nincs mellette kimutatás,…”
1. Keresd a „K”-kat! (Használj valamilyen ciklust!)
2. Tárold el a találat sorát!
3. Keresd a kimutatásokat! (Használj az előző ciklusba ágyazott For Each ciklust!)
4. Állapítsd meg és tárold el a Kimutatás által elfoglalt tartomány címét!
5. Állapítsd meg hogy az eltárolt sor és „L” oszlop által hivatkozott cella része-e a kimutatás területének!
6. Az így megkapott logikai érték alapján meghozhatod végre a döntést: Hozz / Ne hozz létre egy kimutatást!üdvözlettel
veraxSzia Gojo-Mann!
Ezzel a jelenséggel találkozhatunk például olyankor, ha valamit rosszul írtunk, valamire hibásan, elgépelve hivatkozunk. Egyébként pedig, mivel nem adtál közre konkrétumot, nagyon nehéz lenne konkrétummal válaszolni.
üdv’
veraxSziasztok! Szia Imre!
Engem nem bántottál meg. 😉
Én is látom a „furcsa” képleteket, de mivel a kérdést a lista egyedi elemeinek kigyűjtése és a SZUMHA() függvény megválaszolja, ezért nem foglalkoztam azok értelmezésével, helyesbítésével.Nyilvánvalóan igazad van abban is, hogy az Excel beépített Kimutatás szolgáltatása sok esetben gyorsabb és lényegesen átláthatóbb eredményt ad, mint a felhasználó által sok-sok képletből összeállított egyedi „kimutatás”. Ugyanígy, amint írtad, az ismétlődések eltávolítása is csupán néhány kattintást igényel és már jöhet is a SZUMHA(). Viszont éppen a fent említett „furcsa” képletek miatt ébredt bennem is gyanú a tekintetben, hogy a felhasználók pontosan ismerik-e az Excel képességeit.
Az én megoldási javaslatom talán abban nyújthat segítséget, hogy ha a végső felhasználó nem érti a kimutatások logikáját, nem ismeri a táblázatkezelés adatkezelési szolgáltatásait vagy egyszerűen „fél” attól, hogy bármit módosítson a munkalapon, akkor egy előre elkészített felületen („B1” cellára beállított adatérvényesítéssel) csupán két kattintással megváltoztatva az adatok forrását, PIVOT szerkesztés nélkül, azonnal megkapja a vágyott eredményt.
Tudjuk: Nincs ingyen ebéd. Ha a végfelhasználó képességei szerényebbek, akkor a fejlesztőnek kell több energiát rászánnia a projektre. És fordítva.üdv’
veraxSzia csokesz!
Az Excel 2016 még nem ismeri az EGYEDI() függvényt, ezért kaptad a #NÉV? hibaüzenetet.
A feladat azért így sem megoldhatatlan. Hoztam is egy példát – illetve kiegészítettem az általad hozott fájlt.
Az „Axapta” munkalap „AG6:AK85” tartományát tekintsd át! Ott találod azokat a segéd számításokat, amelyek helyettesítik az említett EGYEDI() függvényt. Megtehettem volna, hogy a külön oszlopokban lévő képleteket összeszerkesztem egy sokkal nehezebben áttekinthető „óriás” képletté. Nem tettem. Így könnyebb elemezned, könnyebb belőle tanulnod.üdv’
veraxAttachments:
You must be logged in to view attached files.Szia csokesz!
Nem válaszoltál az első kérdésre, de úgy gondolom, hogy O365-öt használsz.
Ha ez igaz, akkor használhatod az EGYEDI() – UNIQUE() – függvényt.
Az „AD6” cellába írd ezt:
=EGYEDI(W6:W85)
Ezután az „AE6:AE18” tartományban már használhatod a SZUMHA() – SUMIF() – függvényt.
=SZUMHA(W$6:W$85;AD$6;X$6:X$85)
Természetesen ez utóbbi függvényt az „AE6” cellába írd be, majd lehúzhatod az AE18 celláig – vagy ameddig szükséges.üdv’
veraxSzia csokesz!
Első kérdés: Az Excel melyik változatát használod?
„…különböző adatokat, hogy lehet egyesíteni…”
Különböző adatokat legegyszerűbben az „&” karakterrel lehet egyesíteni.
="cso"&"kesz"
„…és összeadni?
Különböző adatokat legegyszerűbben a „+” karakterrel lehet összeadni.
=3+4
„Az A oszlopban sokféle azonosító van, a B oszlopban összegek vannak.
Milyen képletet tudok készíteni hozzá?”Attól függően, hogy milyen eredményt vársz, használhatsz számtalan képletet különféle beépített függvénnyel. Azokon felül amiket Imre javasolt, használhatod akár az ABS(), az ÁTLAG(), az AZONOS(), a BAL(), a CSERE(), a CSONK(), a DARAB(), a DARAB2(), a DARABTELI(), … csak, hogy a leggyakoribbakat említsem és még sorolhatnám.
„Viszont az a gond mellé, hogy az A oszlopban változnak az azonosítók. ”
Tedd írásvédetté az azonosítókat tartalmazó cellákat! Akkor nem tudnak majd változni.Látod, ugye!?
Meg ne sértődj, de ha a kérdésed nem értelmezhető, a válasz sem lesz értelmezhető!Remélem azt is látod, hogy a fenti „nesze semmi fogd meg jól” válasz ellenére mégis kaptál segítséget. Imre is és én is abban igyekszünk neked segíteni, hogy megtanulj helyesen kérdezni.
üdvözlettel
veraxSzia Gojo-Mann!
Az olvasásra megnyitott fájlt természetesen nem tudod módosítani, de az űrlapot tartalmazó munkafüzet munkalapjára elhelyezhetsz olyan képletet, amely az eredeti fájl adatait emeli át.
Ezután a saját írható munkafüzetedben már szabadon szerkesztheted azokat. Akár kimutatást is készíthetsz belőlük.üdv’
veraxNagyon szívesen!
Igen. Én is úgy látom, hogy az „ÚT” elején jársz. Ezért is részleteztem a javaslatomat, hangsúlyoztam az eltéréseket.Sziasztok!
Vagy a Ctrl+H után kell megadni a cserélendő karaktereket,
vagy többször egymásba ágyazva kell használni a HELYETTE() függvényt.
=HELYETTE(HELYETTE(HELYETTE(HELYETTE(HELYETTE(A1;"ű";"ű");"Ĺ‘";"ő");"Ăł";"ó");"Ă©";"é");"á";"á")
üdvözlettel
veraxAttachments:
You must be logged in to view attached files.Sziasztok!
Több, mint egy éve felvetett eddig megoldatlan kérdés megválaszolásához mutatok irányt.
1. Az eredeti kérdés mellékleteként megismert fájl „Adatok” munkalapjának „A” oszlopában felsorolt 22 darab terméktulajdonság nem szerepel minden termékhez tartozó tulajdonságlistában. Az „A50” cellában a „Névleges feszültség” szövegnek kellene szerepelnie. Ez könnyen javítható hiba. Azonban az ilyen típusú, az eredeti adatforrás szerkezetében mutatkozó rendellenes eltérések sok bosszúságok okozhatnak. Törekedjünk a szabályos szerkezetre! Ha sikerült elérni, hogy minden termék esetén, minden tulajdonság, mindig ugyanabban a sorrendben szerepeljen, akkor áttérhetünk a végső megoldást adó képlet megfogalmazására.
2. Transzponálást használva másoljuk át a terméktulajdonságok listáját egy új munkalapra!
3. Használjuk az INDIREKT(), az OSZLOP() és SOR() függvényt! A képlet:
=INDIREKT("Adatok!B"&(OSZLOP()+1)+(SOR()-2)*22)
Ezt a képletet kell vízszintesen elhúzni a terméktulajdonságok számának megfelelő (a példában a „V”) oszlopig , függőlegesen a termékek számának megfelelő sorig.
4. Végül erősen ajánlott a képleteket másolás és irányított beillesztés – értékek beillesztése utasítással konkrét értékekre cserélni.üdvözlettel
veraxAttachments:
You must be logged in to view attached files.Szia Gojo-Mann!
Elemezzük, hogy mit is kódoltál:
Private Sub Workbook_BeforeClose(Cancel As Boolean) If ThisWorkbook.ReadOnly = True Then
ha ez a munkafüzet csupán olvasási joggal van megnyitva…
ThisWorkbook.Saved = False
… akkor ez a munkafüzet NEM mentett státusszal bír.
ElseIf ThisWorkbook.ReadOnly = False Then
Egyébként ha ez a munkafüzet NEM csupán olvasási joggal van megnyitva…
ThisWorkbook.Saved = True
… akkor ez a munkafüzet mentett státusszal bír.End If End Sub
A fenti kódban …
– összekeveredett a .Save (mentsd el!) utasítás és a .Saved (el van mentve) tulajdonság,
– rosszul használtad a TRUE és FALSE logikai értékeket,
– az ElseIf helyett elegendő egy Else is.A fentieket helyesbítése után ezt a kódot kapjuk:
Private Sub Workbook_BeforeClose(Cancel As Boolean) If ThisWorkbook.ReadOnly Then ThisWorkbook.Saved = True Else ThisWorkbook.Save End If End Sub
Ezt is elemzem.
Ha ennek a munkafüzetnek a „csak olvasásra” tulajdonsága IGAZ, akkor tekintsünk rá úgy, mintha már mentett állapotú lenne. Egyébként – a lehetséges másik esetben – (tehát ha nem igaz az, hogy a „csak olvasásra” tulajdonság IGAZ lenne, azaz írási joggal van megnyitva) végezze el a munkafüzet mentését!Egy kis magyarázatot még hozzáfűzök az elágazás (If … Then … Else … End If) vezérlő feltétel vizsgálatához.
A ThisWorkbook .ReadOnly tulajdonsága logikai értéket ad vissza. Csak IGAZ (TRUE) vagy HAMIS (FALSE) értéke lehet. Ennél fogva a ThisWorkbook.ReadOnly kifejezés kiértékelésének eredményét (TRUE / FALSE) felesleges összehasonlítani egy logikai értékkel (TRUE =? TRUE: TRUE vagy FALSE =? TRUE: FALSE)üdvözlettel
veraxKöszönöm Imre!
Ez esetben… noha csak a Google Táblázatban tudtam kipróbálni, mégis javaslom a TRANSZPONÁLÁS() [ TRANSPOSE() ] és SZŰRŐ() [ FILTER() ] függvényből megalkotott tömbképlet használatát.
{=TRANSZPONÁLÁS(SZŰRŐ(szamok;SOR(szamok)<>SOR()))}
Itt a SZŰRŐ() [ FILTER() ] függvény végzi el azt a feladatot, amire a fentebb említett két másik függvény nem alkalmas. Ezután itt is a TRANSZPONÁLÁS() függvénytől várjuk az adatok végső elrendezését.
üdv’
veraxSziasztok!
Sajnos nincs Excel365 hozzáférésem, ezért nem tudom ellenőrizni, mégis azt kérem, próbáljátok ki az alábbi képletet.
=TRANSZPONÁLÁS(ELTÁVOLÍT(szamok;SOR();))
Úgy gondolom, hogy az ELTÁVOLÍT() [ DROP() ] függvény önmagában elvégzi az aktuális sor törlését a szamok névvel hivatkozott tömbből. Ezután már csak arról kell gondoskodni, hogy a tömb megmaradt elemei az eredeti függőleges elrendezésű lista helyett vízszintes elrendezésben jelenjenek meg.
Itt található egy videó az ÁTHELYEZ() [ TAKE() ] és az ELTÁVOLÍT() [ DROP() ] függvények használatáról.üdvözlettel
veraxSzia Gojo-Mann!
Bármelyik parancsgomb írja át Image1 vezérlő Picture tulajdonságát, egyúttal tárold el a kép forrására való hivatkozást! Nyomtatás előtt így mindig tudni fogod, hogy melyik diagramot kell nyomtatni.
üdv’
veraxSzia Gojo-Mann!
Két sorral elintézném a nyomtatást.
Sheets("WIP_heti").ChartObjects(1).Activate ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,TRUE)"
Az elsővel kijelölném a diagramot, a másodikkal kérdés nélkül küldeném nyomtatásra.
üdvözlettel
veraxSziasztok! Szia Gergő!
15-én 20:10-kor kérdezted, hogy van-e közzétett videó a több szintű érvényesítési lista készítés általam sugallt más módon való megvalósításáról. Eddig nem találtam. Nem állítom, hogy nincs. Mivel megüzented, hogy valami baj van a küldött fájllal, ezért most leírom a teendőket lépésről lépésre.Jelöld ki a „Menülépcső” munkalapot!
Jelöld ki az „A” oszlopot!
Adj nevet a kijelölt tartománynak! Írd a Név mezőbe: Forrás (Más nevet is adhatsz, csak következetesen használd a későbbiekben.)
Jelöld ki a „B” oszlopot!
Adj nevet a kijelölt tartománynak! Írd a Név mezőbe: Eredmény
Jelöld ki a „B1:B7” tartományt!
Adj nevet a kijelölt tartománynak! Írd a Név mezőbe: A_szintJelöld ki a „Lenyílók” munkalapot!
Jelöld ki a „B2” cellát!
Nyisd meg a Névkezelőt! (Ctrl+F3)
Hozz létre egy új nevet! Kattints az „Új …” feliratú gombra!
{Név: Lista_eleje;
Hivatkozás: =HOL.VAN(Lenyílók!A2;Forrás;0)}
Kattints az „OK” gombra!
Hozz létre még egy új nevet! Kattints az „Új …” feliratú gombra!
{Név: Lista_vége;
Hivatkozás: =DARABTELI(Forrás;Lenyílók!A2)+Lista_eleje-1}
Kattints az „OK” gombra!Jelöld ki az „A2” cellát és állíts be rá érvényesítést!
{Megengedve: Lista;
Üres cellák mellőzése: Bejelölve;
Legördülő lista: Bejelölve;
Forrás: =A_szint}
Jelöld ki a „B2” cellát és állíts be rá érvényesítést!
{Megengedve: Lista;
Üres cellák mellőzése: Bejelölve;
Legördülő lista: Bejelölve;
Forrás: =INDEX(Eredmény;Lista_eleje):INDEX(Eredmény;Lista_vége)}Állítsd be a „C2:D2” tartományra is a „B2” cellára beállított érvényesítést!
Jelöld ki a „B2” cellát!
Jobb alsó sarkánál fogva húzd át a „D2” celláig!
vagy
Jelöld ki a „B2:D2” tartományt!
Használd a jobbra kitölt (Ctrl+J) gyorsbillentyűket!
vagy
Egyszerűen használd a Másolás (Ctrl+C) és Beillesztés (Ctrl+V) parancsokat!üdv’
veraxSzia Gergő!
Imre azért kérdezte, hogy melyik Excel változatot használod, hogy annak a változatnak a függvénykészletével gazdálkodjon, amit te is használsz. Mivel otthon a 2016-os változattal próbáltad megnézni a csak későbbi változatokban elérhető függvényekkel készült táblázatot, természetes, hogy azokat a „furcsa” képleteket látod .
Az én fájlomban, ahogyan írtam, nem találsz képletet. Valóban csak „simán” beírt adatokkal találkozhatsz. Azonban ezt a „simán beírást” a fájlban lévő makró kódok intézik. Használd a menüszalag végén lévő Raktár fülön látható ikonokat! Lehet, hogy az általad használt Excel program Adatvédelmi központjában olyan beállítás van érvényben, amely miatt nem tudod futtatni a makró kódokat. Esetleg még figyelmeztetést sem kapsz, mindent automatikusan tilt.(?) Tehát, továbbra is biztatlak, hogy kattints az említett ikonokra, töltsd ki a megjelenő párbeszéd ablakokat!
Most csak gyorsan átfutottam a fájlod szerkezetének ismertetését. Hamarosan alaposabban is elmélyedek benne. Azonban fontosabb kérdés, hogy milyen kimenetekre van szükségetek?
Ezeket a kérdéseket próbáld összeszedni! Ha megszületett ez a lista és közzé is teszed, akkor érdemes együtt gondolkodni a további lépéseken.Korábban említettem, hogy más módon is létre lehet hozni a több – tetszőleges – szintű függő érvényesítést. Csatolom a példát. Bizonyára felismered a Menülépcső munkalapon lévő listában rejlő szabályt. Ezt a szabályt következetesen használva, minden szinten tetszőleges mértékben bővíthetők az érvényesítési listák. Arra is figyelj, hogy semelyik szinten nem lehet két azonos érték. (Egy megye nem lehet két régióban. Egy járás nem lehet két megyében. Egy település nem lehet két járásban.) Ez is tartalmaz makró kódot, de ennek a kódnak a lista képzéshez nincs köze. Pusztán arra használom, hogy amikor egy lenyíló értékét megváltoztatom, akkor az alárendelt érvényesítési listákat alaphelyzetbe állítsam.
üdv’
veraxAttachments:
You must be logged in to view attached files.Szia Imre! Sziasztok!
Köszönöm! Én is érdeklődve várom Gergő válaszát. 😉
Az IDBE Ribbon Creator shareware változatát (2 tabs, 3 groups, 10 controls) használom az alapok gyors elkészítéséhez, azután az így létrehozott fájl customUi.xml állományát módosítom, ahol szükséges. Néha más állományokhoz is hozzá kell nyúlnom. Erre példa, ha az IDBE Ribbon Creator által nem ismert ikonokkal szeretném különlegessé tenni a menüszalagot.
Sok munkát tettem bele? Nekem kedves időtöltésem az Excellel foglalkozni. Ez sok minden megmagyaráz. Remélem a példá(i)m nyomán többen kedvet kapnak, hogy mély barátságot alakítsanak ki a VBA nyelvvel! 🙂
üdvözlettel
veraxSziasztok!
Én is hoztam egy bemutató fájlt. Kizárólag makrókkal dolgoztam.
Megnehezíti az ember életét, amikor konstans értékek veszik át a táblázat képleteinek helyét. És sajnos, ennek esélye a táblázatot használó munkatársak számával arányosan növekszik. Ebben a táblázatban egyetlen képlet sincs, csak védett munkalapokra helyezett állandó értékek. Nem vagyok naiv. Tudom, hogy a lapvédelem – különösen jelszavas védelem nélkül – szinte semmit sem ér. Legalább a valóban véletlen átírások esetén képes segítséget nyújtani.A menüszalag végére helyeztem egy egyedi „Raktár” fület. Ebben további 3 + 1 csoportot hoztam létre. Az első a készletmozgások kezelését szolgálja. A másodikban a termékek nem mennyiségi tulajdonságainak kezelésére adódik lehetőség. A harmadik a lezárt termékek archiválását segíti. A negyediknek (+1) a fejlesztés, tesztelés során lehet hasznát venni. Minden ikonhoz rendeltem egy-egy rövid magyarázatot, amik akkor jelennek meg, ha az egérmutató egy kissé elidőzik az ikon felett.
Aki kíváncsi a „művemre”, annak a következő sorrendet ajánlom az ismerkedésre.
1. Terméktörzs karbantartás csoport. Vedd sorra – ahogy a szalagon egymás után következnek – az ikonokat!
Új termék: Nem szorul magyarázatra. Azonban érdemes megfigyelni, hogy lehetőség van egy-egy termék és több termék sorozatos rögzítésére is. Továbbá eldönthetjük, hogy kívánunk-e a létrehozással egyidejűleg kezdőértéket is adni.
Névváltoztatás: Csak a mennyiségi adattal még nem rendelkező (1-es státusz) termékek nevét változtathatjuk meg.
Státusz változtatás: Csak a már mennyiségi adattal rendelkező termékek (2-es státusz) állapotát változtathatjuk meg, tehetjük azokat zárttá (4-es státusz).
Termék törlés: Itt szintén csak a mennyiségi adattal még nem rendelkező (1-es státusz) termékek sorsáról dönthetünk.Ezután folytathatjuk az ismerkedést a Készletmozgások kezelése csoport két elemével. Az 1-es státuszú termék a nyitótétel rögzítésével egyidejűleg automatikusan a 2-es státuszba lép. A 2-es státuszú termék teljes elfogyásakor szintén automatikusan kerül a 4-es státuszba és válik ezzel zárttá.
A készletek változásait két munkalapon követhetjük nyomon. A „Napló”-ban az egyes változásokat időrendben szemlélhetjük, míg az összesített adatokat a Terméktörzs lapon olvashatjuk.Harmadik lépésben megismerkedhetünk a lezárt tételek archiválásával. Itt látszólag ellentmondok korábbi önmagamnak: „Adatokat nem törlünk, csak elérhetetlenné tesszük a további műveleteket, lezárjuk a hozzáférést.” Igaz, az eredeti helyéről valóban kitörlök néhány rekordot, de ezek nem vesznek el, mert két másik munkalapon nyernek végső nyugalmat.
Végül hozzáteszem, hogy természetesen ez a megoldás vélhetően csak közelíti a valóságos igény kielégítését. Előzetes, minden részletre kiterjedő megbeszélés nélkül nem is lehet másként.
üdvözlettel
veraxAttachments:
You must be logged in to view attached files.Szia Gergő!
Néhány kiragadott gondolatodra reagálok.„ezt az excelt nagyjából nyolcan fogjuk szerkeszteni”
Jól gondoltam. Ezért tartanám távol a munkalaptól a felhasználókat és irányítanám a munkájukat párbeszéd ablakokkal.„…ennek egy hátránya, hogy ha bejön egy már meglévő gyümölcs típusból egy új adagszámú, akkor bele kell könyvelni egyszer a raktárban lévő mennyiségekhez… illetve bele kell könyvelni a rejtett munkalapra.
A termékeket csak a Termék törzsbe kell felvenni. A mennyiségi adatok rögzítésekor először a Termék törzs egy-egy elemét választjuk ki, majd ezután rögzítjük a készlet mozgás jellegét (növekedés vagy csökkenés) és mennyiségi adatát. Ezzel biztosítjuk, hogy csak létező termékhez rendeljünk mennyiségi adatokat.„Illetve ha esetleg valamelyik adagszámú gyümölcs selejtezésre kerül, akkor innen manuálisan kell majd kitörölni.”
Adatokat nem törlünk, csak elérhetetlenné tesszük a további műveleteket, lezárjuk a hozzáférést.„…ha megjelenik egy teljesen új fajta „gyümölcs” akkor pedig egy új táblázatta kell bővíteni ezt a 3. munkalapot…”
Más szerkezettel is megvalósítható a függő lenyílók rendszere.„…az adagszám egy 10 jegyű számkód …”
Ezzel kapcsolatos kérdés: Előfordulhat-e, hogy ugyanaz az „adagszám” egynél több termékkel (almával és barackkal) is kapcsolatba kerüljön? Azt feltételezem, hogy ilyen nem fordulhat elő.„… ez később a végtelenségig fog bővülni …”
Időszakos zárásokkal észszerű határok között lehet tartani a táblázat méretét.„… elkészítettem már úgy, hogy ezeket kiszürkíti …”
Talán jobb lenne teljesen láthatatlanná tenni a lezárt tételeket. El tudom képzelni, hogy egy kritikus mennyiség felett milyen bosszantó lehet a passzív tételek kerülgetése.Természetesen ezek csak javaslatok. Ha valamelyiket mégis megfontolásra alkalmasnak tartod, de nem ismered a megvalósítás módját, írj bátran!
üdvözlettel
veraxSzia vnagygeri!
Nagyon szépen leírtad a feladatot. Én legalábbis érteni vélem.
Az első gondolatom, hogy ez egy tipikus adatbázis-kezelési példa. Ha mégis táblázatkezelővel szeretnéd megoldani, akkor is érdemes az adatbázis kezelés módszereit követni.
Nem tudhatjuk, hogy az idők során hány sorosra fog duzzadni a táblázatod. Képleteket, érvényesítéseket használva az Excelnek sok-sok felesleges számolási műveletet kell majd elvégeznie minden adatbevitel után. Ez az oka annak, amiért én nem képleteket, hanem makró kódokat, párbeszéd ablakokat használnék. Igaz, hogy kicsit több munkával jár a táblázat elkészítése, de a használat során ez a többlet befektetés gazdagon megtérül. Különösen, ha figyelembe vesszük, hogy a felhasználó nem a táblázat képletekkel feltöltött cellái között „bóklászik”, hanem egy határozottan kijelölt úton halad az adatrögzítés során. A rögzített adatokkal az Excelnek mindaddig semmiféle számolási dolga nincs, amíg nem utasítjuk arra. Nagy mennyiségű adat esetén ez jelentősen gyorsítja a működést.
Azonban ha a VBA nyelv teljesen idegen számodra, akkor képletekkel sem megoldhatatlan a probléma.
A „Raktárban lévő gyümölcsök” munkalap „D” oszlopába írandó képlet megalkotásához a következő rávezető segítséget adom:
– Tudod, hogy melyik készlet értéket (Vásárolt mennyiséget) szeretnéd csökkenteni.
– Tudod, hogy a csökkenteni kívánt Vásárolt mennyiséghez melyik Adagszám tartozik.
– Tudod, hogy ez az Adagszám az „Eladott gyümölcsök” munkalapon is megjelenhet.
– Tudod, hogy HA a keresett Adagszám akár egy, akár több sorban is jelen van az „Eladott gyümölcsök” munkalapon, akkor ÖSSZEADHATÓK (SZUMMÁZHATÓK) az ezekben a sorokban található „Eladott mennyiség” adatok.
– Tehát tudod, hogy melyik Vásárolt mennyiséget, mely Eladott mennyiség(ek összegének) értékével kell csökkenteni.A több szintű legördülő lista elkészítéséhez Imre (excelbazis) YouTube videói között találsz jól követhető segítséget.
Bármelyik utat választhatod, szívesen fogunk segíteni.
üdvözlettel
veraxNagyon szívesen!
Szia Gojo-Mann!
Egy Excel (Hívó.xlsm) fájlból egy másik (Meghívott.xlsm) fájlban lévő UserForm-ot úgy nyiss meg, hogy a másik (Meghívott.xlsm) fájlban elhelyezel egy makró kódot, ami betölti a UserForm-ot!
Ezt (Meghívott.xlsm fájlban lévő) a makró kódot futtasd a hívó excel fájlból!
Erre az …
Application.Run
utasítást használd!üdvözlettel
veraxSziasztok!
Akkor ez így meg is oldódott?
Akkor most lemaradtam valamiről!? …és a kimutatás táblából, hogyan kerülnek át az adatok az adatbázisba? Mert ez volt az eredeti kérdésfelvetésben. Ugye emlékezünk rá:
„…egy adatbázisba kellene összegyűjtenem.”
Továbbra is fontosnak tartom a pontos fogalom használatot, a pontos kérdés felvetést. Még akkor is, ha Imrének hatalmas rutinja van a rosszul megfogalmazott kérdések mögött húzódó valódi kérdések felismerésében. Hiszen az eredeti kérdésben még ezt is olvashattuk:
„…
Feladat:
„Termék ID” oszlopban az azonos számok (Termék ID-k) mellett lévő darabszámok ( teljes készlet) összeadása.
Röviden: Termék ID darabszámának összeadása.
…”
Nos: Ez így érthető is lenne … csak háááát, van vele egy kicsi baj. Az a kifejezés, hogy a „TermékID darabszámának összeadása” az jelenti, hogy összeszámláltatom (nem mást!) a TermékID oszlop sorait. Igen értem, Imre is értette már elsőre is.Később Csaba kiegészítette és pontosította a kérdést:
„Az a cél, hogy az azonos Termék ID darabszámai összeadódjanak, és az így összeadott TermékID-k, az egységárból már felszorozható az összértékeket megkapva.”A fogalmazás továbbra is pontatlan.
„…azonos TermékID darabszámai összeadódjanak…” (jelentése az egy-egy féle termék, TermékID oszlopban lévő sorainak darabszáma adódjon össze) helyett az azonos TermékID-khez tartozó készletek darabszámai összeadódjanak
„…az így összeadott TermékID-k…” (jelentése az egyedi termékek TermékID oszlopbeli sorainak száma) helyett itt is a „TermékID-khez tartozó készletek összesített darabszámai” lenne a helyes meghatározás
„…egységárból már felszorozható az összértékeket…” Szerencsére a képmelléklet segítségünkre van. Jól látható, hogy ezt a szorzást a táblázat „G” oszlopa már tartalmazza. Tehát teljesen felesleges volt eddig a darabszámokkal bajlódni. Nem a készletek darabszámait kell összeadni, hanem az „Áru nettó összértéke” oszlop TermékID-k szerint összetartozó értékeit.
Végezetül: a „megkapva.” szó valami további műveletet sugall. Például: „… összértékeket megkapva kördiagramon ábrázolni azokat.” Helyesen: megkapni.
Összefoglalva: A cél:Az egyedi TermékID-khez tartozó összesített nettó nyilvántartási értékek meghatározása.
Kulcskifejezések:
-egyedi TermékID
-…hez tartozó
-összesített
-nettó nyilvántartási értékek (a táblázatban: Áru nettó összértéke)
Tanulság: A pontos kérdésfelvetés szinte lépésről lépésre meghatározza a megoldást menetét is.
Biztosan sokaknak nem tetszik ez a „szőrszálhasogatás”. Azt azonban meg kell érteni és el kell fogadni, hogy a számítástechnikában nem engedhető meg a kétértelmű fogalmazás.(10 féle ember van. Az egyik, aki érti az informatikát és a másik, aki nem. valamint: Hibát ejteni nem bűn, beletörődni igen.)
A lényeg, hogy Csaba elkezdett barátkozni a kimutatásokkal.
üdv’
veraxSziasztok! Szia BCsaba!
Sokszor megtörtént már, hogy a kérdező vagy a kiinduló állapotról, vagy az óhajtott eredményről adott hiányos információt. Most is ez történt. Csak sejtésünk lehet arról, hogy milyen kimenetre vágysz.
„… egy adatbázisba kellene összegyűjtenem.”
Ez alapján azt gondolom, célravezetőbb az az út, amelyet Imre második lehetőségként javasolt. Tehát szerintem (is) használd a SZUMHA() függvényt! Ha ebben bizonytalan vagy, adj bővebb tájékoztatást az adatbázis szerkezetéről!
üdvözlettel
veraxSziasztok! Szia elaci!
Delila gyors válasza megoldotta a problémát. De ha nem szeretnél segédoszlopot beiktatni, akkor az Excel2019-es változatától már kihasználhatod a FŰZ() függvény tulajdonságát, amely tartományként megadott cellák értékeit is képes összefűzni.
1. =FŰZ(Forduló.$C$2:$G$5)
Az így előállított szövegben az 1. karaktertől kezdve keressük például az „A2” cella értékét.
2. =SZÖVEG.KERES($A2;FŰZ(Forduló.$C$2:$G$5);1)
A megkapott számot elosztjuk az egy sorban lévő karakterek számával (5×4) és egészszámmá kerekítjük felfelé.
3. =KEREK.FEL(SZÖVEG.KERES($A2;FŰZ(Forduló.$C$2:$G$5);1)/20;0)
Ezzel megkaptuk, hogy a „Forduló” munkalap melyik sorában szerepel a példa szerinti „A2” cella értéke. Ezután nincs más dolgunk, mint használni az INDEX() függvényt.
4. =INDEX(Forduló.$A$2:$A$5;KEREK.FEL(SZÖVEG.KERES($A2;FŰZ(Forduló.$C$2:$G$5);1)/20;0))Ezt a képletet azután szépen végighúzhatjuk az oszlopon.
Természetesen ez csak akkor működik, ha amint írtad, a keresett értékek (1001 és 1020 közé esnek) mindegyike ugyanannyi karakterből áll és ez a karakter mennyiség minden cellában ott van.
Tehát minden sor is ugyanannyi – itt 20 – karakterből áll.üdvözlettel
veraxSzia Ferenc!
Az első kérdésedre azt a választ adnám, hogy az Excel azért kérdez vissza, mert nem tudja, hogy akarod-e menteni a bezárandó fájlt. Igen, értem, hogy Ctrl+S billentyű kombinációt használtál.
A következő kérdés, hogy miért nem történik meg a mentés a Ctrl+S hatására?
Lehet, hogy több fájl is nyitva van? A Ctrl+S csak az aktív munkafüzet mentését kezdeményezi.
Lehet, hogy történik valami a Ctrl+S és a Bezárás kezdeményezése között? Fut valami makró? Módosítottál bármit bármelyik munkalapon?
Lehet, hogy valami rendszerszintű módosítás hatására a Ctrl+S már nem idézi elő a dokumentum mentését?
Készíts egy egyszerű makrót!Sub MentettE() MsgBox Application.ActiveWorkbook.Saved End Sub
Ctrl+S után futtasd és választ kapsz a kérdésre, hogy a mentés sikeres volt-e.
üdvözlettel
veraxSzia Adri!
Annyit még hozzátennék, hogy biztosan tudnánk neked segíteni az „adatbázis” szerkezetének optimalizálásában, az érvényét vesztett adatok kezelésében ha küldenél egy sematikus szemléltetést a jelenlegi állapotról.
üdv’
veraxSziasztok! Szia Adri!
Sajnos már a feladat megközelítésénél hibás elvet követsz.
A példád adatbázis kezelőért kiállt. Azzal pedig érdemes tisztában lenni, még akkor is ha táblázatkezelővel oldod is meg az adatbázis feladatát, hogy adatot nem törlünk. Megjelöljük, hogy érvényét vesztette, de nem töröljük. Ha így jársz el, akkor nem borul az „adatbázisod”, mindvégig megőrzöd az adataid integritását.üdvözlettel
verax2024-01-05-17:14 Hozzászólás: [Resolved] N-edik találat visszaadása O365 szűrő és oszlopválasztás függvénnyel #10357Sziasztok!
Sajnos nem mindenkinek áll rendelkezésére az Office365. Nekik sem kell búslakodniuk.
A fenti példafájlban az
=INDIREKT("A"&KICSI(HA($B$2:$B$6=$D$1;SOR($B$2:$B$6);"");$D$2))
képlet tömbképletként (C.S.E – azaz Ctrl+Shift+Enterrel) érvényesítve, szintén választ ad a kérdésre.új évi első üdvözlettel
veraxSzia Judith!
Az „A” oszlopban szereplő azonosítók minden esetben rendezettek? – mert a mintában ezt látjuk.
Ha az azonos azonosítók egy „csokorban” vannak, használhatod ezt a képletet:
… vagy inkább ne áruljam el? vezesselek rá? …üdvözlettel
veraxAttachments:
You must be logged in to view attached files.Sziasztok! Szia tboy72!
Mi lehet a hiba? Inkább: Melyek lehetnek a hibák?!
Az első észrevételem, hogy csak a legvégső esetben használj GoTo utasítást! Bár ha körültekintő vagy, írhatsz használható kódot, csak sokkal nehezebb áttekinthetővé tenni. Figyelni kell arra, hogy a GoTo utasítás nem elágazás. Odaugorhatsz a programkód cimkével jelzett helyére, de a feldolgozás tovább folytatódik (az összes többi cimkén át) az eljárás végét jelző utasításig. Ezért érdemes inkább külön eljárásokba „kiszervezni” a különböző feladatokat.
A következő, hogy bár Imre javasolta az adatok átszervezését, te ezt a munkalapon nem tetted meg viszont a VBA kódban már az új szerkezet szerint hivatkozol a cellákra.
If Cells(x, 4) … – a „Munka1” munkalap „D” oszlopában nincsenek adatok.Továbbá…
If Cells(x, 4) > „22:00” And Cells(x, 4) < „06:00” Then – hááát, ilyen időpont pedig nincs.A kategória változóidat (a, b, c, d és e) ugyan kiíratod a „G2:K2” tartományba, de nem (jól) gondoskodsz a változók értékének frissítéséről – csak nullázod azokat.
Elkerülte a figyelmedet, hogy a hétfőt másként kell kezelni, mint a többi munkanapot, tekintettel arra, hogy a hétfő előtt munkaszüneti nap van. (Vagy nem következetes az időszakok kategorizálása.)
Létrehoztad a változókat. Ez rendben van. Nem adsz nekik értéket. Ez nincs rendben. Később mégis adsz értékeket. Ez sincs rendben, hiszen megfeledkeztél róla, hogy az x változód a munkalapon lévő cellák sorértékét hivatott tárolni. Az x=0 (Cells(0. sor, 4. oszlop) érvénytelen címet eredményez.
Két hozzászólásodban ellentmondásba keveredtél (de legalábbis nem egyértelmű):
„Ha az időintervallumból esetleg átlóg egy következő kategóriába, akkor már oda kellene elkönyvelni, mint eredményt.”
és
„A … 07:30-16:00 idősávot vehetjük bázisidőnek, mert ha lefelé, vagy felfelé kilóg belőle akkor már a másik idősávba kellene számolni.”Egy másik ellentmondás a 6:00 és 7:30 közötti időszakkal kapcsolatos. A „Munka1” munkalapon színkódolt időszakok között nem szerepel, de a VBA kódban egyértelműen jelzed, hogy mi a szándékod vele. Ezért én is úgy kezelem ezt a másfél órát, hogy „hozzácsaptam” a 22:00 és 6:00 közötti időszak végéhez. Így tehát 22:00 és 7:30 közötti időszakról gondolkodtam.
A kezdő és a záró időpont is valamelyik tartományba fog esni. Melyik legyen a döntő?
Az is lehet egy szemlélet, hogy csak akkor tartozik egy bejegyzés a „bázis időszakba”, ha a kezdő és a záró időpont egyaránt az aktuális nap „bázis határai” között marad.
Ha
…a kezdő időpont a „bázis időszak” előtt van, de a záró már a „bázis időszakon” belülre esik, akkor az eredmény a „Bázis időszak előtt”
…a kezdő és a záró időpont a „bázis időszakon” belülre esik, akkor az eredmény a „Bázis időszaki”
…a kezdő időpont a „bázis időszakon” belülre esik, de a záró már a bázis időszak utánra, akkor az eredmény a „Bázis időszak utáni”Készítettem egy példát, amelyben csupán a záróérték szerint osztályozom az időszakokat. A fenti dilemmát feloldhatod az „áttekintő” munkalap sorainak helyes kitöltésével.
A „Statisztika” nevű makrót futtasd – illetve tanulmányozd, módosítsd igényeid szerint.
Mivel a fórum nem fogad *.xlsm fájlokat, ezért tömörítve csatoltam a példa fájlt.üdvözlettel
veraxAttachments:
You must be logged in to view attached files.Sziasztok! Szia Tmas!
Ha az eredeti címeket csupán ketté választott alakjukban szeretnéd megőrizni, nincs más lehetőséged, mint a makró kódokhoz fordulni. Képlettel ezt nem lehet megcsinálni, mert körkörös hivatkozás hibát eredményezne.
Kompromisszumos megoldás lehet, hogy képletekkel tagolod szét a címeket két oszlopra miközben az eredeti oszlopot bár megőrzöd, de elrejted.Nemrég volt egy hasonló kérdés egy másik fórumon is. Ott a mellékelt fájl megoldást jelentett.
üdvözlettel
veraxAttachments:
You must be logged in to view attached files.Szia Speter!
Több félreértés nehezíti az életedet.
A példád bár nem tartalmazza az általad helyesnek vélt eredményt, mégis sejthető, hogy mit várnál.
Ne feledkezz meg arról, hogy előbb a zárójelen belüli műveletet kell elvégezni!
Nem vagyok benne biztos, de azt hiszem, a kerekítés szabályát az általános iskola 3. osztályában tanultuk, a negatív számokról pedig csak a 4. osztályban. Ebből következik, hogy amikor a kerekítésről tanultunk a „felfelé” kerekítés látszólag a „jobbra kerekítést” jelentette, hiszen jobbra egyre nagyobb számok találhatók, mégis ahogy Imre szabatosan írta a nullától távolodó irányt kellene értenünk. Ez az elv a negatív számok esetén is érvényes. Tehát a „lefelé” a nullához közelítő, a „felfelé” a nullától távolodó irányt jelzi.
Ha nem így lenne, akkor furcsa kerekítési értékeket kapnánk a negatív számok esetén.
-0,9 < -0,1
kerekítés(-0,9;0) <=>? kerekítés(-0,1;0)
-0,9 (felfelé kell kerekíteni) akkor tehát 0?
-0,1 (lefelé kell kerekíteni) akkor tehát -1?
0 > -1Szia Vilmos!
Mivel nem látom a te fájlodat, csak vélelmezni tudom, hogy a példaként közölt fájlod „Munka1” munkalapjához hasonlóan a valós adatokat tartalmazó táblázatodban is az ötödik sortól kezdődnek az érdemi adatok. Én a példámban töröltem az első három üres sort. Akár ez is okozhatja a várttól eltérő működést. Most visszaállítottam az általad közölt szerkezetet, módosítottam a kódot és még egy kis meglepetést is helyeztem a menüszalag végére…üdv’
veraxAttachments:
You must be logged in to view attached files.Sziasztok! Szia Vilmos!
A példában szereplő képletek nem sérülnek, ha a teljes sort törli a felhasználó.
Nem tudom miféle képletek lehetnek az egyes sorokban, amelyek más sorok tartalmától függenek!?
Telefonkönyvben nem szokott ilyesmi előfordulni. Általában nem is indokolt képleteket használni ilyen nyilvántartásokban.
Továbbá attól, hogy lesz egy makró kód a már szükségtelen adatok törlésére, még nem lesz megoldva a sorok törlése elleni védelem; azaz nincs kiküszöbölve a véletlen törlés esete.
Tehát először érdemes átgondolni a munkalapok és a cellák védelmét. Következő lépésben a cellák (a sorok) közötti kapcsolatokat. Egyébként pedig adatbázisokból nem szoktunk adatsorokat törölni, hanem bejegyzéseket készítünk, amelyek jelzik hogy az adott rekord érvényét vesztette.
Azért ha mégis ragaszkodnál a makró kódos megoldáshoz, mellékelek egy egyszerű példát.üdvözlettel
veraxAttachments:
You must be logged in to view attached files.Ha módodban áll, törekedj arra, hogy tizedes tört részt nem tartalmazó egész számokkal dolgozz!
Nem lesz egyszerű dolgod.Sziasztok!
Ne bántsátok az Excelt! 😉
A számolási hiba a tízes és a kettes számrendszer különbözőségéből és a számábrázolás során használt helyiértékek véges számából adódik.További részleteket például itt is találsz.
üdv’
verax2023-10-06-21:09 Hozzászólás: [Resolved] munkalap egy cellája nyomtatási oldalszámának megjelenítése képlettel #10186Szia Miklós!
Értem. Így egészen más a helyzet, mint amire először gondoltam. Tehát egy időszakonként aktualizált „teljes” termékkínálatot papír alapon bemutató kiadványhoz szeretnél az abban szereplő cikkszámokat felsoroló tárgymutatót készíteni.
A Microsoft Word szövegszerkesztőben van beépített tárgymutató készítő funkció. Kiadványszerkesztésre egyébként is alkalmasabb egy szövegszerkesztő, mint egy táblázatkezelő.
Így tehát módosulhat az eredeti probléma felvetés is. A „Hogyan állapítsam meg az oldalszámot?” helyett inkább a „Hogyan exportáljam a táblázat adatait a szövegszerkesztőbe?” feladatot kellene megoldani.Azonban én továbbra is járható útnak tartom az előző javaslatomat. Igaz, hogy a változó méretű munkalapok miatt több kalibrálásra (oldaltörések sorainak és oszlopainak meghatározására) van szükség.
üdvözlettel
veraxAttachments:
You must be logged in to view attached files.2023-10-05-22:29 Hozzászólás: [Resolved] munkalap egy cellája nyomtatási oldalszámának megjelenítése képlettel #10182Szia Miklós!
Végeredményben miért is van szükséged a nyomtatási oldalszám meghatározására?
Szeretnéd gyorsan megüzenni a nyomtatódnak, hogy melyik oldalt nyomtassa?Én talán másképpen járnék el. Kiválasztanám a nyomtatandó termék(ek) cikkszámát, majd a hozzájuk tartozó adatokat összehordanám egy nyomtatási területre. Így nem a nyomtatandó oldal sorszáma, hanem a mindig ugyanazon nyomtatási terület adattartalma változna.
üdv
verax2023-10-04-20:10 Hozzászólás: [Resolved] munkalap egy cellája nyomtatási oldalszámának megjelenítése képlettel #10177Az eddigiekből erre tudtam gondolni…
Tekintsd meg a csatolmányt!üdvözlettel
veraxAttachments:
You must be logged in to view attached files.2023-10-04-19:02 Hozzászólás: [Resolved] munkalap egy cellája nyomtatási oldalszámának megjelenítése képlettel #10176Szia Miklós!
Esetleg mellékelnél egy fájlt, egy képet … valami szemléltetőt, egy „ebből szeretném, ezt az eredményt megkapni” félét?
Ha nem látjuk az adatszerkezetet, – nekem legalábbis – nehéz kitalálni, hogy pontosan mire is gondolsz. Lehet, hogy egy kis matekkal megoldható a kérdésed.
De így… hmm.. cikkszámok oldalszáma? … cella nyomtatási oldalszáma??
Továbbá megadni akarod a cella nyomtatási oldalszámát vagy megkapni? Nem mindegy. Fontos a pontos fogalmazás.üdvözlettel
veraxSziasztok! Szia Laszlosala!
VBA kód (makró) semmi esetre sem jöhet számításba?
verax
Sziasztok!
Felesleges megvizsgálni, hogy egy cella nem üres-e, majd ezt követően, hogy mi az ami benne van.
Jelen esetben elegendő azt ellenőrizni, hogy ami benne van, az egyezik-e az „oszlopfejjel”
Így tovább „karcsúsodik” a képlet. Például a „B2” cellába írt (majd onnan az „O” oszlopig és a szükséges sorokig „tovább húzott”) egyszerű HA() függvény választ ad a kérdésre:
B2 cellába:
=HA($A2=B$1;MOST();"")
üdvözlettel
veraxHoztam egy példát az eredeti kéréshez. Szöveg áthelyezése makró nélkül, képlettel… és nincs takarás sem.
Ehhez mit szóltok? 😀üdvözlettel
veraxAttachments:
You must be logged in to view attached files.1/a Kattints a kód If Target.Column …. sorára jobb gombbal.
1/b Áll rá a kód If Target.Column …. sorára és nyomd meg a helyi menüt hívó billentyűt a billentyűzeten. (nálam a jobb oldali Ctrl-tól balra van)2. A megjelenő helyi menüből válaszd a „Toggle” parancsot majd a „Breakpoint”-ot. Ezzel egy töréspontot helyeztél el ebben a sorban. Itt meg fog állni a kód futása. Innentől az [F8] billentyű nyomogatásával tudsz egyesével tovább lépni a további sorokon. Így lehetőséged nyílik arra, hogy lépésről -lépésre megfigyeld, hogy mi is történik.
3. Amikor eleget láttál, csak kattints a jelölésre és már el is tűnik.
Kérdések:
1. „C1” cella képletének hol vannak az előzményei?
2. „C1” cella (és társai) minden esetben képletet tartalmaz(nak)?Válaszok:
1. Azokat a cellákat kell figyelni, amelyek a „C1” cellában lévő képlet értékének változását előidézik, vagy …
2. segíthet a Worksheet.Calculate() eseménye is. Ez utóbbit is a (példa szerinti) „Munka1” munkalap kódlapjára kell elhelyezni, ahogyan a Worksheet_Change() esemény kódját.3. De nemes egyszerűséggel elhelyezhetsz valahová egy nyomógombot és kattintással indítod a kódot.
Szia NIN!
Delila kódja egyszerű és nagyszerű. Néhány apró változtatást javasolnék:
1. Az Application.EnableEvents sorok elhagyhatóak
2. Hasznos lenne egy ClearContents utasítással a cellába írás előtt takarítani.
3. … (a csatolt példa szerint)További kérdésem: Mi a célod azzal. hogy az „A” oszlopban lévő szöveget átmásolod / áthelyezed ?
(ezt sem tisztáztuk
Tehát:
1. az „A” oszlopban is megmarad a szöveg és egy másolata keletkezik ugyanazon sor másik oszlopában (?)
2. a hivatkozott érték „A” oszlopból törlődik és ugyanazon sor „B” oszlopában meghatározott eltolással egy másik oszlopban, egyetlen új helyen jelenik meg (?)
)Igen írtad: „Rajzszámok és a hozzájuk tartozó adatok strukturális kialakítása a cél.”
A csatolt példán a rajzszám lenne az „Alma” és a hozzá tartozó adatok a „Körte-Banán” ?A cellákban elhelyezett Megjegyzésekhez, esetleg Adatok – Érvényesítés – Figyelmeztető üzenetként tárolt adatokhoz mit szólnál?
Csatolok egy példát. Nézegesd! 😉üdvözlettel
veraxAttachments:
You must be logged in to view attached files.Szia Adri
Abból, amit írtál azt feltételezem, hogy az „Állapot” munkalap „D” oszlopából hiányoznak olykor az ID (érték) adatok. A „C” oszlop mindig tartalmazza a „Nyers export” munkalap „D” oszlopának PLU azonosítóit. Így tehát „C” oszlopot segítségül hívva megállapíthatjuk utolsó, még adatot tartalmazó celláját és ebből az értékből indulva egy egyszerű, de praktikusan visszafelé haladó ciklussal végig lehet lépkedni a 2. sorig. Közben pedig minden körben megvizsgáljuk az azonos (i-edik) sorban, de a „D” oszlopban lévő cella értékét. Ha ez üres vagy nulla értékű, akkor töröljük az aktuális sort. Valami ilyesféleképpen:
Sub ÜresIDÉrtékSorokTörlése () dim i, utolsóSor as Integer utolsóSor = WorksheetFunction.CountA(Range("C:C")) For i=utolsóSor to 2 step -1 If Cells(i, 4)=0 Then Rows(i & ":" & i).Select Selection.Delete Shift:=xlUp End If Next i End sub
Na persze, … a makró futása előtt (vagy a futás elején) gondoskodni kell arról, hogy a soron következő utasítások az „Állapot” munkalapon hajtódjanak végre. Egy ügyesen elhelyezett
Worksheets("Állapot").Select
parancs éppen megfelelő erre a célra.
üdvözlettel
veraxSzia NIN!
Munkalap függvények nem tudnak másik celláknak értéket adni, csak saját maguk értékét változtatják meg.
Mi az oka annak, hogy az „F1” cellában nem lehet képlet? Ha erre válaszolsz esetleg találunk „kerülő megoldást” …üdvözlettel
veraxSzia kovacsl1968!
A dátumok tulajdonképpen sorszámok, csak nem sorszámként vannak megjelenítve. Ennél fogva mint bármely két szám, a két dátumérték is kivonható egymásból.
Egy példa (bár itt egy oszlopba és nem egy sorba írtam a dátumokat… 😉A1: =MA() [=2023.06.07]
A2: 2023.01.01
A3: =A1-A2 [=157]Az még előfordulhat, hogy a 157 helyett 1900.06.05 dátumértéket jelenít meg a gép. Ettől sem kell kétségbe esni! Állítsd be A3 cella számformátumát „általánosra” és már láthatod is a 157-es értéket.
üdvözlettel
veraxKedves Adri!
Mellékeltem egy lehetséges megoldást. Nézegesd!
üdvözlettel
veraxAttachments:
You must be logged in to view attached files.Kedves Adri!
Tábla végére beszúrni sorokat? Ott eleve vannak sorok. Tudnál egy példa fájlt mellékelni? Kézzel elkészíted az előtte – utána állapotokat és akkor már látjuk, hogy mit is kellene automatizálni.
(Egyébként a makró rögzítés lehetőséget használva , majd a létrejött kódot elemezve sok tapasztalatot lehet szerezni.)
Táblázatként formázott adattárolásban gondolkodtál már? Azzal a megoldással egy újabb adat felvitelekor automatikusa bővül a kezelt tartomány.Az előre meghatározott mennyiségű sor beszúrására két lehetőség is kínálkozik. ÉS hogy mitől tud lefutni az utasítás? Kattintásra, munkalap eseményre (változásra) vagy ahogy magad is sejted, akár kilépéskor.
üdvözlettel
veraxKedves Adri!
Tábla végére beszúrni sorokat? Ott eleve vannak sorok. Tudnál egy példa fájlt mellékelni? Kézzel elkészíted az előtte – utána állapotokat és akkor már látjuk, hogy mit is kellene automatizálni.
(Egyébként a makró rögzítés lehetőséget használva , majd a létrejött kódot elemezve sok tapasztalatot lehet szerezni.)Az előre meghatározott mennyiségű sor beszúrására két lehetőség is kínálkozik. ÉS hogy mitől tud lefutni az utasítás? Kattintásra, munkalap eseményre (változásra) vagy ahogy magad is sejted, akár kilépéskor.
üdvözlettel
veraxSzia kovacsI1968!
Már nagyon régi a kérdés.
Range (Cells(1,1), Cells(27,10)) ' A1:J27
„…csak az utolsó hét sort szerettem volna másolni…”
Range (Cells(1,1), Cells(7,10)) ' A1:J7
Hát, … ez így éppen az első(!) hét sor.
Az utolsó hét sor így nézne ki:Range (Cells(21,1), Cells(27,10)) ' A21:J27
üdvözlettel
veraxSzívesen… azonban
A sormagasság beállítása munkalap esemény, ezért hiába számoltatnád ki az optimális megjelenítéshez szükséges sorok számát. Ettől még nem történne semmi érdemi változás. Kódolni kell. Ha pedig kódolsz, akkor arra az esetre léteznek megoldások.
Én játszottam egy kicsit. Nem állítom, hogy hibátlan, de legalább lehet tanulni a hibáimból. 😉üdvözlettel
veraxSzia kovacsI1968!
Lépésenként
Előkészületek:
1. Jelöld ki azt a bizonyos „X1” cellát!
2. Kezdőlap – Formátum – Cella formázása… Védelem fülön vedd ki a „Zárolt” jelölő négyzetből a pipát!
3. Állítsd be „X1”-re érvényesítést. Ezt az Adatok menü – Érvényesítés parancsával teheted meg. Alt+Y, V, R
3/a A megjelenő Beállítások fülön a „Bármilyen érték” helyett válaszd a „Lista” kifejezést!
3/b A Forrás mezőbe írd ezt: NYITVA;ZÁRVA ezután [OK]Kódírás:
1. Alt+F11. Ezzel beléptél a Microsoft Visual Basic felületre.
2. Kattints duplán annak a munkalapnak a nevére, amelyiken az általad említett „X1” cella tartalmát szeretnéd figyelni! Ezzel megnyílik a kódszerkesztő ablak.
3. A „(General)” szöveg lenyílóját változtasd át – nyisd le, válasz ki – „Worksheet”-re!
4. Létre jött egy …Private Sub Worksheet_SelectionChange(ByVal Target as Range) End Sub
kód részlet. Az üres sorban villog a kurzor.
5. Ide írd a következő utasításokat:
On Error GoTo HibaEsetén: If Sheets("Munka1").Range("X1").Value="NYITVA" Then ActiveSheet.Unprotect Else ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End If HibaEsetén:
* természetesen a Munka1 név helyett a saját unkalapod nevét írd be!
6. Bezárhatod a kódszerkesztőt és dolgozhatsz a munkalapon. Feltéve hogy NYITVA vagy. 😉üdvözlettel
veraxSzia Adri0324!
…enFeri alapötletéből elindulva…
A sortörés karaktere a nem nyomtatható karakterek közé tartozik. A nem nyomtatható karakterek eltávolítására létezik egy függvény. Tisztít()
Ha nincs a cellában más nem nyomtatható karakter(a szóköz nem számít annak), akkor ezzel a képlettel megszámlálhatod a sortöréseket: =Hossz(szöveg)-Hossz(Tisztít(szöveg))üdvözlettel
verax- A hozzászólás módosításra került: 1 year, 7 months telt el-verax.
Sziasztok!
Imre megoldása nálam működik (és tetszik 🙂 ). Azonban elgondolkodtam azon, hogy mi történik, ha nem az első karakterre kell rákeresni …
{=SZORZATÖSSZEG(HAHIBA(SZÖVEG.KERES($C$2;C5:C11)*0+1;0)*D5:G11)}
Így ha a SZÖVEG.KERES() bárhol megtalálja a keresett karaktert, szöveg részletet, …
akkor a függvény értéke mindig 1,
ha nem találja sehol – hiba lenne a visszatérési érték – …
akkor pedig 0 (nulla).… hát az igaz, hogy itt (Excel2016) viszont kell a CSE (Ctrl+Shift+Enter).
… ja! És nem kell * (csillag) a C2 cellába.Amíg ezeket írtam, balimart is éppen erről a „problémáról” – nem biztos, hogy az első helyen áll a szövegben a keresett karakter, szöveg részlet. Akkor nem hiába gondoltam tovább a kérdést! 🙂
üdvözlettel
verax- A hozzászólás módosításra került: 3 years, 10 months telt el-verax.
Ez számomra is egy értékes információ! Erről sem tudtam eddig. (Köszönöm! 🙂 )
Még jobb, hogy már a 2007-es változatban is elérhető.
Ha valaki magyar nyelvű Excel környezetben a képletmegadás ezen módját szeretné használni, akkor viszont célszerű az alábbiak szerint fogalmazni:.Cells(iRow, 9).FormulaLocal = "=HAHIBA(FKERES($C" & iRow & ";Segédtáblák!$I$4:$J$174;2;0);""0"")"
üdv
verax🙂 Mi végleges a világon? 🙂
Itt egy másik megoldás INDIREKT() nélkül – hiszen a „C” oszlop a Cells(iRow,3) kifejezésben tulajdonképpen állandó.
.Cells(iRow, 9).Formula = "=IFERROR(VLOOKUP($C" & iRow & ",Segédtáblák!$I$4:$J$174,2,0),0)"
illetve, ha ragaszkodsz a „0” hiba esetén kimeneti értékhez, akkor kettőzött idézőjelet kell használni – amint az a korábbi javaslatomban is látszik:
.Cells(iRow, 9).Formula = "=IFERROR(VLOOKUP($C" & iRow & ",Segédtáblák!$I$4:$J$174,2,0),""0"")"
Ami fontos, hogy tagoló karakterekként itt vesszőt(,) kell használni és nem pontosvesszőt(;)!
üdv
verax… és még a szóközökről is illik gondoskodni … 🙂
„=IFERROR(VLOOKUP(INDIRECT(ADDRESS(” & irow & „,9,1)),Segéd!R4C9:R174C10,2),””0″”)”és ez végleges 🙂
üdv
veraxcsak a lényeg maradt ki 🙂 a változó nevét & jelekkel kell a két szövegrészlet közé befűzni:
„=IFERROR(VLOOKUP(INDIRECT(ADDRESS(„&irow&”,9,1)),Segéd!R4C9:R174C10,2),””0″”)”Sziasztok!
Ajánlom az alábbi képletet szíves felhasználásra: „=IFERROR(VLOOKUP(INDIRECT(ADDRESS(irow,9,1)),Segédtáblák!R4C9:R174C10,2),””0″”)”üdvözlettel
verax🙂 Na ne má’!
DBF Commander sincs a gépeken. Megoldás: Letöltés
„Nincs Access a gépeken” Megoldás: PenDrive!?Szívesen! 🙂
Sziasztok!
Nem tudom, csak kérdezem, hogy egy Excel – Access – DBF kétlépcsős eljárás nem segít?
üdv
verax… ezen pedig nem csak nézegetni lehet, de ki is lehet próbálni 🙂
üdv
veraxAttachments:
You must be logged in to view attached files.Sziasztok!
Az előbb rosszul elnevezett képet csatoltam.
Itt a helyesbítés…üdv
veraxAttachments:
You must be logged in to view attached files.Sziasztok!
Az ilyen típusú kérdések megoldására egy lehetőség, hogy egy segédoszlopot vezetünk be, amelyben az ÖSSZEFŰZ() segítségével soronként létrehozunk egy-egy olyan értéket, amely immár két paramétert tartalmaz. Ezzel a módszerrel több feltétel egyidejű teljesülését lehet vizsgálni egyetlen keresési feltétellel.
Legyenek a „D” oszlop cellái rendre … (delila képmelléklete alapján)
D2 = Áru1Vevő1;
D3 = Áru2Vevő2;
…
D6 = Áru5Vevő2;
…Ha ezzel megvagyunk, kicsit vizsgáljuk meg a delila által javasolt tömbképletet! Nagyon jó irányt mutat, de érdemes egy kicsit igazítani rajta…
Írjuk az „E3″ cellába az
=HA(C3-MAX(HA($D$2:D2=D3;$C$2:C2))>400;”nincs előzmény”;C3-MAX(HA($D$2:D2=D3;$C$2:C2)))
képletet! (Ne felejtsük, hogy a tömbképletet Ctrl+Shift+Enter kombinációval kell érvényesíteni.)
Ezt fogjuk látni:
{=HA(C3-MAX(HA($D$2:D2=D3;$C$2:C2))>400;”nincs előzmény”;C3-MAX(HA($D$2:D2=D3;$C$2:C2)))
}
Húzzuk le a képletet addig a celláig, ameddig szükségünk van rá! Egyszerűbb megoldás, ha a kijelölt „E3” cella jobb alsó sarkában látható kis fekete négyzetre duplán kattintunk.üdvözlettel
veraxköszönet delilának! 🙂
Szia antalmate!
Az eredmény, a bevétel és a kiadás különbsége. A nullánál nagyobb eredmény a nyereség, a nullánál kisebb eredmény a veszteség. A bevétel, a pénzkészlet növekedése, a kiadás a pénzkészlet csökkenése. De ezt te is tudod, mégis fontos tisztázni, mert ez segít a megfelelő számítási mód megtalálásában.
Az árukészlet változása nem része az eredménynek. Tehát a tárgyakat nyugodtam kihagyhatod a számításaidból. Erre mondhatod, hogy „dehát azért vagyok veszteséges, mert vásároltam egy halom tárgyat, amelyek most eladásra várnak …” Igen ám, de amint te is írtad, nem tudható biztosan, hogy mennyi lesz azon tárgyak majdani eladási ára.Induló vagyonod:
100 RF
30 RC
30 S1. Vásárolsz „A” tárgyat
kiadás:
4 RF
1 RC
Ez kiadás.
Ha most számolnád ki az eredményt:
Eredmény = Összes bevétel – Összes kiadás = 0 – 4RF1RC = – 4RF1RC (veszteség)
(Igaz, van árukészleted. … De tudod-e, hogy mennyiért fogod eladni?)2. Eladsz „A” tárgyat
bevétel:
4 RF
Ez bevétel.
Ha most számolnád ki az eredményt:
Eredmény = Összes bevétel – Összes kiadás = 4RF – 4RF1RC = – 1RC (veszteség)3. Vásárolsz „B” tárgyat
kiadás:
5 RF
Ez kiadás.
Ha most számolnád ki az eredményt:
Eredmény = Összes bevétel – Összes kiadás = 4RF – 9RF1RC = – 5RF1RC (veszteség)4. Eladsz „B” tárgyat
bevétel:
6 RF
Ez bevétel.
Ha most számolnád ki az eredményt:
Eredmény = Összes bevétel – Összes kiadás = 10RF – 9RF1RC = 2RC (nyereség)és így tovább…
Tehát még egyszer: az árukészlet változása nem része az eredménynek. Az árukészlet változása közben realizált pénzmozgásokból számold az eredményt!üdvözlettel
veraxSzia Attila72!
A kilencvenből öt szám sorsolás esetén ahhoz, hogy biztosan(!) legyen telitalálatos szelvényed
(90! / 85!) / 5! azaz (90×89×88×87×86) / (1×2×3×4×5) azaz 43 millió 949 ezer 268 kombinációt kell megjátszanod. Tehát a nálunk legismertebb ötös lottónak ennyi különböző kombinációja létezik.
Számold ki! Ha csak tíz szám közül húzol ötöt, arra hány féle megoldás létezik? (0h0S)
Tehát feltételezve, hogy van egy olyan dekádod amely biztosan(!) tartalmazza az öt nyerő számot, akkor abból a tíz számból ennyi variációt megjátszva lesz egy telitalálatod.„A szerencsejáték a vesztesek sportja.” Egy-egy szerencsejáték szervező célja mindig(!) az, hogy a hatalmas mennyiségben megmozgatott pénztömegből legalább egy viszonylag szerény jutalékot a maga számára eltegyen. Ennél fogva olyan matematikai megoldásokat alkalmaznak, ahol nincs szisztéma a biztos nyerésre. Biztosan ismered a roulettre kitalált biztos(!)nyerés stratégiáját. Kezdd a legkisebb téttel és ha nem nyertél, duplázd meg! Igen ám, de a játéktermek szabályzata nem enged bármekkora nagy tétet megjátszani. 🙁 …
Ajánlott filmirodalom: Catch Me If You Can
Egyébként pedig: SOK SIKERT!Szia Attila72!
Igen, az Excelben valóban lehet „véletlen” számokat generálni.
Használd az =VÉL() függvényt.
Az előző kérdésedben az egytől húszig terjedő egész számok tartományát vizsgáltad. Annál a példánál maradva – és VÉL() függvény visszatérési értékét (tizedestört, amely nagyobb egyenlő nulla vagy kisebb egyenlő egy lehet) figyelembe véve:
=KEREKÍTÉS(VÉL()*19+1;0) képletet szükség szerint többször használva kaphatsz megfelelő számú tippet.üdvözlettel
veraxSziasztok!
Én is Imre megoldásához hasonlóval hozakodok elő. Azonban én csupán a feltételes formázásra hagyatkoztam.
A korábban sorsolt számokat tartalmazó teljes tartomány (B2:K51) egyidejű kijelölése mellett az =B2=$B$1 (a többi szám esetén $C$1, $D$1, …) képletet használtam.
A formázás ízlés szerint változtatható. 🙂üdvözlettel
veraxAttachments:
You must be logged in to view attached files.Örülök, hogy tovább gondoltad a javaslatomat 🙂 Nekem is tetszik!
üdv
verax -
SzerzőBejegyzés