Hozzászólások
-
SzerzőBejegyzés
-
Szia!
Hogy az adatok honnan jöttek, azt nem fogom tudni megmondani.
A technika, amit láttal, az az adott munkalap vagy munkafüzet „Change” eseményéhez rendelt eseménykezelő volt.Ez makróprogramozás téma.
meg lehet mondani az Excelnek, hogy ha megváltozik egy cella értéke, akkor mi történjen.
A Te esetedben megjelenített egy felhasználói űrlapot, amire előtte betöltötte annak az alkatrészben az adatait.
valószínűleg az azonosítója alapján kereste meg egy adatbázisban.
de hogy az mi volt, sé hol volt, azt csak annak a rendszernek atudói tudnák megmondani. Lehet, hogy egy távoli szerverről szedte le real-time.Imre
Kicsit utánanéztem a dolognak. Nem elsőre, de találtam egy Topic-ot, ami ezzel foglalkozik.
Itt vanEddig személyesen nem találkoztam ezzel a problémával, de úgy tűnik létezik.
Valószínűleg Excel 2013 BUG. Megkockáztatom, hogy ezen belül a 64 bites verzió hibázik, mert azzal szoktak bajok lenni.A központi szerver, amit említettél, milyen oprendszert futtat?
Távoli asztallal éred el?
64 bites Excel fut rajta?Nem találtam megoldást a dologra, csak azt, hogy Ne Excel 2013-ban csináld a rendezést.
Magánvéleményként még lenne ötletem, bár inkább érdekes kísérlet, mint valódi ötlet.
Ha a 2013-hoz feltennéd a PowerQuery bővítényt, és azzal olvasnád be az adatokat a rendezetleg táblázatból, és a PowerQuery-vel rendeztetnéd. Kíváncsi lennék az eredményre.Imre
Mit értesz azon, h nem megy?
Tölts fel mintát!Elvileg úgy van, hogy ha az add in-t engedélyezted, akkor az editorban a Project explorer ablakában (Ctrl-R) látszik az add-in, mint egy munkafüzet, vagy mint a PERSONAL.XLSB.
Ha itt szerkeszted a kódot, akkor menteni is lehet.
Ha itt is azt mondja, hogy read only, akkor még az lehet, hogy a fájl maga írásvédett lett valahogy.
Keresd meg a fájlrendszerben, és jobb klikk/tulajdonságok/írásvédett ki/be. Ezalatt természetesen ne fusson az Excel.
Hogy sikerült?
Imre
Szia!
Itt a javítás. Azt vizsgálja, hogy a „Total” szó mellett kettővel jobbra lévő cella üres-e.
Ha igen, akkor csak egy oszlop van, különben a szokásos.
Kipróbáltam, megcsinálta.Imre
Attachments:
You must be logged in to view attached files.Az a baj, hogy nem az oszlopokra hivatkozik a képlet, hanem csak a fejléc celláira.
Ez van ott most:
=COUNTIFS(Táblázat1[[#Headers];[1)Neme:]];$A11;Táblázat1[[#Headers];[7)Hallott már reform ételeket értékesítő éttermekről? (egészséges ételeket értékesítő éttermek)]];B$2)
Ennek kellene lennie:
=COUNTIFS(Táblázat1[1)Neme:];$A11;Táblázat1[7)Hallott már reform ételeket értékesítő éttermekről? (egészséges ételeket értékesítő éttermek)];B$2)
Máris kijön az 57-es eredmény
Ha jól látom, csak azt próbálgatjátok, h oszlop címzés helyett hogy lehetne struktúrált hivatkozással, táblázatban.
Az a baj, hogy ha egy struktúrált hivatkozást elmásolsz jobbra, akkor az oszlopok követni fogják a másolást. Tehát nem olyan egyszerű lekötni az oszlopokat.
Van rá megoldás, de nem túl triviális.Imre
Nem értem pontosan mit kérdezel, de a megtalált szövegrészt kicseréli arra, ami a párja a segédtáblában. Szóközökkel nem foglalkozik.
Legegyszerűbb,ha kipróbálsz mindenféle esetet, és ha kérdés merül fel, akkor szólj.
Legyen minta munkafüzet, amiben próbálkozol.Imre
Jó helyre tetted 🙂
Úgy működik, mint egy Excel munkalap függvény, tehát egy üres cellába állsz, és utána
Egyik lehetőség, hogy:
1. megnyomod az fx gombot a függvény beillesztéséhez
2. kategória: felhesználói
3. Ott kiválasztod ezt a függvényt
4. kattintgatással megadod a paramétereket úgy, ahogy a fenti képen csatoltam.Másik, gyorsabb lehetőség
1. Beírod, hogy: =subst_multiple(
2. fx vagy Ctrl+A
3. Megadod a paramétereketha megvan egy cella, akkor lehúzhatod az oszlopban, ha a módosítandó szövegeid oszlopban vannak.
FONTOS Info: A cserélendő listának egyedinek kell lennie. Ha lenne két vagy több olyan, amik ugyanúgy kezdődnek, vagy részben tartalmazzák egymást, akkor nem biztos, hogy jó cserét csinál.
Ha ilyenbe ütköznél, akkor kicsit módosítani kell a függvényt, hogy az első cserénél ugorjon ki a ciklusból, illetve a cserélendőket hosszuk szerint növekvőbe kell rendezni.
Meg még lehet vele egyéb gond is, ez a használat során fog kiderülni.
Kezdetnek biztos jó lesz.???
Imre
Szia!
Én azt csinálnám, hogy először cserével lecserélnék minden sortörést valami olyan karakterre, ami nem szokott előfordulni a szövegekben. Pl. csillag (*)
Ezután szövegből oszlopokkal már szétdobhatod egymás mellé.Az Alt+ENTER-nek a Ctrl+J a kódja, ha keresés-cserében gondolkodunk.
Ez jó lehet?
Imre
Szia!
ha össze tudsz rakni egy két oszlopos megfeleltetési táblát, hogy mit mire kell cserélni, akkor abból már lehetne dolgozni.
Összedobtam neked egy UDF-et.
Egy külön munkafüzetben tedd egy modulba, majd mentsd el.
A munkafüzet legyen nyitva, úgy tudod használni.Function subst_multiple(originalstring As String, findstrings As Range, subststrings As Range) As String Dim f As String Dim r As String Dim i As Long If findstrings.Rows.Count = subststrings.Rows.Count Then For i = 1 To findstrings.Rows.Count f = findstrings.Cells(i) r = subststrings.Cells(i) If InStr(originalstring, f) <> 0 Then originalstring = Replace(originalstring, f, r) End If Next subst_multiple = originalstring Else subst_multiple = "#Find and replace arrays must have the same size!" End If End Function
Majd szólj, hogy milyen…
Imre
- A hozzászólás módosításra került: 8 years, 1 month telt el-horvimi.
Szia!
Kicsit átalakítottam a képletet, hogy szövegre működjön.
Mindkettőre egyszerre nem tud, mert teljesen más képlet kellett szövegre.Szövegtöredéket keres a nevekben, nem kell, illetve nem szabad használni a joker karaktereket, azt nem érti, de nem is kell.
Ezt kerested?
Imre
Attachments:
You must be logged in to view attached files.Szia!
Ritkán csinálok ilyet, de volt kedvem hozzá.
Mellékesen szörnyű a formátum, részvétem…Szóval azt találtam ki, hogy végigkeresem az első oszlopot a „Totál” szavakra.
Az első kivételével minden „Totál-t” tartalmazó cella mellett kezdődik az átmásolandó tartomány, és a vége 12 sorral feljebb, annak a sornak a végén van.
Tehát ha „item” nevű range változóban megvan, hogy hol találta a „Totál” szót, akkor a másolandó tartomány így fogható meg:Set current_range = Range(Item.Offset(0, 1), Item.Offset(-12, 1).End(xlToRight))
Ezt másolni kell a tetején lévő folymatosan bővülő fejléc vége utánhoz.
Kb ennyi az algoritmus.
Az összeillesztésekhez tettem egy függőleges vonalat. ha nem kell, kiveheted.
Feltöltöttem
Ha OK, jössz egy sörrel.
Imre
Attachments:
You must be logged in to view attached files.Leprogramozni nem lesz időm.
Ha feltöltesz egy konkrét mintát, és ugyanabban a fájlban egy másik lapon kézzel egymás mögé másolva, hogy mit szeretnél látni megoldásnak, akkor talán jobban megértem a problémát, és tudok segíteni az algoritmusban.
Az összemásolt verzióban esetleg színezhetnéd a különböző forrásból érkezett darabokat.
imre
Galk!
Ez így rendben van, és ha Zsuzsa erre gondolt, akkor OK.
Én úgy értettem, hogy egy hónap adatait szeretné látni csak.
Tehát az augusztusi forgalom, és mellette augusztusig az összes.
Azért gondoltam ezt, mert a csatolt megoldás haladó szinten egy alap dolognak számítHa PIVOT-ban szűrsz egy hónapra, akkor a göngyölített is csak az egy látható értéket mutatja, aminek göngyölített összege ugyanaz lesz.
De lehet, hogy túlgondoltam.
ha Zsuzsa még ránéz, majd megmondja, mi volt a feladat.
Nagyon köszi!
Imre
Szia!
Ha az egymás mellé másolt adatok, és a végén a képletek is kellenek, akkor ezt makróval lehet megcsinálni. Feltéve, hogy mindig ugyanott vannak a forrástáblák, vagy könnyen megtalálhatók.
Ha csak az eredmény kell, ami tartalmazzon az azonos pozícióban lévő cellák összegét, akkor egyszerű adatösszesítésről (konszolidáció) van szó, amihez az Excelnek van beépített eszköze.
Kipróbáltam az általad küldött mintán, teljesen rendben van. (Adatok lap -> Összesítés parancs)Azt írja, hogy minden forrásnak és az eredménynek is külön munkalapon kel lennie, de ez nem igaz.
Kb itt a munkamenet:
1. A forrás táblákat tartalmazó lapon kijelölsz egy cellát, ahová az összesített adatokat szeretnéd majd tenni (bal felső sarok lesz itt)
2. Adatok->Összesítés (Egy párbeszéd jön)
3. A tetején megadod, hogy melyik függvénnyel
4. A Hivatkozásnál pedig kijelölsz egy forrást úgy, hogy a fejléc nincs benne (mert az változik), majd megnyomod a Hozzáadás gombot
5. Az előbbit megismétled annyiszor, ahány forrásod van
6. Végül megadod, h a feliratokat vegye a bal oszlopból (ezek mindenhol ugyanazok)
7. EnnyiAz eredmények értékként kerülnek a helyükre, de lehet csatolást kérni, így ha a források változnának, az eredmény automatikusan jön.
Ez változó számú forrásnál nem annyira életszerű.Imre
- A hozzászólás módosításra került: 8 years, 2 months telt el-horvimi.
Ezt egy PIVOT-ban sztem nem lehet megcsinálni.
Én azt tenném, hoyg ha megvan a havi bontású PIVOT, akkor mellette egy oszlopban képlettel kiszámolnám az addig a hónapig összesített adatokat.
Kell egy rész, ami a hónapból előállítja az adott hónap utolsó napját, és ezt adnám oda a SZUMHA (SUMIF) függvénynek, hogy adja össze az adott dátumnál korábbiakat.Feltételeztem, hogy az év az ugyanaz. Erre az információra a dátum összeállításában szükség van, vagy kell egy PIVOT oszlop az Évvel.
tölts fel egy mintát a PIVOT-tal, és visszatöltöm mire gondoltam.
Eggyel persze jobb lenne, ha megpróbálnád ez alapján megoldani.
Imre
Gyerekek!
A színezés sima feltételes formázás.
Ha egyik oszlopban lévő >= mint a másik oszlopban lévő, akkor színezze.Imre
Szia!
Ugyan nem egy képlettel, hanem néhnánnyal, de megoldottam.
A megoldást a Munka2 N oszlopától találod. A konkrétan keresett eredmény az S oszlopban.Ezért mondjuk vállon veregetem magam.
- A hozzászólás módosításra került: 8 years, 2 months telt el-horvimi.
Attachments:
You must be logged in to view attached files.Nem tudom mennyire érzékelted, de az a videó az én videóm.
Még egyszer mondom, hogy a probléma ott van,m hogy ha van két egyforma a Top 5-ben.Feltöltöm neked amit csináltam.
Imre
Attachments:
You must be logged in to view attached files.Kitaláltam rá valamit, de csak akkor működik jól, ha az 5-nél nagyobb Top 5-ben nincsenek egyforma értékek.
ha ez nem biztos, h teljesül, akkor hirtelen nincs rá ötletem azon kívül, hogy leprogramozni.
???
Szia!
Tölts fel egy mintafájlt!
Legyenek benne teszt adatok, és egy oszlopba konstansként beírva, hogy mit szeretnél eredményként látni!Imre
Szia!
Csak azt felejtetted el leírni, hogy most hogyan számoltok.
– Mit jelentenek a Munka1-en az első sorban az egy cellába írt, vesszővel elválasztott értékek?
– A Munka2 HUF oszlopána számítási menete kellene saját szöveggel leírva, mint egy munkafolyamat.Imre
Ha tömbökkel foglalkozol és keveset tudsz róluk akkor nézz át egy összefoglalót pl. itt
http://www.cpearson.com/excel/vbaarrays.htmA konkrét esetben a tömb számossága vagy elemszáma:
count=Ubound(nevek)
És ahogy a fenti válaszban írtam, az elvileg egy oszlopos dinamikus tömböt is két dimenziósként kezeli, aminek az oszlop része mindig 1-es.
Tehát a nevek(i) nem lesz jó, de jó lesz:nevek(i,1)
Imre
- A hozzászólás módosításra került: 8 years, 2 months telt el-horvimi.
Szia!
Én ezt találtam erre. Kipróbáltam, nekem működött
Előtte csináltam egy „nevek” nevű tömbkonstanst a névkezelőbe.={"Kovács András";"Tóth Zsuzsanna";"Kovács Béla";"Kiss József"}
A névkezelőből kolvasni egy töb elemeit az Evaluate függvénnyel lehet, ami a szögletes zárójel is egyben.
Sub get_array_from_named_range() Dim arr arr = [nevek] MsgBox (arr(1, 1)) MsgBox (arr(2, 1)) pos = WorksheetFunction.Match("Kovács András", arr, 0) MsgBox pos End Sub
Definiáltam egy dinamikus tömböt, majd beleolvastam a „nevek” tartományt
A tömb egy oszlopos lett, és az elemek egymás alatt, de sor,oszlop indexxel érhetők el úgy, hogy az oszlop index mindig 1-es
Tehát kiolvasom egy tömbváltozóba a névkonstans tömböt, majd abból kiolvasom az első sor első oszlop elemét, majd a második sor első elemét.A tömbben keresni lehet a megvalósított munkalapfügvényekkel is.
Ezt csinálom a második részben a match függvényel.erre gondoltál?
Imi
Na, erre nem számítottam.
Hát…Le tudnám programozni makróval, de képletes megoldásom most nincs erre, bocsi
Azért még megnézem, amikor nem éjjel fél kettő van…Imre
Ez most már kihívás nekem. Mármint, hogy összehozzam, hogy értsük egymást.
Az alapján, amit küldtél, nem lettem okosabb.
A „melyik sorban van találat…” értelmezhető úgy, hogy hányadik sor, és úgy is, hogy írjuk ki a sor adatait.
Stratégiát váltok, konkrétabban kérdezek vissza.
Ez a minta adat:Tól Ig 100 105 106 110 111 115
Mondjuk keresed a 101-et
MIT SZERETNÉL EREDMÉNYKÉNT KAPNI? (Látni az eredmény cellában)
——————————————————
A) 100 – 105 (Egy cellában így beírva, ami ugye szöveg lesz)
B) 100, 105 (Két egymás melletti cellában)
C) 105
D) 100, 101, 102, 103, 104, 105 (Egy cellában)
E) 100, 101, 102, 103, 104, 105 (Egymás melletti cellában)
F) 1 (mert az első sorban lévő 100 és 105 közé esik)Egyéb, éspedig:
???
- A hozzászólás módosításra került: 8 years, 2 months telt el-horvimi.
Ne haragudj, de tényleg nem értem.
Azt nem értem, hogy mit szeretnél eredményül látni.
Ilyenkor a legjobb, ha feltöltesz egy kis mintafájlt.
Ebben van:
Egy tól és egy ig oszlop
Gondolom egy olyan oszlop, ahol azok a számok vannak, amiket keresel
Engem az érdekel, hogy mi van az eredmény oszlopban, és az hol van? (Gondolom a keresendő számok mellett.)
És végül mi legyen akkor, ha a keresendő számot egyik intervallumban sem találta meg (ha lehet ilyen)
Ezt kérlek, kézzel egyszerűen írd be néhány sor esetén.Kérlek, még egy kicsit pontosíts:
– A két érték közötti összes szám kell?
– Ha igen, hogy jelenjenek meg? Egy cellában, vagy …?
– Ezek egész számok?
– A tól és az ig soha nem egyenlő?- A hozzászólás módosításra került: 8 years, 2 months telt el-horvimi.
Szia!
És mit szeretnél eredményül kapni?
Nem értem mi az a DIR nélkül.
DE:
1. A Dir simán az aktuális munkakönyvtárban keres.
Beállítottad? Én nem írtam bele a mintába2. Ha van olyan fájl a forrás mappában, ami a mintának megfelel, akkor az f értéke a fájl neve lesz
Próbáld ki az Immediate ablakban.
– Állítsd be chdir paranccsal a munkamappát oda, ahol a fájl van (ahol naponta cserélődik)
– Ird be ezt a parancsot: ?Dir(„valami_2016-08-26_utem_2-DOC*.txt”) (Nyilván a fájlnevet értelemszerűen írd)Erre vissza kell adnia a fájl nevét. valójában az első olyat adja vissza, ami illeszkedik a mintára. Tehát a „*” előtti rész állandó, a DOC utáni bármi, és txt a kiterjesztése.
A fenti kódot én lefuttattam, simán működött.
Szerintem nem jó helyen keres.Imre
Szia!
Ez egy klasszikus UNPIVOTING feladat.
A hőskorban erre makrót kellett írni.Aztán megjelent néhány Excel ADD-IN, ami megcsinálja, de nem találtam eddig ingyenest.
Viszont az új sláger, a PowerQuery ingyens add-in.Egy ideje már nézegetem. Excel 2010-hez és 2013-hoz letölthető, Excel 2016-ba már bele van építve.
Kb 1 perc volt, míg a problémádat megoldottamm vele. Konkrétan van ilyen menüpontja.
Egysezrűen zseniális.Itt egy leírás, hogyan kell csinálni.
Visszatöltöm a megoldást. Csak 1000 rekordot hagytam benne, hogy fel tudjam tölteni.
Imre
Attachments:
You must be logged in to view attached files.Szia!
Itt azt látom problémának, hogy a másolásnál a célfájl esetén szinte biztosan nme használható joker karakter. De az is lehet, hogy a forrásfájl esetében sem.
A dátum formát különben egyszerűbben is megadhatod:
format(date,"yyyy-mm-dd")
A másik kérdés, hogy a fenti módszerrel biztosan 1 db fájlra tudod-e szűkíteni a talált fájliok számát. A Filecopy csak egy fájlt tud egy időben másolni.
Ha a válasz IGEN, akkor Én azt csinálnám, hogy egy DIR paranccsal, * joker karakterel lekérném a fájl valódi nevét, azután már másolhatom.Sub masol() mainap = Format(Date, "yyyy-mm-dd") forrasmappa = "c:\ahol_a_fajl_van\" celmappa = "c:\ahova_masolni_akarod\" f = Dir("valami_" & mainap & "_utem_2-DOC*.txt") FileCopy forrasmappa & f, celmappa & f End Sub
Ez alapján sikerül?
Imre
Szia!
Az Excelben a szűrések nem dinamikusak, legyen az auto vagy haladó szűrés. Az új adatok esetén vagy adatmódosítás esetén újra kell futtatni a szűrést.
A Te problémád ez alapján úgy oldható meg, hogy az alaptábla módosítása esetén lefut egy eseménykezelő makró, ami szűri a kékeket, és kimásolja a kék munkalapra, majd szűri a pirosakat és másolja a piros munkalapra.
A kék és piros lapok korábbi tartalmait persze előbb törli.
Módosításnak számít új adat bevitele vagy meglévő módosítása.Ennek a módszernek 2 problémája van:
1. Minden cella módosításakor lefut. Ez akkor probléma, ha gyakran módosítasz a fő táblázatban, és sok adatod van.
2. A makrókat szeretik kiküszöbölni. Ez jogos is, csak akkor használjunk makrókat, ha anélkül nem oldható meg egy feladat.űMAKRÓMENTES MEGOLDÁS?
Hát, ki lehet próbálni valamit, amit egy korábbi cikkben írtam le.
Dinamikus szűrés tömbképlettel.
Ez a módszer sok adat esetén várhatóan lassú lesz, két szűrt munkalap esetén pedig pláne.
De néhány száz sorig egy jobb gépen elviselhető lehet a sebessége.Kicsit hozzá kell igazítani a Te problémádhoz, de megoldás lehet.
Próbáld meg!
Szia!
Hát ez egy klasszikus esete annak a helyzetnek, amikor adatbázis-kezelés feladatra akarunk Excel-t használni. Különben érthető, ha nincs adatbázis-kezelés ismeretünk, e van egy kevés józan eszünk, akkor egész jó adatmodelleket lehet Excel-ben is felállítani.
Az már egy jó indítás, hogy külön táblákban gondolkodsz, bár hogy miket tárolsz külön táblákban, azt átgondolnám, de talán így is lehet.
Ahogy Én csinálnám:
1. Van egy törzs tábla a termékeknek, ahol az oszlopok:
Termék_kód (cikkszám), Terméknév, Termékcsoport, Listaár2. van egy vevő törzs, ahol az oszlopok
Vevő_kód, vevőnév, amit még akarsz3. Engedmény tábla, ahol az oszlopok
Vevőkód, termékcsoport, kedvezmény mértékeEz a harmadik tábla kapcsolja össze a vevőket és a termékeket.
Ha jól értem, akkor az lenne a lényeg, hogy vevőnként tudj árlistát generálni, a nekik érvényes árengedményekkel számolva. A kedvezményt pedig nem termékenként, hanem termékcsoportonként adnád nekik.A listát egy db SQL lekérdezéssel meg lehet kapni a fenti modellből.
De szerintem Függvényekkel meg lehet csinálni Excel-ben is.
Azt csinálnám, hogy
– elsőként kitölteném a fenti 3 táblát
– Kezdenék egy negyedik táblát, ez lesz az eredmény tábla
– Ennek első oszlopai a cikkszámok (esetleg a terméknevek, ha kell), termékcsoportok és a listaár. Tulajdoképpen a terméktörzs tábla másolata. Csinálhatod copy-paste-el vagy hivatkozásos másolással.
– A negyedik oszlopban végig annak a vevőnek a kódja, akinek az árlistát csinálod
– A következő oszlopba a vevőkód és a termékcsoport alapján áthozod az engedmény táblából az adott vevőhöz és termékcsoporthoz tartozó engedményt. Ezt lehet két feltételes FKERES-el, de ebben az esetben lehetne SZUMHATÖBB függvénnyel is.
-Az ötödik oszlopban a listaár és a kedvezmény alapján számolod a kedvezményes árat.Ebből az 5 oszlopból neked csak a cikkszám és a kedvezményes ár kell, de ezt az utolsó lépést a fantáziádra bíznám.
Érthető nagyjából? És egyáltalán erre gondoltál?
Imre
- A hozzászólás módosításra került: 8 years, 3 months telt el-horvimi.
OK, feltöltök egy megoldást, ami megmondja, hogy az első munkalapon lévő szó, hányszor szerepel a második munkalap első oszlopában bárhol, akár mondatban is.
Ez egy tömbképlet, ezért ha hozzányúlsz, Ctrl-Shift-Enter-rel kell lezárni.
Hogy lásd a szerkesztőlécen aképlet elején és végén a kapcsos zárójeleket.A B2-be írtam a képletet, utána lehúztam az aljáig.
Ahol nullát kapsz, az a szö nem szerepel sehol a másik munkalapon.
Imre
Attachments:
You must be logged in to view attached files.Szia!
Nekem az még mindig nem világos, hogy mit szeretnél látni.
Ha azt, amit küldtél, azaz az első munkalapon pirossal jelölt szót pirosozzon ki a második munkalap minden előfordulásánál, akkor ehhez meg kell tanulnod programozni. Ez excel cuccokkal nem megoldható.
Ha azt szeretnéd, hogy az első munkalapon azokat a szavakat jelölje, formázza, amik előfordulnak a második munkalap bármely cellájában, akkor az már megoldható egy speciális képlettel és feltételes formázással.
Aztán olyat is lehet, hogy az első munkalapon egy következő oszlopban minden szó mellé írjon egy számot, hogy hány cellában fordul elő a második munkalapon.
Szóval melyik?
Igen, szerintem is a checkbox-ok és a fájlnevek összerendelésénél van a kulcspont.
Tehát amikor készíted a checkboxokat, akkor a .name tulajdonsággal lehetne a nevük a PDF fájl neve is.
.name=Cells(cell, "J").Value
A Copy files makróban pedig végig loopolsz az összes checkboxon, és amelyik be van kapcsolva, az olyan nevű fájlt az adott útvonalról másolod a kívánt helyre.
Sub loop_checkboxes() Dim cb As CheckBox For Each cb In ActiveSheet.CheckBoxes If cb.Value = xlOn Then MsgBox cb.Name 'Ide tehetnéd a másolást End If Next End Sub
Nyilván az útvonalak valahogy összeállnak string összefűzésekből, vagy bárhogy…
Imre
Ha a formázott táblán a TÁBLÁZAT-ot érted, azaz az árnyék verzió egy táblázattá alakított tartomány, akkor a válasz IGEN.
Ebben az esetben csak annyi a feladat, hogy a makró
1. Megnyitja az eredeti fájlt
2. Kijelöli a már kitöltött sorokat (fejléc nélkül)
3. Ctrl-C
4. Átváltás az árnyék verzióra
5. A fejléc alatti első cellához beillesztés értékkéntEz gyakorlatilag rögzítővel felvehető makró.
Mivel a beillesztett adatmennyiség valószínűleg nagyobb, mint amire ráírja, a táblázat automatikusan ki fog terjedni, és a későbbi oszlopokban lévő esetleges képletek automatikusan ki fognak terjedni az új mérethez.
Ha már működik, akkor csak nevezd el auto_open néven, és akkor a megnyitáskor automatikusan le fog futni mindig.
Szia!
Amiben feltöltesz, legyen eredeti, ami a másolat, legyen árnyék nevű. csak az érthetőség kedvéért.
Felvázolok 3 megoldást
A leggyorsabb, de kissé favágó módszer az lehetne, ha egyszerűen képlettel lemásolod az árnyék munkalapon az eredetit.
Ha az eredeti adataid pl. az ‘Eredeti’ munkalap A1-ben kezdődnek, akkor az árnyék munkalap A1-es cellájába felviszel egy egyenlőség jelet, majd átkattintasz az eredeti munkalap A1 cellájára.
Ezt azután addig másolod jobbra a kitöltő fogantyúval, amíg a fejléc tart. (meg fog jelenni a fejléc másolata.
Majd az egészet másold lefelé addig, amíg nullákat nem kapsz, azaz az eredeti lapon elfogynak a már kitöltött adatok. Ha jó előre lehúzod, azaz sok nullákkal teli sorod legyen, akkor egy darabig nyugodtan töltheted az eredetit, a kitöltött adatok automatikusan meg fognak jelenni ugyanott az árnyék verzióban is, ha azonos munkafüzetben vannak.
Az árnyék verzió lehet másik munkafüzetben is, de ebben az esetben csak akkor jelennek meg automatikusan az árnyék verzióban is az adatok, ha az nyitva van. Különben minden megnyitáskor kérdezni fogja, hogy frissítse-e a külső hivatkozásokat, és IGEN válasz esetén szinkronizálja az árnyék verziót az eredetivel. Ezt a kérdést letilthatjuk, és megmondhatjuk neki, hogy ne kérdezzen, csak automatikusan frissítsen.
——————————————————————————————
Ha ez a megoldás nem felel meg, mert nem képletként, hanem értékként szeretnéd látni az árnyék adatokat is, akkor makrót kell írni az eredeti munkafüzetbe, ami eseményként érzékeli egy cella tartalmának megváltozását.
Tehát ha egy cella értéke megváltozott, akkor az árnyék munkalap ogyanazon cellájába másoljuk át az új értéket. Sima eseménykezelés. Itt is lehetnek külön munkafüzetben, de akkor mindenképpen nyitva kell lennie mindkettőnek az adatbevitel során.
———————————————————————————————–
Ha időben el akarod és tudod különíteni az adatbevitelt és az árnyék lap megnyitását, illetve az eredeti és árnyék verziókat külön munkafüzetben tartanádakkor fordítva kell csinálni, és az árnyék fájlba kell makrót írni, amiben megnyitáskor automatikusan lefut egy makró, ami az eredeti adatokat értékként átmásolja az eredeti munkafüzet megadott lapjáról az árnyék munkafüzet megadott lap megadott tartományába.
És IGEN, az átmásolt oszlopok után lehetnek képlet oszlopok, amiket hozzá lehet húzni az átmásolt tartomány méretéhez.
A makró azt csinálná, hogy megnyitja az eredeti fájlt, majd átmásolja a megadott munkalapon lévő táblázatot az árnyék munkafüzet megadott tartományába.
Ha kell, a képlet oszlopokat hozzá igazítja.
——————————————————————————-
Lehet, hogy kissé hosszadalmasan írtam le, de én ezek közül választanék.Imre
Ha így csináltad ahogy a képeken van, akkor azt a problémát látom, hogy a 3. lépésben, amikor megadod, hogy dátum oszlopról van szó, a formátumnál nem azt kell megadni, hogy milyen formátumot szeretnél, hanem azt, hogy most milyen formátumban van. Neked pedig a dátumaid NHÉ formátumban vannak (21/03/2016)
A képen azt látom, hogy ÉHN-t állítottál be. Ez biztosan nem jó.Ha ez nem oldja meg a problémát, akkor marad a segédoszlop, és a képlet a DÁTUM függvénnyel.
Épp ma készítettem egy új cikket erről. Már csak a Videó van hátra.
Imre
Letöltöttem, kipróbáltam.
Nekem megcsinálja.
Office 365, Excel 2013NHÉ formátumot választottál?
Most látom, hogy a fenti képen hibás formátum van kiválasztva. A te dátumaid a fájlban Nap/Hónap/Év formátumúak, a képen HNÉ látszik, mert elbénáztam.Ja, és a villám kitöltés is működik nálam.
Szia!
Ha Office 365-öt használsz, akkor az 2013 vagy 2016 lesz.
Ebben az esetben delila megoldása mellett létezik egy nagyon egyszerű és gyors megoldás.
1. A rossz dátumok után beszúrsz egy új oszlopot
2. Az első sorba beírod a helyes, magyar dátumot
3. Adatok szalagon a Szövegből oszlopok gomb mellett találsz egy „Villám kitöltés” gombot.
4. Nyomd megÉs van még egy nagyon egyszerű, és minden Excel verzióban működő megoldás, a „Szövegből oszlopk” funkció. Ezzel kapásból, segédoszlop nélkül átalakíthatók a dátumok.
1. Angol dátumok oszlop kijelölése
2. Adatok->Szövegből oszlopok
3. Kétszer Tovább
4. A harmadik lépésben beállítod, hogy Dátum típusú, és kiválasztod a helyes sorrendet. A Te esetedben a NHÉ (Nap/Hónap/Év), mert az angol dátumaid így vannak.
5. A rendeltetési hely alapból az első kijelölt cellára mutat, tehát rá fogja írni az eredeti dátumokra az átalakított verziótMűködik?
Imre
- A hozzászólás módosításra került: 8 years, 3 months telt el-horvimi.
Szia!
A felső index megoldható, mert a kettesnek és a hármasnak van felső indexnek megfelelő külön karakter definíciója a betűkészletekben.
Ami biztosan működik:
1. Egy üres cellát válassz
2. Beszúrás szalag->Szimbólum (A szalag végén egy omega jel)
3. Keresd meg a kis felső kettest vagy hármast. A kisbetűk után nem sokkal.
4. Szúrd be a cellába
5. Szerkesztő módban másold ki a kis kettest vagy hármast (Ctrl-C)
6. Egyéni számformánál illeszd be a megfelelő pillanatban: 0,00″m²”;-0,00″m²”Persze a negatív részt csak akkor, ha lehetnk negatív számok is. Ez négyzet vagy köbméternél a való életben elég ritka.
Kipróbáltam, megy.
Neked?
Imre
Szia!
Az összes alakzathoz ugyanazt a makrót kell rendelned, de gondolom ez már megtörtént.
Van a VBA-ban egy
Application.Caller
objektum, Ezzel lehet lekérdezni, hogy mire kattintottak.Próbaként nézd meg ezt:
Sub proba() alakzat_neve = ActiveSheet.Shapes(Application.Caller).Name MsgBox alakzat_neve End Sub
Imre
Szia!
Ez egy klasszikus hiba, szinte mindenki elköveti, amikor egy képletben változót akar használni.
Az a gond, hogy a képlet valójában egy szöveg. Dupla idézőjellel kezdődik és záródik. ha ebben csak így simán beírod a változót, akkor annak a neve, és nem az értéke lesz a képletbe, mint szöveg.
Ezt próbáld:Activecell.FormulaR1C1 = _ "=INDEX('" & fc & ".xls'!C5,MATCH(RC1," & fc & ".xls'!C1,0))"
Ugye külön figyelni kell a szimpla idézőjelekre is.
A módszer lényege, hogy meg kell szakítanod a szöveget azon a helyen, ahová a változó megy. Jelen esetben az INDEX kezdete és a szimpla idézőjel után.
Befűzöd a változót, és tovább folytatod az eredeti stringet.
A változó következő előfordulásakor újból ugyanez a teendő.Imre
Igen, az megoldható, írtam is róla.
Szia!
Ha jól értelmezem, akkor nem munkafüzetről, hanem munkalapról van szó.
Egy munkalapon belül nem lehet ilyet csinálni, ilyen csak Word-ben van.
Olyat lehet, hogy az álló és fekvő részek külön munkalapokon vannak.
A tájolás munkalaponként állítható.
Nyomtatáskor pedig meg kell adni, hogy az egész munkafüzetet nyomtassa.Imre
Szia!
Nagyon köszönjük!
Horváth Imre
A táblázatos verziót számtalanszor csináltam. Most még egyszer kipróbáltam, működik.
Valamit nem jól csináltál szerintem.Miután táblázattá alakítottad, ki kell jelölni az adatokat, és a kijelölést külön elnevezni.
Ez nem lehet ugyanaz a név, mint a táblázaté.A lista adaforrásának a tartománynevet kell adni.
Ha az oszlopos megoldás OK, akkor végül is mindegy.
Imre
Igen van, két lehetőség is
Táblázatos
Ugye az a gond, hogy táblázatnevet (struktúrált hivatkozást) nem lehet adni adatérvényesítési lista adatforrásának. De tartománynevet lehet!
1. Az adatforrást táblázattá alakítod
2. Az adatokat (fejléc nélkül) elnevezed
3. A lista forrásaként ezt írod: =tartmánynévEgész oszlopos
A lista forrásaként az egész oszlopot megadod
Szia!
A minta alapján a feladat egyszerűbb, mint gondoltam. Csak tudni kell hozzá, hogy a feltétel szerinti megszámláló függvények (DARABTELI/COUNTIF, STB..) ismerik a joker karaktereket.
Ha jól értem, azt keresed, hogy egy teljes domain név (www.valami.hu) hányszor szerepel az
„1-organikus-találat” oszlopban, hányszor a „2-organikus-találat” oszlopban, stb…
Nem pontos egyezésre, hanem bárhol.
Ehhez a „*www.valami.hu*” szöveget kell keresni, illetve megszámoltatni.A megoldás tehát csak annyi, hogy a keresendő név elé és utána egy csillagot kell fűzni.
Szóval ha azt keresed, hogy az „F” oszlopban hányszor szerepel a B2-ben lévő domain név bárhol, akkor a képlet:=DARABTELI(F:F;"*"&$B2&"*"
Ha a keresendő domain cellájának oszlopát lerögzíted, és teljes oszlopokban keresel, akkor húzható lesz a képlet.
Visszatöltöttem a fájlt. Erre gondoltál?
Imre
Attachments:
You must be logged in to view attached files.Szia!
Ezt elég trükkösen, de meg lehet csinálni.
ha az F12-ben van az alsó határod, akkor a kritériumhoz ezt kell írni:
=">="&F12
A felső határnál értelemszerűen az E12-re hivatkozol.
Remélem sikerül, majd jelezz vissza!
Imre
- A hozzászólás módosításra került: 8 years, 5 months telt el-horvimi.
Szia!
Lenne egy ötletem, tölts fel egy mintát!
Imre
Szia!
Az első feladat félig meddig megoldható makró nélkül, de csak egyszer fog működni minden cégnél.
Ergo ezt is inkább makróval kellene megoldani.
A második probléma viszont csak eseménykezelős makróval oldható meg.Bővebben az első feladat
1. kell egy segédtábla, hogy mely cégnek mi az alapértelmezett fizetési módja.
2. A második legördülő menüben adatforrás az összes lehetséges fizetési mód.
3. Miután az első legördülővel választottál egy céget, ott lesz egy Worksheet_Change esemény, aminek a kezelőjét kell megírni, hogy a (gondolom) mellette lévő cellát töltse ki a segédtábla alapján a céghez rendelt fizetési móddal.Bővebben a második feladat
A második feladat kicsit bonyolultabb. Ugyanis ha törléskor vissza akarod állítani az eredeti képletet, akkor figyelni kell, hogy az új érték üres lett-e, és visszaírni a képletet.
Ha pedig egy egyéb érték, akkor azt benne hagyni.
És persze kiindulásként az eredeti képletnek kell a cellában lennie.Excel VBA eseménykezelésről alapszinten itt olvashatsz
http://www.excel-spreadsheet.com/vba/eventhandling.htmTermészetesen ezen kívül számtalan egyéb forrás található.
Imre
Ez is remek megoldás, köszi!
Hát, nem tudom mi zajlik nálad.
Én Win 10 alatt is használok néha Excel 2013-at, nincs vele gond.Ez teljesen jó, amit írtál, csak a „Sheet” szót többes számba kell tenni.
Tehát
Sheets(“Munka2”).Range(“c78”).Value = Sheets(“Munka2”).Range(“c78”).Value + 1
Imre
Kedves Miklós,
Ha jól értem, akkor neked sem megy a Copy/Paste a jobb gombos menüben?
Nem tudok többet segíteni sajnos. ha a fentiek nem oldják meg, akkor passz.
Az újra telepítés esetleg akkor lehet jó, ha előtte eltávolítod az Office-t.Még annyit, hogy valahol azt olvastam 1-2 éve, hogy a fenti jelszófeltörő algoritmus 2013 verzión már nem működik.
Imre
Szia!
Szóval ezt makróval lehet megcsinálni.
Több megoldás is lehetséges, és többféle gomb is létezik. Űrlap vezérlő és Active-X vezérlő.Leírom az egyik lehetséges megoldást ActiveX vezérlő gombokkal.
1. Kapcsold be a Fejlesztőeszközök (Developer) szalagot
2. Ezen a szalagon a Beszúrás gomb lenyíló menüjében az ActiveX vezérlők közül az első a nyomógomb
Ezzel rajzolj 2 gombot.
3. Az elsőn duplán kattintva, megjelenik a Click esemény kezelője, egyelőre még üresen. Itt A Sub és End sub közé megadhatod, hogy mi történjen, ha megnyomod a gombot.
Ide írd be ezt:
Activesheet.Range("A1").Value=Activesheet.Range("A1").Value+1
4. Csináld meg ugyanezt a másik gombbal is, csak csökkenteni kell, nem növelni.
5. A gombokra írt szöveget úgy tudod módosítani, hogy jobb klikk->Tulajdonságok->Caption sor
6. A gombokat működésbe hozni pedig úgy, hogy a szalagon a Beszúrás mellett van a Tervező mód, amin egy kék vonalzó van, azt kapcsold ki. Ezután kattintásra már gombként működik.
7. Módosítani a tervező gomb bekapcsolásával tudsz.Remélem érthető.
Imre
Hát, igen.
Innentől kezdve már csak makrós megoldás jöhet számításba.
Egy cellában több adat eléggé barkácsolós megoldás.És ha makrós, akkor persze az alap modellt is másképpen kell struktúrálni, nem kell szétszedni annyi kicsi táblára.
Ez tulajdonképpen egy tipikus adatbázis probléma, Access-ben simán megoldható lenne makró nélkül is.Sok sikert,
Imre
Szia!
Itt az lenne a kérdés, hogy ha kiválasztotta a gyártót és a terméket, akkor ahhoz csak egy saját termék tartozhat, vagy többől kellene választani?
Tehát a „kiválasztás lapon a C3-ban már egy konkrét érték lenne, vagy az is legördülő menü?Van most 4 db típus táblázatod. Ezeknek az elemszáma mekkora a valóságban?
Mennyire fog később bővülni?Mindenesetre kitaláltam valamit, csatoltan elküldöm.
Imre
Attachments:
You must be logged in to view attached files.Hát, akkor nem tudom. Windows-on nem ilyen.
Szia!
Nekem úgy tűnik, mintha kihagynál egy lépést a végén
A Manage Rules… ablakban nincs olyan gomb neked, hogy Edit rule…?
Ezt olvasd át:
http://www.contextures.com/excelpivottableconditionalformat.htmlImre
Szia!
Ezt külön kell beállítani a szabály létrehozása után.
1. Kijelölsz egy cellát a PIVOT táblában, ami már felt. szabállyal formázva van
2. Feltételes formázás->Szabályok kezelése…
3. Szabály szerkesztése…
4. A megjelenő párbeszéd tetején a szabály hatókörét lehet állítani.
Itt a harmadik lehetőséget válaszd!Jó lett?
Imre
Kedves András!
A kernel32 és a kernel64 Windows oprendszer API-k. Leginkább dll fájlok, amiben meghívható windows szintű függvények vannak.
A sleep valószínűleg egy olyan fv, ami fél másodpercig „nem csinál semmit”
Én csak nagyon körültekintően használnék ilyesmit, mert más-más gépeken más-más eredményt produkálhat, vagy egyik gépen talán nincs is ottauz a dll, amiből hívnék egy függvényt.Biztosan megvan az okod, miért akarod, gondolom valami figyelem felkeltés, de ez a villogó dolog meglehetősen old style.
Azt sokkal egyszerűbb megcsinálni, hogy amíg nem töltik ki, valamilyen színű legyen a háttere, utána meg normál. Ez egy sima eseménykezelés.
A sheet kiválasztása eseményhez egy olyan kód, ami megnézi az adott cellát, és ha üres, akkor megszínezi valahogy
Az adott cella tartalom módosulásához pedig a háttérszín alapra állítása.imre
Örülök, hogy tetszik.
Szeretem az ilyen kihívásokat. Még éppen a határaimon belül… 🙂Szia!
Itt bizony az INDIREKT függvényt kell segítségül hívni.
Ezzel lehet szövegesen összerakni egy hivatkozást.Az oszlop indexét használva a CÍM (ADDRESS) függvénnyel meg lehet tudni a keresett oszlop első cellájának címét. Ebből lehet teljes oszlophivatkozást készíteni.
Visszatöltöttem a megoldást.
Elég brutális lett, de megvan lépésenként is.
A tetejére változóként felvettem az adatokat tartalmazó munkalap nevét, és a fejkléc sorszámát.Ha nem túl nagy a táblázat, akkor fog működni.
Sok adattal lassú lesz.Majd írj vissza, hogy jó-e így!?
Imre
- A hozzászólás módosításra került: 8 years, 6 months telt el-horvimi.
Attachments:
You must be logged in to view attached files.2016-04-29-08:53 Hozzászólás: Mezőben dátum dinamikusan kerül bele, de ha már kitöltve akkor ne módosuljon… #2641Szia!
A Ma() függvény mindig frissíteni fog. Automatikus megoldás makró nélkül nincs.
Kézzel értékké lehet alakítani naponta a képleteket.Az ilyesmit eseménykezelő makróval szokták megoldani.
Imre
Kedves István!
csak pontos feladatleírás alapján tudok kalkulálni egy ilyet.
Nagyjából értem, de nagyon korlátozott az időm, ezért fontos számomra, hogy ne legyen olyan, hogy megcsinálok valamit, sé kiderül, hogy nem erre gondoltál, vagy még ezt, meg még azt kellene bele megcsinálni.Ha kapok konkrét mintákat, a mappaszerkezetet, és egy eredmény fájl mintát, akkor tudom megítélni, mekkora feladat lenne.
Azt is jó lenne látni, hogy a dátumot hogy szeretnétek megadni, amihez tartozó napló bejegyzéseket kiszedi minden fájlból?Köszi,
Imre
Szia!
Én elsőre ezt próbálnám:
1. Ctrl+H (keresés-csere)
2. Ezt keresse: „<*>” (Kacsacsőr, csillag, kacsacsőr, és ne tegyél idézőjelet)
3. Erre cserélje: ezt hagyd üresen
4. Az össze cseréjeImre
Szia!
Amit csinálni szeretnél, azt nem lehet makró nélkül megtenni.
Elvileg is aggályosnak találom a dolgot, miszerint mit keresnek adatok és képletek is ugyanabban az oszlopban? Részösszeg képletek?További kérdések:
– A beillesztendő adatmennyiség mindig ugyanakkora?
– A képletek mindig ugyanoda esnek? Azaz ugyanabban a sorban vannak?
– A képletek pozíciójában mi található a beillesztendő adatok esetén? Ott üresek vannak? Vagy esetleg a képletek eredményei értékként?Ötletem viszont lenne, amit kipróbálhatsz.
Ha el tudnád rejteni a beillesztés idejére azokat a sorokat, amikben a képletek vannak, és a beillesztésnél meg tudod oldani valahogy, hogy a képletek pozíciója kimaradjon, de legyen egybefüggő a beillesztendő adatsor, akkor még akár sikerülhet is a dolog.A képletek sorainak elrejtés egyszerűbb falat mint a másik.
Imre
Szia!
Az a helyzet, hogy adatbázis-kezelési szempontból az azonosítók általában szövegesek. Még akkor is, ha csak numerikus karaktert tartalmaznak. Így lehetséges, hogy akár nullával is kezdődhetnek.
tehát az SAP nem tesz mást, mint abban a formátumban exportálja, amiben van nála.Az elvi probléma inkább a többi táblában van, amik meg számként tárolják.
Ráadásul az Excel még arra is képes, hogy automatikus konverziót végez, azaz egy szöveges számot számmá konvertál magától. begépelésnél ugye ez egyértelmű, de importnál is előfordul.Nem vagyok SAP guru, de hallottam már arról, hogy export során be lehet állítani az oszlopok típusait.
Azt is kipróbálhatod, hogy SAP-ból csv-be Exportálsz, és amikor az Excelbe olvasod be, akkor a varázsló adott lépésénél az azonosító oszlopot megpróbálod szám típusúként megadni, hátha megeszi.
Az Excel ebben nem annyira jó, mint az Access.
Hát, ennyi a praktikus magyarázat.
Imre
Szia Tamás!
Majdnem biztos voltam benne, hogy dátum mezővel szívsz.
Ezekkel autofilternél és advanced filternél is csak a baj van.
Makrófuttatáskor konkrétan nem eszi meg a dátumot dátum formátumban.
Tehát nem írhatod ezt:>=2016.03.24
Az már eggyel jobb próbálkozás volt, (mert gondolom sejtetted a problémát), hogy megpróbáltad összefűzni a dátumot, de az eredmény továbbra is dátum forma maradt:
Range("C2").Select ActiveCell.FormulaR1C1 = "=""<=""&YEAR(RC[10])&"".""&MONTH(RC[10])&"".""&DAY(RC[10])"
Az egyik lehetséges megoldás az, hogy megnézed, hogy annak a dátumnak, ami akarsz,
mi a dátumszáma, és azt írod a feltételbe. Pl.: a 2016.03.29 dátumszáma 42458.Tehát ez jó lehet:
<=42458
De ez elég béna, ezért számított formában érdemes beírni a cellába a makró futtatás előtt:
="<="&DÁTUM(2016;3;27)
Beírás után különben ez dátumszámkét fog látszódni
<=42457
És végül, ha makróval akarod beírni:
Selection.FormulaR1C1 = "=""<=""&DATE(2016,3,27)"
Így a dátum egyes részei lehetnek befűzött változók is.
Kipróbáltam a küldött fájlon, működik, úgyhogy menni fog Nálad is, most nem xcsatolom vissza.
Minden jót, majd jelezd, hogy rendben van-e!
Imre
- A hozzászólás módosításra került: 8 years, 8 months telt el-horvimi.
Na jó, már éppen kérdezni akartam, hogy meg sem kísérelsz rákeresni?
🙂Azt hiszem nagyjából értem.
Tehát lenne négy altábla, ami kategóriánként tartalmaz indulásként egy összeget.
Te azt szeretnéd, hogy soronként töltögetve a csatolt táblát, ahol leegyszerűsítve megadod tételenként, hogy mely kategóriába esik, illetve kijön, hogy levonandó az összeg vagy hozzáadandó az adott kategóriához, lásd az altáblákban, hogy kategóriánként hogy állsz a kerettel.Én azt csinálnám, hogy szépen töltögetném ezt a táblát. Előjelesen írnám be az értékeket.
Ami levonandó. az negatív, ami hozzáadandó, az pozitív szám legyen.Majd csinálnék az egészből kategóriára bontva egy PIVOT táblát, ami összesíteni az összegeket.
Az összesenek valószínűleg negatív számok lesznek.
Ezek az összegek azt mutatnák, hogy mennyit kell hozzáadni a kiindulási összeghez az adott kategóriában.
Ha egy vagy több új sort kitöltöttél, akkor frissíted a PIVOT táblát.Végül hozzáadnám képlettel ezeket a számokat a kiindulási összegekhez kategóriánként.
Az eredmények mindig mutatnák, hogy mennyi pénz van még, ami elkölthető.
Én valahogy így kezdenék neki.
Imre
Szia!
Elsőként indítsd el SAFE módban az Excel-t.
Tartsd lenyomva ctrl billentyűt, mikor indítod
Ez letiltja az esetleges beépülő modulokat.
Nézd meg, hogy így elérhető-e a menüben a cucc!
Ha igen, akkor valami lakó van az Excelben.Telepítettél mostanában rá bármilyen add-on-t?
Powerquery, PowerPivot, vagy bármi, ami az excelbe beépülő lenne?
Esetleg ez a problémás fájl tartalmaz makrókat, amik futás közben lefagytak, vagy bármi miatt nem fejezték be a dolgukat?Kerestél már a neten a probléma után?
Ha tudsz makrókat futtatni, akkor próbáld ki ezt:
Sub ResetCellMenus() Dim cbr As CommandBar For Each cbr In Application.CommandBars If cbr.Name = "Cell" Then cbr.Reset Next cbr End Sub
Ha ez nem, akkor az Immediate ablakban futtatsd ezt:
Commandbars("Cell").Reset
Jelezz vissza, hogy mi lett!
Imre
- A hozzászólás módosításra került: 8 years, 8 months telt el-horvimi.
Szia!
Én nem látok csatolmányt.
Mert nem így kell hivatkozni rá, hanem úgy, hogy
Range("EUR").Value
vagy úgy, hogy
Sheets("alapadatok").Range("EUR").Value
Imre
Hát, ezt teljesen automatizálva nem nagyon megoldható. Legalább is most hirtelen nem látom…
Kézzel könnyű lenne a képlet eredményét értékként lemásolni egy másik oszlopba, de nyilván nem ezt akarod.
Te azt szeretnéd, hogy ha kitöltöttek egy cellát, akkor az abból fakadó eredményt el lehessen tenni egy független cellába. (Mi van, ha véletlenül rossz adatot adott meg?)Az a baj, hogy ha ezt automatizálni szeretnénk, akkor egy olyan makrót kellene írni, ami figyeli, hogy megváltozik-e a képlet eredménye, és ha IGEN, akkor lementi egy cellába az aktuális eredményt mint értéket. Ez simán megoldható, viszont minden változáskor le fog futni, tehát nem csak az első változáskor.
Azt is nézni kellene, hogy hányadszor változik, és csak az elsőnél másolja ki az eredményt.
Én ezt most passzolom.Ha leírnád, mit szeretnél valójában ezzel, talán lehet más megoldás.
Olyat pl.lehet, hogy egy cellába csak egyszer lehessen írni, utána védje le a cellát vagy az egész sort.Ezek persze eseménykezelő makrók.
Imre
Szia!
Ha azt akarod, hogy ne is tudja megnyitni a munkalapot, akkor miért nem rejted el?
Ha elrejted, és utána jelszóval véded a munkafüzet szerkezetét, akkor nem tudja előszedni.
(Korrektúra->Füzetvédelem)Átlag user-ről beszélek, nem arról, aki mindenképpen fel akarja törni.
Az elrejtést kétféleképpen lehet:
– Az egyik a hagyományos jobb klikk->Elrejtés
– A másik a jobb klikk-> Kód megjelenítése -> Bal oldalon kiválasztod a munkalapot -> F4-el előveszed a tulajdonságok ablakot -> Utolsó tétel a „Visible” tulajdonság -> VeryHiddenUtóbbi úgy rejti el, hogy nem látszik a felfedés menüben, hogy van elrejtett munkalap.
Amit eredetileg akarsz, hogy ne is lehessen kiválasztani a munkalapot, de különben látszódjon, csak makróval lehet megcsinálni.
A makrók pedig letilthatók, és ott van vége.Ráadásul akkor mindenkinek, még neked is tiltva lesz az átkattintás. Hacsak nem még bonyolultabb makróval megnézzük a megnyitáskor, hogy jogosult személy nyitotta-e meg a fájlt.
imre
Szia!
Elég gyakori kérdés ez. Az azonosságok vagy a különbségek a kérdés.
Színnel megjelölni, kiszűrni, megszámolni…Egy speciális, legtriviálisabb példát már mutattam korábban itt, a Bázison.
Ez csak színnel jelöli a különbségeket.
Általánosabb megoldás, ha az egyik listában a tételek mellé egy új oszlopban megnézed, hogy az aktuális tétel szerepel-e a másik listában. Ezt lehet DARABTELI, HOL.VAN, FKERES függvényekkel csinálni. Én a DARABTELI-t javaslom. Angol neve COUNTIF.
=HA(DARABTELI(masik_lista, akt-tétel)>0;1;0)
vagy
=--(DARABTELI(masik_lista;akt-tetel)>0)
Mindkét képlet 1-est ad, ha az aktuális tétel benne van a másik listában és nullát, ha nincs benne.
Ezután az oszlop alján összeadva az egyesek számát, megkapod, hogy hány olyan tétel van, ami benne van a másikban is.Ha nem akarsz segédoszlopot, akkor egy cellában rögtön meg lehet kapni az eredményt, de ez egy összetett tömbképlet eredménye.
Feltöltöttem egy minta fájlt.
Jelezd, hogy jó lett-e?!
Imre
Attachments:
You must be logged in to view attached files.Szia!
Nagyon érdekes problémákat hozol. Először azt hittem, passzolnom kell, mert nem nagyon volt ötletem, és nem is nagyon találtam megoldást. Végül meglett, sé kiderült, hogy elsőre elég közel jártam.
Szóval tegyük fel, hogy a tartományod az A1:D4-ben van.
1. Tömbképlettel megnézheted, hogy hol van benne a legnagyobb érték:
=--(A1:D4=MAX(A1:D4))
Ez egy tömböt ad eredményül. Ott lesz benne egy egyes, ahol a legnagyobb érték van.2. Ha ezt szorzod a tartomány celláinak az oszlopaival, akkor az eredmény mátrixban az adott helyen a keresett max érték oszlopának száma lesz, a többi helyn meg nulla.
3. Ezt a szorzatösszeggel összeadva, megkapható eredményként a max érték oszlopának száma száma
=SZORZATÖSSZEG(--(A1:D4=MAX(A1:D4))*OSZLOP(A1:D4))
4. A fejlécből kiveszed az ennyiedik elemet
5. Ugyanezt megcsinálod a sorokra is.
6. A két képletet egybe is vonhatod, hogy a sor és oszlop számítás, meg az INDEX függvények ne legyenek külön cellákban.
FONTOS!
Ez nyilván csak akkor műxik, ha nincs két egyforma legnagyobb.
Különben PASSZ!Visszatöltöttem a fájlt a megoldással.
Imre
- A hozzászólás módosításra került: 8 years, 8 months telt el-horvimi.
- A hozzászólás módosításra került: 8 years, 8 months telt el-horvimi.
Attachments:
You must be logged in to view attached files.Lenne még egy ötletem, ha képletekkel akarod megoldani, de ehhez a sorokban lévő rekordokat oszlopokba kell transzponálni. ha Fix oszlopszámosd van, akkor ez járható út lenne.
Ki kell jelölni egy segéd-tartományt, ahol a varázslat történik.
A TRANSZPONÁLÁS (TRANSPOSE) függvény úgy tud elforgati egy tartományt, hogy ezután leköveti a változásokat.
Ha minden sorodat egymás mellé transzponálod oszlopokba, akkor ezekből már lehet másodlagos oszlopokat generálni a második legördülő listának, amiben már nincsenek üres cellák.
Itt egy lehetséges megoldás:Imre
Ezt az Én tudásom szerint csak eseménykezeléssel, makróval lehetne megcsinálni.
Ebben az esetben a legördülő elemek lehetnének ActiveX vagy Form vezérlők, amiknek a sorforrását futásidőben töltenénk ki, amikor az első vezérlőben választottál valamit, azaz annak megváltozik az értéke.Szia Emese!
Úgy értelmeztem, hoyg az angol ABC szerint kell megoldást keresni, azaz a magyar ékezetes magánhangzókat az angolra váltva akarod a megoldást.
Amit Te csináltál különben teljesen jó, de azért ajánlom figyelmedbe a visszatöltött alternatív megoldási javaslataimat. A magyarázat a fájlban.Imre
Attachments:
You must be logged in to view attached files.Az a helyzet, hogy valahová mindenképpen le kell tárolnod a szűrőbeállításokat.
Ha ez lehetséges, akkor lehet továbblépni.Ha jól gondolom, a fájl helye adott, csak soha nem mentik el. Ha ez igaz, akkor ugyanabba a mappába letehetnéd a szűrőbeállításokat is egy általad kitalált struktúrájú szövegfájlba.
Kicsit bonyolítja a helyzetet, hogy több beállítás is lehet, amiből valahogy még választani is tudni kellene, de ez legyen későbbi probléma.Ha a fájl különben xlsm lehet, akkor a workbook open eseményhez megírhatnád, hogy saját magával egy mappában lévő adott nevű fájlból olvassa be egy tartományba, vagy tömbbe a legutoljára elmentett szűrőbeállításokat. Aztán valami shortcut-ra kidobhat egy menüt, hogy válasszanak belőle.
Egy másik shortcut-ra meg elmenthetné az aktuális beállításokat. Aztán szűr egy másikat, és azt meg hozzáfűzheti.
DE hogy hogyan döntöd el, mikor kel felülírni a régi szűrőbeállításokat, és mikor kell hozzáfűzni, már megint egy újabb probléma.
Érdekes.
Különben megoldható, hogy paraméterrel hívjunk be egy munkafüzetet az excelbe, de ezt az excel indításával együtt lehet csak megcsinálni, mert valójában commad line feladat. Így ha már fut az Excel, akkor egy újabb példányt kell indítanod, ami megint új problémákat generálhat. Én nem csinálnám, de itt a lehetőség:
https://social.technet.microsoft.com/Forums/office/en-US/bb9fa94f-a1d4-45cd-9279-b12e7a7e69c0/passing-a-parameter-to-an-excel-file-when-opening-it?forum=excelImre
Mikor sima tartománnyal kipróbáltam úgy, hogy létrehoztam az egyéni nézeteket, üresen mentettem a fájlt, bezártam, kinyitottam, majd bemásoltam egy szűrendő tartományt, nagyobbat, mint az egyéni nézet ,létrehozásakor volt, akkor működött. Az „újra alkalmaz” úgy tűnik, arra való, hogy ha az érvényben lévő szűrés közben új rekordok kerülnének a végére, azokra is érvényesíti a szűrést.
A szűrés törlésekor vagy a tartomány törlésekor, a fájl bezárásakor szürke lesz.Majd írd meg mi lett!
Megnéztem a hivatkozott makrót.
Ha boldogultál vele, ez kezdetnek bíztató.
Viszont az elmentett szűrőbeállítások nem kerülhetnek bele a fájlba, ha mentés nélkül bezárják.
Emiatt csak az lehetséges, hogy egy másik Excel munkafüzetbe, vagy egy TXT fájlba kerül az elmentett szűrés, amit egy makróval be kell olvasni.Tehát azt a tömböt, amiben a filterek vannak, ki kell tenni valahová, elmenteni, és a két fájl együtt mozog.
Más nem nagyon jut eszembe.
Imre
Rossz hírem van!
Kíváncsi voltam, ezért kipróbáltam adatkapcsolatos verzióban.
Itt az a gond, hogy a frissített külső adatkapcsolatok Táblázatként jelennek meg.
Így viszont ugye nincs egyéni nézet.Ha átalakítom tartománnyá, akkor elvész az adatkapcsolat, ráadásul az egyéni nézet nem ismeri fel a tartományt.
Access lekérdezéshez kapcsolódtam.
Úgyhogy ez nem lesz ennyire egyszerű sajnos.
🙁Szia!
Nézd meg ezt! Az egyik kedvencem.
http://excel-bazis.hu/tutorial/villamgyors-valtas-az-autoszuresek-kozottKipróbáltam így:
– Egy új fájlba bemásoltam egy táblázatot
– Elmentettem néhány szűrőt
– Elmentettem a fájlt
– Kitöröltem a táblázatot
– Elmentettem újra a fájlt
– Visszamásoltam a táblázatot
– Az elmentette szűrőket alkalmaztamMűködött!!!
Lényeg, hogy ugyanarra a lapra kerüljön mindig a táblázat.
Ez azonban teljesül, mert a lekérdezés eredménye ugyanoda kerül a frissítéskor.Nagyon kíváncsi vagyok!
Imre
Szia!
Néhány tipp:
Vegyük előbb az új árlistát.
Ha az új ár oszlop mellé felveszel egy segédoszlopot, akkor oda FKERES fv-el kikerestetheted a régi listában a cikkszámot, és az alapján a régi árat. Ha nem találja a cikkszámot, akkor hibát ad. Ezt egy HAHIBA fv-el lekezelve visszaadhatsz egy saját értéket. Ezzel lesznek azok, amik újak.
Ha viszont megtalálja az előző listában, akkor összevetheted a két árat, és visszaadhatsz ennek megfelelő értékeket (Pl. „Fel”/”Le”/”Maradt”)
tehát egy képletben vegyesen használsz HAHIBA, FKERES és HA függvényeket egymásba ágyazva.A régi árlistában ugyanezt megteheted, és az új oszlopba kikeresteted HOL.VAN vagy FKERES függvénnyel, hogy a régi cikkszám szerepel-e az újban.
Ha a segédoszlopos verzió már megy, megpróbálhatod a megtalált képleteket alkalmazni feltételes formázáshoz.
Kicsit tornázzál rajta.
Imre
Szia!
Hát úgy, hogy az eredmény is egymás alatt legyen, úgy elég macerás, talán valóban makró kellene hozzá.
Viszont ha az eredmény két dimenziós is lehet, akkor makró nélkül, egy egyszerű tömbképlettel megoldható. Persze utólag értékként átmásolva valahová, már akár oszlopba rendezheted.
imre
Attachments:
You must be logged in to view attached files.Szia!
Sajnos a problémád nem oldható meg PIVOT-tal.
Sőt, így, hogy vízszintesen periódusonként nézed, másként is meglehetősen bonyolult.Összeraktam neked egy modellt, és egy részére ki is húztam a képleteket.
Azért nem az egészre, mert átlépte volna a az 512k limitet a mérete.
Ha a képleteket függőlegesen és vízszintesen is kihúzod, kb. 1.7 mega a méret, és az újrakalkulációs idő 1 perc is lehet. XLSB-be mentve kicsivel kisebb lesz a mérete.A zöld képlet megkeresi adott termékhez és periódushoz tartozó minimális kedvezményes árat.
Ez egy tömbképlet, és a több, mint 30e sorban meglehetősen lassú. Sajnos nincs MINHA és MINHATÖBB függvény az Excelben, de megoldható így.A barack pedig kikeresi az összefűzött oszloppal kiegészített táblázatból azt a sort, ahol az aktuális termék és a min. kedvezményes ár van, és kiveszi a normál árat.
Ha megnézed a 7UP sorban az április 2014 oszlopot, akkor ott van, amit kerestél. Nem túl sok helyen van eltérés különben a két ár között, de azért előfordul.Erre gondoltál?
Imre
Attachments:
You must be logged in to view attached files.Szia!
Bocsánat, de amit leírtál, nem értem. Néha nehezen látunk ki a saját problémánkból 🙂
Azt még sejtem, hogy legalább három oszlop van. Első oszlopban mondjuk termék név vagy kód, a következőben normál, utána a kedvezményes ár. Gondolom ez egy tranzakciós adattábla, mondjuk forgalmi adatokkal.
– Egy termék nyilván többször szerepel a táblában.
– Minden előfordulásához más-más normál és kedvezményes ár tartozhat?Ha termékre csoportosítasz, és adatnak behúzod a normál árat és a kedvezményes árat, akkor mindkettőre állíthatsz be min. függvényt.
Így termékenként megkapod a normál és a kedv. ár minimumát.Ha nem így van, akkor tölts fel egy minta táblázatot, amiben a forrás adat van, és mellé tölts ki egy táblázatot, vagy részletet, hogy mit szeretnél látni!
imre
Szia!
Szerintem csak az lehetett a baj, hogy esetleg nem Ctrl+Shift+ENTER-rel ( CSE ) zártad le azt a bizonyos bonyolult képletet.
Na, mindenesetre egy kicsit még reszeltem rajta:
– Táblázattá alakítottam az A-H oszlopokat
– N2-től egy új sorban kiszámolom, hogy melyik kódból hány van, meddig kell majd lehúzni a képletet
– A képletet az N4-ben átírtam táblázatos verzióra, utána CSE!!!
– Elhúztam vízszintesen a végéig
– Elkezdtem őket lehúzni függőlegesen is a 2. sorban olvasható darabszámig. R oszlopig jutottam, a többi a te dolgodA táblázattá alakítást azért csináltam, hogy ne kelljen kijelölni a tartományokat, hanem a z oszlop nevével hivatkozhassak. Az oszlopokba bele kell vennia fejlécet is, ezért van #Mind rész is benne.
Sok sikert,
Imre
Attachments:
You must be logged in to view attached files.Szia!
Ott keresd a problémát, hogy nézd meg, hogy működik a keresés, amikor kézzel keresel.
Amikor minden előforduláson átmentél a „Következő” gombbal, akkor elkezdi a keresést elölről, és újra az első találatra ugrik. Ezért a .find – .findnext ciklusoknál azt csinálják, hogy megjegyzik az első találat (.find) celláját, és a ciklus addig fut, amíg a .findnext újra az elsőnek megtalált cellára ugrik.Itt van két link, tanulmányozd:
http://www.ozgrid.com/forum/showthread.php?t=168157
http://www.ozgrid.com/forum/showthread.php?t=37604Még okozhat esetleg további problémát az, hoyg a találatok A oszlop végére írásánál SELECT-et használsz. meg kéne próbálni select nélkül, egyből beleírni.
Cells(ActiveCell.CurrentRegion.Cells(ActiveCell.CurrentRegion.Cells.Count).Offset(1, 0).Row, ActiveCell.Column).Value = keresett.Address
Imre
Szia!
Nincs ilyen lehetőség jelenleg, Excel 2016-ig. Valószínűleg nem is lesz.
Lehetséges megoldások, kerülő utak:Ahogy te csináltad
A szűrés után kimásolod a látható rekordokat, és azon készíted el a PIVOT-ot, vagy módosítod a már létező Pivot adatforrását. Ez makróval automatizálható.
Lenne két munkalapod. Az egyiken az adatbázis, a másikon a szűrésnek megfelelő sorok.
A PIVOT táblát a szűrt adatok alapján elkészíted.Ha változik az adatforrásod, vagy másik szűrést állítasz be, akkor a makró kitörölné az előző adatokat a szűrés lapról, az új szűrést odamásolná, majd módosítaná a PIVOT adatforrását az aktuális mérethez.
Adatbázis, pl ACCESS bevonásával
– Az adataidat Access-be linkeled
– Ott készítesz egy Query-t a szűrésnek megfelelően
– Az Excelben a PIVOT táblát a lekérdezéshez kapcsolod.Ebben az esetben, ha változik a forrás adat, akkor csak frissíteni kell az Access-ben a becsatolt adttáblát, és fissíteni kell a PIVOT táblát, ami befrissíti az Access lekérdezést.
kb. ez jut eszembe
Imre
-
SzerzőBejegyzés