-
Fototrend
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
Fferi50
Topikgazda
válasz
pero19910606
#43868
üzenetére
Szia!
Legyen a diagram forrása egy állandó tartomány, ami három oszlopból, fejlécből és további 30 sorból áll. Legyen ez az A1 : C 31 terület. Az első sorból indul a fejléccel, tehát az első képlet a második sorba kerül.
Az első oszlop tartalmazza a napokat, a következő képlettel:=ÉV(MA()-(33-SOR()))&"."&JOBB("0" & HÓNAP(MA()-(33-SOR()));2) &"."&JOBB("0" & NAP(MA()-(33-SOR()));2)
Ezt a képletet húzd végig a 30 soron. Az eredmény dátumnak látszó formátumban az elmúlt 30 nap a tegnappal bezárólag.
A következő képletek attól függnek, hogy az adataid sorokban vagy oszlopokban vannak.
Ha jól értettem, akkor az adataid oszlopokban vannak, első sor a dátum, második sor a db-szám, harmadik sor az érték. Mivel a C oszlopig van a diagram forrásadata, kezdődjön ez az F oszloptól.
Ebben az esetben a VKERES függvényt tudod használni.
A második oszlop képlete:=VKERES(DÁTUMÉRTÉK($A2);$E$1:$DD$3;2;0)
A harmadik oszlopé pedig=VKERES(DÁTUMÉRTÉK($A2);$E$1:$DD$3;3;0)
Ezeket is végighúzod a sorokon.
Ezzel készen is van a diagram forrásadat. Már csak kozmetikázni kell.
Gondolom, a munkaszüneti napok értéke így a második és harmadik oszlopban 0 lesz.
Ezért erre a forrástáblára kell egy autoszűrő. A második oszlopon kiveszed a 0 értékeket tartalmazó sorokat a szűrővel. Ezzel meg is van a diagram.
Amennyiben az adataid sorokban vannak, akkor az FKERES függvényt használhatod a VKERES helyett.
Végeredmény:
Üdv.
-
Fferi50
Topikgazda
válasz
Fonthy
#43869
üzenetére
Szia!
Először is, a kérdésedben az szerepel tej vagy milka, ehhez képest az ÉS függvényt használod a képletben.
Másodszor, ebben a képletben én nem látok keresőfüggvényt (amikben egyébként lehet használni a helyettesítő karaktereket).
A szövegrészlet keresésre a SZÖVEG.KERES vagy a SZÖVEG.TALÁL függvényeket használhatod, attól függően, hogy kell-e kisbetű-nagybetű érzékenység.=HA(VAGY(HAHIBA(SZÖVEG.KERES("tej";A1);0);HAHIBA(SZÖVEG.KERES("Milka";A1);0))>0;B1;0)
A HAHIBA függvény azért kell, mert a SZÖVEG.KERES függvény hibát eredményez, ha nem találja a keresett szövegrészletet.
Üdv. -
Fferi50
Topikgazda
válasz
Doki16
#43864
üzenetére
Szia!
Bekapcsolod az autoszűrőt. A két oszlopra külön-külön csinálsz szín szerinti szűrést a sárga cellákra.
A C oszlopba a képlet:
Amikor az első oszlopot szűröd:
=A2 (az első látható cella az A oszlopban)
Amikor a második oszlopot szűröd:
=B3 (az első látható cella a B oszlopban)
A képletet végighúzod az érvényes szűrő alatt a látható cellákon.
Utána megszüntetheted a szűrést.Üdv.
-
Fferi50
Topikgazda
Szia!
Mit jelent az, hogy nem működik? Hibát eredményez? Milyen hibát?
Talán meg kellene adni neki, hogy a Dátum függvénynél melyik munkalap celláit használja.
Mert ebben a formában az aktív munkalapról veszi az F5,G5 cellákat, s ha ott nincs érték vagy szöveg van, akkor ....
Üdv. -
Fferi50
Topikgazda
Szia!
Némi ellentmondást érzek:
"De a megjelenítés csak a naptári év 12 hónapja legyen."
Később pedig:
" így a 3x12 hónap azaz 36 oszlopban látom januáról- decemberig a hónapokat."
Most akkor 12 hónapot vagy 3x12 hónapot (amiből a tárgyévi egy része még üres) szeretnél láthatónak?
Ha jól gondolom, akkor évente egyszer kell ehhez hozzányúlni, akkor, amikor évváltás van. Akkor pedig:
1. kijelölöd a "felesleges" 12 hónapot és elrejted.
2. az összegző oszlopod elé beszúrsz 12 új oszlopot és megcsinálod a fejlécét.
Ez kb. 5 perces munka.
Üdv. -
Fferi50
Topikgazda
válasz
RAiN91
#43824
üzenetére
Szia!
"egyszer lefut indulásnál, utána abba hagyja."
Ez mit jelent? A ciklusból egyet megcsinál és kilép hibával? Amikor megnyitod a munkafüzetet egyszer lefut és utána többet nem?
Ez egy eseménykezelő, ami akkor indul el, ha a munkalapot újraszámolják. Ha nincs újraszámolás, akkor nem fog lefutni.
Az ujraszámolást kiválthatod pl. a Sheets("Munka1").Calculate utasítással.
Üdv. -
Fferi50
Topikgazda
válasz
#05304832
#43818
üzenetére
Szia!
Egyrészt nem világos, hogy melyik oszloppal mit szeretnél.
Másrészt a harmadik oszlopban biztosan nem dátum van, hanem szövegek, hiszen február 30 ugyebár nem létező dátum. És kérdés a második oszlop is. A szöveget pedig másképpen rendezi az Excel mint a számokat.
Üdv. -
Fferi50
Topikgazda
válasz
RedHarlow
#43801
üzenetére
Szia!
Létrehoztam három nevet (Képletek - Névkezelő, új név):
AdagA=INDEX(Munka1!$A$1:$V$6;HOL.VAN(Munka1!$A10;Munka1!$A$1:$A$6;0);HOL.VAN(Munka1!B$9;Munka1!$A$1:$V$1;0))
AdagB=INDEX(Munka1!$A$1:$V$6;HOL.VAN(Munka1!$A10;Munka1!$A$1:$A$6;0);HOL.VAN(Munka1!B$9;Munka1!$A$1:$V$1;0)+1)
AdagC=INDEX(Munka1!$A$1:$V$6;HOL.VAN(Munka1!$A10;Munka1!$A$1:$A$6;0);HOL.VAN(Munka1!B$9;Munka1!$A$1:$V$1;0)+2)
Ezek megkeresik a táblázat 3 oszlopában a naphoz tartozó adagokat.
Az INDEX függvény első paramétere legyen a teljes rendelős táblázatod. Az első HOL.VAN függvény 2. paramétere a rendelős táblázat első oszlopa (a nevek), a második HOL.VAN függvény 2. paramétere a rendelős táblázat első sora (a napok).
A HOL.VAN függvények első paramétere az eredménytábla első oszlopa, illetve az eredménytábla következő oszlopai.
Kérlek, figyelj a $ jelekre, mert ez határozza meg a cellákat.
Ezek után az eredménytábla első cellájának (B10) képlete:=HA(AdagA>0;AdagA & "A";"") & HA(AdagB>0;KARAKTER(10) & AdagB & "B";"") & HA(AdagC>0;KARAKTER(10) & AdagC & "C";"")
Ez a képlet jobbra és lefelé is húzható!
Az eredménytábla celláinak formázásában állítsd be a sortöréssel több sorba opciót a képletek lehúzása után.
Mutatom az eredményt:
Remélem sikerül.
Üdv. -
Fferi50
Topikgazda
válasz
pero19910606
#43799
üzenetére
Szia!
De miért nem használod ki az Excel lehetőségeit: a ciklus helyett beírhatod a képletet az F oszlopba egy lépésben, utána átváltoztathatod értékké, ha szükséges:
Hosszabban:Sub szamol()Dim LS As LongLS = Cells(Rows.Count, 1).End(xlUp).RowRange(Cells(4, 6), Cells(LS, 6)).Formula = "=if(E4=0,0,B4/E4)" 'beírjuk a képletet a tartománybaRange(Cells(4, 6), Cells(LS, 6)).Value = Range(Cells(4, 6), Cells(LS, 6)).Value 'átalakítjuk értékkéEnd SubRövidebben:
Sub szamolb()Dim LS As Range ' tartományként definiáljuk a változótSet LS = Cells(Rows.Count, 1).End(xlUp).Offset(0, 5) 'ez lesz az F oszlopban az utolsó cellaWith Range(Cells(4, 6), LS) ' az F oszlop szükséges cellái.Formula = "=if(E4=0,0,B4/E4)" 'beírjuk a képletet.Value = .Value 'értékké alakítjukEnd WithEnd SubA második változatban kevesebbet kell ísmételni a makróban, ezért írtam, hogy rövidebben.
Ha a képletet meg szeretnéd tartani, akkor a képletadás utáni sort töröld ki.
Ez ennyi sornál szerintem gyorsabb is, mint a ciklus futása.
Üdv. -
Fferi50
Topikgazda
válasz
pero19910606
#43797
üzenetére
Szia!
Annyi a probléma, hogy Long típusú változót definiáltál, ami egész számot tartalmazhat csak.
Legyen Double a változód típusa.
Üdv. -
Fferi50
Topikgazda
válasz
tomek017
#43793
üzenetére
Szia!
Hiába állítod szám formátumra, ha szöveg van benne. A 062/12 sosem lesz szám ebben a formában.
Ötlet: A / jel utáni értéket tedd külön oszlopba. Utána rendezd a 2 oszlopot együtt, majd fűzd össze ismét / jellel.
(Adatok - szövegből oszlopok - tagolt - határolójel egyéb /).
Üdv, -
Fferi50
Topikgazda
válasz
pero19910606
#43790
üzenetére
Szia!
Megmutatnád a makrót, amivel ezt az osztást csinálod? Szerintem nem a számokkal van baj.
Üdv. -
Fferi50
Topikgazda
válasz
SkiDev
#43780
üzenetére
Szia!
Megmutatnád az elrendezést?
A napoknál szerepel a hónap neve is?
Miért kell újralistázni a napokat és hova?
Ha arra gondolsz, hogy a 29/30/31 ne látszódjon az adott hónapban, akkor a ezeknél a napoknál a hónap függvényében írod a nap számát vagy üresen marad.
Pl. ha(hónap<>"február";29;"")
ha(vagy(hónap="április";hónap="június";hónap="szeptember";hónap="november");"";31)
Üdv. -
Fferi50
Topikgazda
válasz
szricsi_0917
#43768
üzenetére
Szia!
Tulajdonképpen mit is szeretnél? Nem olyan lassú az a szűrés szerintem. De ha a feladatot pontosan megfogalmazod, akkor mi is tudnánk használhatóbb választ adni szerintem.
Üdv.
-
Fferi50
Topikgazda
Szia!
Talán indirekt függvénnyel megoldható lenne...
A munkalapok neveit felírod az első (vagy a 100. sorba) ebben a formában:'12th July ''06'!
Az aposztrófok azért kellenek, hogy a nevet értelmezni tudja a képletben.
Ezután a képlet, ha pl. a B oszlopban kezdődnek a munkalap nevek:=INDIREKT(B$1 & "B5")
Ezt végig lehet húzni a soron jobbra és így az első sorban levő munkalapról a B5 cella értéke kerül bele.
Ezt még lehetne kombinálni pl. azzal, hogy a második sorban x-eket teszel abban az oszlopban, amelyik adatra szükséged van.
Akkor a képlet (nyilván legalább a harmadik sortól):=HA(B2="x";INDIREKT(B$1 & "B5");"")
Vagyis csak akkor lesz benne értékes adat, ha x van a B2 cellában. Ez a képlet is húzható jobbra.
A plusz munka - ami szerintem megéri, hogy a munkalapok neveit ki kell gyűjtened egyszer.
Erre egy kis makró:Sub nevkigyujto()Dim sh As Worksheet, x As Longx = 2For Each sh In SheetsIf sh.Name <> ActiveSheet.Name ThenIf InStr(sh.Name, "'") > 0 ThenCells(1, x).Value = "'" & Replace(sh.Name, "'", "''") & "'!"ElseCells(1, x).Value = "'" & sh.Name & "'!"x = x + 1End IfEnd IfNextEnd Sub
Ez abban a formában gyűjti ki az első sorba a munkalap neveket, hogy az INDIREKT függvényben használni lehessen.
Szúrd be az üres munkalapot a többiek elé és futtasd le a makrót. Ha utána már nincs rá szükséged, akkor mentésnél hagyd figyelmen kívül a makrós figyelmeztetést - egyébként makróbarátként vagy bináris fájlként (xlsm ill. xlsb) kell mentened.
A makrót Alt+F11 után Insert Module részbe kell bevinned.Üdv.
-
Fferi50
Topikgazda
válasz
szricsi_0917
#43759
üzenetére
Szia!
Szerintem a 2. példádban pont egymás utáni oszlopok vannak feltétel szerint listázva. Csak ott előre lehet tudni, hogy melyik feltételhez melyik lista tartozik a következő oszlopban. A listák el vannak nevezve. Neked elvileg szűrt listára van szükséged. Ezt a szűrést megcsinálhatod az Adatok munkalapon direktben -> szűrsz az A oszlopra, majd szűrsz a B oszlopban megjelentekre - ezután a C oszlopra stb. A végén megkapod azt az egy /vagy több sort, amire szükséged van.
Üdv. -
Fferi50
Topikgazda
Szia!
(Azok a tab-ok Munkalap (Sheet) névre hallgatnak.)
"egy új üres tabon egymás mellé vagy egymás alá kigyűjteni"
Tehát nem összeadni. Gondolom kellene az is, hogy melyik érték melyik munkalapról való.
Ez úgy gondolom, mindenképpen makró lesz. Előtte azonban nem ártana mégis nekidurálni magad valami szabályszerűséget vinni az elnevezésbe, mert így egyszerűen nem lehet automatizálni a dolgot.
A munkalap sorszáma (indexe a munkalapon belül) lehetne egyedi hivatkozás, azonban vedd figyelembe, hogy egy munkalap beszúrása vagy a lapok átrendezése megváltoztatja ezeket a sorszámokat! Tehát csak feltételesen használható, addig amíg a munkalapokat nem mozgatod.
Egy makróban meg lehet oldani, hogy bekérje pl. a kezdő és végső munkalap sorszámát /vagy nevét (ha az már egyértelmű), a cellák címét és ez alapján végrehajthatja a szükséges kigyűjtést.
De ehhez az előzőeket figyelembe kell venned.Üdv.
-
Fferi50
Topikgazda
válasz
szricsi_0917
#43757
üzenetére
Szia!
Ezt most nem is értem egészen. Az Adatok között lesz többször az A oszlopban ugyanaz a név más B-C stb. oszlop értékekkel? Ebből szeretnél a lista munkalapon válogatni?
Akkor többszíntű legördülő listára van szükséged. Itt is találsz rá példákat, ha rákeresel.
Üdv. -
Fferi50
Topikgazda
válasz
szricsi_0917
#43755
üzenetére
Szia!
A név kiválasztása után miért is kell még legördülő lista, ha a hozzá tartozó adatokat szeretnéd megkapni? Hiszen ott már nem választás kérdése, mi jelenik meg.
Használd az FKERES függvényt a többi adat megtalálásához:
pl. a B2 cellában= FKERES(A2;Adatok!$A$1:$D$5;oszlop();0)
a képlet és ez húzható lefelé és jobbra is.
De ha más a fejléc sorod, akkor az oszlop() helyett a harmadik paraméter legyen:HOL.VAN(B$1;Adatok!$A$1:$D$1;0)
a képlet így is húzható lefelé és jobbra is.
Így mindig a lista fejléceinek megfelelő érték kerül az adott oszlop cellájába.
(persze a két munkalapon a fejléceknek azonosnak kell lenni)
Üdv. -
Fferi50
Topikgazda
válasz
Delila_1
#43750
üzenetére
Szia!
Sajnos ez így nem stimmel. Lehet, hogy a formázásban nem okoz galibát, de akkor sem korrekt szerintem. A pont hiánya pedig nem 0. Legalábbis a 2016-os Excelben biztosan nem.
A SZÖVEG.KERES eredménye akkor, ha nem találja a keresett szöveget, ÉRTÉK hiba.
Próbáld ki az ellenkezőjét a formázásban, azaz formázz akkor, ha nem fordul elő benne a pont. A SZÖVEG.KERES(".";A1) értéke soha nem lesz 0. (Sajnos így működik ez a függvény az Excelben.
Ezért gondolom, hogy másként kell a feltételes formázás függvényét megadni.
Üdv. -
Fferi50
Topikgazda
Szia!
Csinálj egy segédoszlopot, aminek a képlete:
=HA(A3="";H2;A3)
Ezt végighúzod.
Ezután egy második segédoszlopba írd a következő képletet:
=HA(H3=H4;B3 & "!" & I4; B3)
(A felkiáltójel az összefűzött értékek "szétválasztója", helyette mást is írhatsz).
Ezt is végighúzod az oszlopon, itt egy részlet az eredményből:
A két segédoszlopot kijelölöd - másolás, irányított beillesztés - értéket.
Ezután az A oszlopra teszel egy szűrőt - kiválasztod az üreseket. Kitörlöd a sorokat.
Majd a 2. segédoszlop értékeit átmásolod a B oszlopba.
Ezután a 2 segédoszlop törölhető.
Eredmény:
Üdv.
-
Fferi50
Topikgazda
Szia!
Talán érdemes lenne privire váltani. Ott olyan információkat is meg lehet osztani, amit egyébként nyilvánosan nem tennél.
Szerintem Excelben is lehet szép formázásokat csinálni, aztán sablonként elmenteni. Utána azt használni. Ha mutatnál mintákat (amiket Wordben gondoltál kivitelezni), megnéznénk, milyen lenne Excelben.
Üdv. -
Fferi50
Topikgazda
Szia!
Izgalmas... bár még az is lehet, hogy a neten valahol már van ilyen megoldás.
Nekem így első (na jó, második) olvasásra inkább az Excel -Word párosítás jön be, persze csak azért, mert az Excelt viszonylag jól tudom makrózni és abból (is) elérhető a Word, sőt programozható is belőle.
Továbbra sem hiszem viszont, hogy userform kellene.
Kíváncsian várom, mire jutottál eddig.
Üdv. -
Fferi50
Topikgazda
Szia!
Miért form és miért makró? Miért kell a formra új sort tenni?
Legördülő lista érvényesítéssel működik, képletek hozzá rendelhetők, lehet a munkalapot formázni, sőt sablonnak elmenteni.
Jó lenne, ha ahova eddig eljutottál közkinccsé tennéd. Továbbá elmondanád mi is a cél.
Üdv. -
Fferi50
Topikgazda
válasz
zsolti_20
#43714
üzenetére
Szia!
Kell hozzá még 2 segédoszlop
Az elsőbe átmásolod a szállítás oszlopot - értékként fejlécestől.
Ezután Adatok - ismétlődések eltávolítása.
Ekkor megkapod az egyedi csomagokat.
Második segédoszlop 2. cella képlete (az első segéd nekem a P oszlop volt):=DARABTELI(Táblázat2[szállítás];P2)/(HOSSZ(P2)-HOSSZ(HELYETTE(P2;",";""))+1)
(az elején úgy jött a hivatkozás, hogy egérrel jelöltem ki a tartományt)
Ezt a képletet végighúzod. Megkapod, hogy az adott összetételű csomagból hány db van.
Ezt rendezheted nagyság szerint. Ezután a szűrődet a kimutatásban eszerint állítgatod.
Üdv. -
Fferi50
Topikgazda
válasz
zsolti_20
#43708
üzenetére
Szia!
Arra gondoltál, hogy az 1 tételes csomagoknál az egyes azonos tételeket kellene összesíteni?
Hány VGA, CPU, stb. ... csomag van?
Mert akkor csak annyit kell tenned, hogy bejelölöd a több elem kiválasztását a szűrőben. Kiválasztod az egy tételes szűrőket és máris látod, melyikből hány van.
De a kimutatásba is beveheted a csomagok darabszámát így:
A nevet az értékmező beállításai jobb egérgombos menüpontban változtathatod meg
Az eredmény pl.Itt CPU és VGA egyedi megrendelések vannak. A csomag db összesen mutatja, melyikből hányat kell összeállítani.
Üdv.
-
Fferi50
Topikgazda
válasz
szricsi_0917
#43709
üzenetére
Szia!
Kissé zavaros amit írtál.
"az A oszlop legördülő lista (ehhez az adatok a B oszlopban vannk pl)."
Milyen adatok vannak a B oszlopban? Amiből a listát megjeleníti az A oszlopban? Mert akkor természetes, ha ott egy adatot megváltoztatsz, a legördülő listában is - de csak ott! - megváltozik.
" az A1 oszlopban kiválasztom a Kis Pistát a legördülő lista alapján"
A1 oszlop nincs!
Viszont, ha egyszer egy cellában egy értéket kiválasztottál, akkor az nem módosul mindaddig, amíg újra vissza nem mész és meg akarod változtatni a kiválasztást. A kiválasztás nem képlet és így nem frissül automatikusan - de ha legközelebb ismét abban a cellában választasz, akkor már az átírt érték fog megjelenni.
Ha pontosítod a kérdést, jobb választ kaphatsz.
Üdv. -
Fferi50
Topikgazda
válasz
zsolti_20
#43702
üzenetére
Szia!
Akkor próbáld ki a következőket, kell hozzá két segédoszlop.
1. lépés: Alakítsd át táblázattá az adataidat
Rendezd az adataidat az alábbiak szerint:
1. szint order number legkisebbtől-legnagyobbig
2. szint SKU A-Z
2. lépés: Az első segédoszlop (E oszlop) fejléce (nálam szállítmány tartalma)
E2 cella képlete=HA(A1=A2;HA(A2<>A3; ";" & E1&","&B2;E1&","&B2);HA(A2<>A3; ";" & B2;B2))
Ez lehúzható az oszlopon, illetve a táblázat esetén automatikusan kitöltődhet.
Eredménye: Az egyes rendelésekhez tartozó tételek egymás mellé írása egy cellában, az utolsó rendelési tételnél a cella értéke ; (pontosvesszővel) kezdődik. Ennek jelentősége a második segédoszlopnál lesz.
3. lépés: A második segédoszlop (F oszlop) fejléce (nálam szállítás)
F2 cella képlete=INDEX(E$1:E$500; HOL.VAN("*;*";E2:E$500;0)+SOR()-1)
Ez is lehúzható az oszlopon vagy automatikusan kitöltődik.
Így a rendelések mellett minden sorban megtalálható a teljes rendelési sorozat.
4. lépés: Kijelölöd az A1 cellát. Beszúrás - kimutatás - eldöntöd, hogy új munkalapon vagy a meglevő munkalapon (ekkor válasz egy cellát a kimutatás helyének).
A mezőket a következőképpen válaszd ki:
order number -> sorok
SKU -> oszlopok
qty -> értékek - összeg
szállítás -> szűrők
Így néz ki:
Ha "eltünteted" a Kimutatásmezők párbeszédlapot, akkor megkapod a kimutatást:
Itt a kulcs a szállítás mező, ami szűrőként szolgál. A lenyílóval kiválaszthatod, hogy mely tételeket szeretnéd látni:
A RAM,GPU,VGA kombinációt választva ezt látod:
Az első tételt kiválasztva pedig ezt:
A megoldásnak működnie kell szerintem sok csomag és sok tétel esetén is. Amennyiben új csomagot vagy tételt adsz hozzá, a táblázat automatikusan bővül, mindössze a kimutatást kell frissítened és a szűrőket váltogatnod.
Megcsinálni rövidebb idő, mint ezt az egészet elolvasni.
Üdv.
-
Fferi50
Topikgazda
válasz
zsolti_20
#43699
üzenetére
Szia!
Nem PowerQuery és gondolom hosszabb is annál.
1. lépés: Rendeld a 2 hatványait az egyes alkatrészekhez (Pl. CPU 1, RAM 2,VGA 4, GPU 8,..stb). Ez arra lesz jó, hogy a csomagok tartalmának egyezőségét vizsgáljuk. Csak akkor lesz a csomagok értéke egyforma, ha azonos alkatrészek vannak benne.
Hasznos az is, ha táblázattá alakítod az adatokat.
Ezután csinálj egy kimutatást: sorcimkék => order number
oszlopcimkék => SKU
értékek => összeg qty és összeg pontszám.
A pontszám végösszeget tartalmazó oszlop első celláját kijelölöd, jobb egérgomb - rendezés - rendezés csökkenő sorrendben (vagy növekvő sorrendben, ahogy tetszik).
Eredmény:
Az azonos pontszámú csomagok így egymás alá kerülnek. Ha az azonos pontszámú csomagokat kijelölöd, akkor a Kimutatáseszközök Elemzés csoportban a kijelöltek csoportosítása menüponttal csoportba foglalódnak. Majd a Kimutatáseszközök Tervezés csoportban a Részösszegek - Minden részösszeg megjelenítése a csoport alatt ponttal össze is adja az értékeket.
Üdv.
-
Fferi50
Topikgazda
Szia!
"látható terület A4 méretű legyen csak"
No ez azért érdekes, mert az, hogy mi fér rá egy A4-es lapra....
De azért próbáld meg ezt:
Kijelölöd az összes munkalapot, aminél ezt szeretnéd.
Fájl menü - nyomtatásnál beállítod, hogy A4 lapra szeretnél nyomtatni.
A munkalap csoporthoz visszatérve - Nézet menü - oldaltörés megtekintése.
Ezután az 1. oldalon kívül eső teljes sorokat kijelölöd - jobb egérgomb - elrejtés.
Ugyanezt megcsinálod az oszlopokkal is.
Aztán visszatérsz a normál nézetbe és feloldod a csoportos kijelölést.
(De azért ne lepődj meg, ha a fájl mérete megnövekszik.)Üdv.
-
Fferi50
Topikgazda
válasz
Core2duo6600
#43687
üzenetére
Szia!
Ha csak a duplikációra vagy kíváncsi, akkor Kezdőlap - feltételes formázás - cellakijelölési szabályok - ismétlődő értékek - itt megadhatod, hogy milyen legyen a cellák formája.
Számolni csak függvénnyel lehet vagy kimutatással.
Üdv. -
Fferi50
Topikgazda
válasz
Core2duo6600
#43685
üzenetére
Szia!
=HA(Darabteli(A$1:A$20000;A1)>1;Darabteli(A$1:A$20000;A1);"")
Ezt húzd le az oszlopon. (Ha az A oszlop tartalmazza az értékeket, akkor a B oszlopban).
Üdv. -
Fferi50
Topikgazda
Szia!
Szerintem ezt csak a "külső" (valóban Excelen kívüli?) program ismeretében lehetne megválaszolni neked. Ha nem lehet publikussá tenni - az érzékeny adatok nélkül - akkor próbáld meg priviben átküldeni pár itteni fórumozónak (pl. Delila, Mutt, Lappy).
Továbbá érdemes lenne megkeresni a "külső" program fejlesztőjét és tőle kérni segítséget, hiszen ő tudja, mit hogyan fogad a programja.
Üdv, -
Fferi50
Topikgazda
válasz
Véreshurka
#43672
üzenetére
Szia!
Ezt próbáld ki még Lappy javaslata mellé (az ugyanis csak az x tengelyt formázza):Sub formaz()Dim diag As Object, src As SeriesFor Each diag In SheetsIf TypeName(diag) = "Chart" ThenFor Each src In diag.SeriesCollectionsrc.HasDataLabels = Truesrc.DataLabels.NumberFormat = "#,##0.00"NextEnd IfNextEnd Sub
Üdv. -
Fferi50
Topikgazda
válasz
Véreshurka
#43668
üzenetére
Szia!
"2 tizedes jegyig kerekítsen az excel" Szerintem itt arra gondoltál, hogy 2 tizedest jelenítsen meg. (Mert a kerekítést függvénnyel lehet megoldani.)
Ha minden munkalapon azonos cellákról van szó, akkor
- kijelölöd a munkalapokat csoportként
- kijelölöd a kívánt cellákat
- jobb egérgomb - cellaformázás - beállítod a számformátumot.
Eredmény: az adott cellatartomány minden kijelölt munkalapon kijelölődik és formázódik.
Ezt nagyobb cellatartományra is meg tudod csinálni.
Diagramokkal nem próbáltam, megnézheted, hogy az adatsort vagy a tengely kijelölve működik-e a formázás.
Üdv. -
Fferi50
Topikgazda
válasz
glocker
#43633
üzenetére
Szia!
Nézd meg a következő makrót, ami az aktív munkalapra másolja a megnyitni kívánt fájl adatait az első sortól kezdődően. Utána a munkalapot egy új excel fájlba menti el, de az eredményt láthatod a munkalapon is. Az elmentett fájlt már megnyithatod.
A makrót egyenlőre egy üres munkafüzetbe másold be egy modulba és mentsd el makróbarátként ezt a munkafüzetedet. (Alt+F11 - Insert menü - Module)Sub beolvaso()Dim fs As Integer, fnev As String, bestr As String, kistr As Variant, x As Long, valjel As Stringx = 1fs = FreeFile()fnev = "C:\Users\user\Downloads\makroteszt\Munka2.csv" ' ide írd a saját fájlod nevétActiveSheet.UsedRange.ClearContents 'kitöröljük ami a lapon vanOpen fnev For Input Access Read As #fsDo While Not EOF(1)Line Input #1, bestrIf x = 1 Then 'megállapítjuk az elválasztó jeletIf InStr(bestr, ";") > 0 Thenvaljel = ";"ElseIf InStr(bestr, vbTab) > 0 Thenvaljel = vbTabElseIf InStr(bestr, ",") > 0 Thenvaljel = ","End IfEnd IfEnd IfIf valjel = "" Then valjel = ";"End Ifkistr = Split(bestr, valjel)Range(Cells(x, 1), Cells(x, UBound(kistr) + 1)).Value = kistrx = x + 1LoopClose #1'A beolvasott fájlt elmentjük xlsx formátumban --ezeket a sorokat ki is törölhetedActiveSheet.Copy 'de akkor magadnak kell menteni a munkalapotActiveWorkbook.SaveAs "C:\Users\user\Downloads\makroteszt\Munka22.xlsx" 'ide írod a saját nevedActiveWorkbook.Close FalseEnd Sub
Természetesen megoldható az is, hogy a beolvasandó fájlt választani lehessen a szokásos módon.
Ha bármi gondod keletkezik, írj, akár priviben is.
Üdv. -
Fferi50
Topikgazda
válasz
glocker
#43629
üzenetére
Szia!
Ha megváltoztatod a kiterjesztést txt-re, akkor megnyitáskor felajánlja a szövegből importálást (lsz. olvass tovább).
Megadod, hogy tagolt, bejelölöd a határoló jelet, majd utána kijelölöd az összes oszlopot és bejelölöd szövegnek.
Ezután Befejezés.
Ha mégis lenne olyan oszlop, ahol számokra van szükséged, akkor azokat megszorzod 1-el a következők szerint: 1 cellába beírod 1. Ezután Ctr+c (másolás). Kijelölöd az oszlopot - irányított beillesztés - művelet - szorzás.
Ennél egyszerűbb makró nélkül szerintem nincs.
Makróból megoldható, hogy a beolvasáskor az eredeti formátum megmaradjon.Üdv.
-
Fferi50
Topikgazda
válasz
botond187
#43628
üzenetére
Szia!
Nem olyan egyszerű ez a dolog, hiszen több körülményt is figyelembe kell venni. Csak egyéni függvényekkel lehet megoldani. Ezeket másold be egy modulba. (Alt + F11, Insert - Module)Function nemegyezo(mit As Range, mivel As Range) As BooleanDim erteke1 As Long, erteke2erteke1 = osszeado(LCase(mit.Value))erteke2 = osszeado(LCase(mivel.Value))nemegyezo = erteke1 <> erteke2End FunctionFunction osszeado(mit As String) As LongDim ckar As String * 1, x As Integer, erteke As LongFor x = 1 To Len(mit)ckar = Mid(mit, x, 1)Select Case ckarCase "á"erteke = erteke + Asc("a")Case "é"erteke = erteke + Asc("e")Case "í"erteke = erteke + Asc("i")Case "ó", "ö", "ő"erteke = erteke + Asc("o")Case "ú", "ü", "ű"erteke = erteke + Asc("u")Case " "Case Elseerteke = erteke + Asc(ckar)End SelectNextosszeado = ertekeEnd Function
A következőket a magyar Excel szerint írom, gondolom nem okoz problémát:
Kijelölöd a formázni kívánt cellákat.
Ezután a feltételes formázás - a formázandó cellák kijelölése képlettel a képlet pedig:=nemegyezo($A1;$B1)
Ha nem ebben a két oszlopban vannak a nevek, akkor annak a két oszlopnak a címét írd ide. Az elválasztójelet is az Excelednek megfelelően írd be.
Ezután kiválasztod a formátumot, majd ok.
A szabályok kezelése menüben módosíthatod az érvényességi területet.
Figyelem: Ha nagyszámú neved van, akkor lassan fog érvényesülni a feltételes formázás, mert betűről-betűre hasonlít össze két oszlopot a függvény. Tehát légy türelmes.
Remélem sikerül.
A munkafüzetet makróbarátként vagy binárisként kell elmentened!!!
Üdv. -
Fferi50
Topikgazda
válasz
mouzrr
#43619
üzenetére
Szia!
Egy javaslat:
Tegyél az A oszlop minden olyan cellájába egy jelet (pl. x), amely mellett a B oszlopban szám van.
Ezután a képlet a C1 cellába:=HA(A1="x";DARAB(INDIREKT("A"&SOR()+1&":A"&HOL.VAN("x";INDIREKT("A"&SOR()+1&":A10000");0)));"")
Ez lehúzható végig az oszlopon.
Ha nem szeretnéd az A oszlopot "elcsúfítani", akkor segédoszlopba tedd be az x-eket azon cellák mellé, amelyekben van a B oszlopban érték. Akkor a HOL.VAN függvényben erre az oszlopra kell hivatkoznod.Ha esetleg megfelel az a megoldás, hogy a számok mellett nem az alattuk, hanem a felettük levő darabszámok szerepelnek, akkor a C2 cella képlete:
=HA(ÜRES(A2);DARAB(A$1:A1)-SZUM(D$1:D1);"")
Ez húzható le az oszlopon. Nem kell hozzá segédoszlop/vagy jelek elhelyezése sem.
Üdv. -
Fferi50
Topikgazda
válasz
chopin42
#43582
üzenetére
Szia!
Helyben csökkentésre lehetőség:
1. Egy segédcellába beírod azt az értéket, amivel csökkenteni szeretnél.
2. Ezt a segédcellát másolod (pl. Ctrl+c)
3. Kijelölöd a csökkentendő cellákat
4. Jobb egérgomb - irányított beillesztés - műveleteknél KIVONÁS bejelölöd - OK
5.A segédcellát törlöd.
Üdv. -
Fferi50
Topikgazda
válasz
jackal79
#43577
üzenetére
Szia!
Ha az fx gombra rákattintasz a szerkesztősorban, akkor láthatod, mi a probléma:
A HA függvényt nem így kell használni. Az első részbe kell a vizsgálat, tehát oda be kell írni az eredmény értékelést. Az igaz részbe megy a +, a hamis részbe pedig a - , De vigyázz szövegként kell beírni.
A képlet ezután így fog kinézni:=HA(SZORZAT(D2:M2)<0,00001;"+";"-")Üdv.
-
Fferi50
Topikgazda
válasz
chopin42
#43569
üzenetére
Szia!
Kijelölöd az A oszlopot. Utána Adatok - Szövegből oszlopok - a párbeszédablakban bejelölöd,hogy Tagolt. A következő párbeszédablakban a határoló jeleknél bejelölöd a vesszőt, a harmadik ablakban a megadod, ha szükséges, hogy melyik oszlop milyen formátumú legyen. Rendeltetési helynek megadod a B1 cellát, majd befejezés.
Ezzel megkapod mindhárom oszlop értékét szétválasztva.
Üdv. -
Fferi50
Topikgazda
válasz
jackal79
#43566
üzenetére
Szia!
Ha arra gondolsz, hogy az egyenleg a bevétel-kiadás alapján automatikusan mutassa az aktuális értéket, akkor ha C1-be beírod az induló egyenleget, a bevétele és a kiadás pedig a 2. sortól kezdődik, a C2 cella képlete:=C1+A2-B2
és ez lehúzható a C oszlopban.
Az induló egyenleg mindenképpen kell hozzá.
Üdv. -
Fferi50
Topikgazda
válasz
jackal79
#43559
üzenetére
Szia!
Javaslom a függvények súgójának tanulmányozását. Ha a szerkesztősorban levő fx képre kattintasz egy függvény szerkesztése közben, akkor előjön a függvény párbeszédablakos formája, némi magyarázattal, az eredmény mutatásával és ott van a súgóra mutató hivatkozás is.
Gondold át, hogy a munkád során milyen terület Excel függvényeire lehet majd szükséged.
Üdv. -
Fferi50
Topikgazda
válasz
jackal79
#43557
üzenetére
Szia!
"Mi nem stimmel?"
A képlet és a statisztikai ismereted. Mit is csinál a képleted:
Kiszámolja a D2 : D151 és a Darabteli(B2 : B151;1) ÁTLAGÁT! Ami semmi esetre sem a férfiak átlaga.
A helyes képlet vagy az ÁTLAGHA, vagy SZUMHA(férfipontok) /DARABTELI(férfiak)
(Mivel az átlag egy összeg és egy darabszám hányadosa.)
Üdv. -
Fferi50
Topikgazda
válasz
Lokids
#43553
üzenetére
Szia!
Miért nem csinálsz kimutatás diagramot belőle.
Szerintem fordítva értelmezed a tengelyeket. A vízszintes tengely az x a függőleges az y.
Teszel rá egy gombot, amivel váltani lehet a sorozatok között. A makróban használd a seriescollection(x).formula tulajdonságát.
Üdv. -
Fferi50
Topikgazda
válasz
Lokids
#43551
üzenetére
Szia!
Nem egészen értem mit szeretnél. Hiszen a H1:H7 cellákban értékek vannak, miért szeretnéd azt az x tengelyre tenni? Az x tengely a kategóriák adatait tartalmazza. Ha pedig az összegeket szeretnéd csak látni, akkor az első adatsort törölni kell a diagramról:
... Chart.SeriesColletion(1).Delete
Egyébként az x tengely címét csak az adatsor formulájának megadásával tudod megváltoztatni.
Azt hogy hogyan néz ki a formula úgy tudod megnézni, hogy kijelölöd az adatsort és megnézed a szerkesztőlécen mit ír ki.
A Formula 4 részből áll:
1. Az adatsor neve
2. Az x tengely forrása
3. Az adatok forrás
4. Az adatsor indexe (hanyadik legyen)
Természetesen makróból ez másképp (angolul) néz ki:=SERIES(Munka1!$X$64,(Munka1!$T$1,Munka1!$AB$1:$GX$1),Munka1!$AA$64:$GX$64,3)
A diagram az első adatsor x tengely adatait jeleníti meg, kivéve ha van másodlagos tengely is.
A tengelynél magát az adatok forrását nem tudod megadni csak a formázási adatokat.
Üdv. -
Fferi50
Topikgazda
válasz
Lokids
#43549
üzenetére
Szia!
Ha így adod hozzá a diagramot:ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).SelectActiveChart.SetSourceData Source:=Range("Beszerzesek!$F$1:$H$7")
akkor az kiválasztott marad és így teheted a kívánt helyre pl.Selection.Top=Range("A1").TopSelection.Left=range("F1").Left
Az x tengelyt pedig így érheted el:Activesheet.ChartObjects(1).Chart.Axes(1).Select
Az elhelyezéshez is használhatod a ChartObject objektumot az előző sor alapján.
Üdv. -
Fferi50
Topikgazda
válasz
zsolti_20
#43541
üzenetére
Szia!
Tekintsünk el a tábládban levő egyéb oszlopoktól, maradjon csak a 3 oszlop, (Order No, SKU, Qty). A többi törölhető.
Próbáld meg a következőket:
1. lépés: A D2 cellába írd be ezt a képletet:=DARABTELI(A:A;A2)
és húzd végig az oszlopon lefelé. A D oszlop első cellájába írd mondjuk: Tételszám.
Erre azért van szükség, hogy azokat a csomagokat megtaláljuk, amelyben a keresett SKU egyedül fordul elő.
Tegyél automatikus szűrőt erre a 4 oszlopra.
A)Ha tehát egy SKU tételt keresel, akkor
a) az SKU-szűröd a tételre
b) a Tételszámot szűröd 1 -re.
Ezzel megkapod azokat a csomagokat, amelyeknél az adott SKU egyedül van.
B) Ha több SKU tételt keresel, akkor kell még egy kis munka, de csak elsőre:
Be kell szúrnod egy kimutatást, én egy másik oldalra szúrtam be. Lépések:
a) Kijelölöd az A1 cellát
b) Beszúrás - Kimutatás - Új munkalapra (vagy az adott munkalapra egy cellába is lehet)
c) A kimutatás mezőlistából az order number megy a sorokhoz
d) az SKU megy az oszlopokhoz
e) a Qty pedig az értékekhez (Összeg/Qty)
A kimutatás változásait már a lépések során is láthatod.
Ezután a mezőlistát becsukhatod (x a jobb sarokban).
A menüszalagon aktív a Kimutatáseszközök fül. Válaszd az Elemzést.
Itt pedig a szűrők menüsorokból a szeletelő beszúrása menüpontot. A szeletelő az SKU-ra legyen. Húzd olyan helyre, hogy lásd a kimutatást és a szeletelőt is.
Az előkészítés eddig tartott! (Tovább tartott leírni, mint megcsinálni
)
Ezután nincs más dolgod, mint a szeletelőből kiszedni azokat az SKU-kat, amelyeket nem szeretnél látni. Maradnak, amit látni akarsz. A kimutatás folyamatosan mutatja az eredményt.
Ha változik az SKU követelmény, akkor átállítod a szeletelőket.
Figyelem! Ez a módszer csak akkor működik, ha több tételt keresel! Ha csak egy SKU kell, akkor az A pontban leírt szűrőmódszer a megfelelő.
Íme a végeredmény:
Ha táblázattá alakítod az első 4 oszlopot, akkor automatikusan bővülni fog a kimutatásod is, csak a frissítés gombra kell rányomni az új sorok beírása után.
Üdv.
-
Fferi50
Topikgazda
válasz
ritterkrisz
#43526
üzenetére
Szia!
Feltételes formázás - ismétlődő értékek - kiválasztod a színt.
Utána Adatok - szűrés - szín szerinti szűrés.
A leszűrt sorok törlése.
Ez utóbbi két műveletet oszloponként kell megcsinálni.
Üdv. -
Fferi50
Topikgazda
válasz
zsolti_20
#43524
üzenetére
Szia!
Akkor ugye nem törölni kell a listából a nem megfelelő elemeket, hanem egy másik lapra kellene kiírni azokat, amelyek megfelelnek a keresési feltételnek?
(Hiszen ha töröljük az elemeket, akkor később hogyan használod újra a listát....)
Ha pl. 414,416,419 van megadva, akkor kell az a csomag, amiben mind a három van és kell az is amiben csak az egyik (akármelyik a 3 közül) van egyedül?
Ezt a három (kettő, vagy több) értéket egy cellába írnád be vagy többe egymás alá/mellé?
A "keresőlapon" megjelenhetnek a szűrővel kiválasztott tételek, vagy a listalapon érvényesüljön a szűrő?
Üdv. -
Fferi50
Topikgazda
válasz
zsolti_20
#43522
üzenetére
Szia!
Mindent lehet, csak világos szabályok kellenek hozzá.
Én pl. nem értem, ha a 414 van megadva, akkor miért csak a 20.sor marad? Honnan lehet tudni, hogy a 8 marad, az 1 pedig nem? Nem látok én másik 2 értéket az 1. sorban.....
A második példád is sántít eléggé, hiszen az első 3 sorban mindegyik érték közül szerepel egy-egy.
Szóval, mi is a szabály?
Üdv. -
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
ROBOTER
#43498
üzenetére
Szia!
Igen, vannak olyan fejlesztési fázisok, amikor a korábbi változók értéke elvész, mert átstruktúrálódik a memória. Tulajdonképpen minden új futtatás inicializálja a változók értékét. Erre mindenképpen figyelni kell. Megoldás lehet, hogy fix értékekkel feltöltött környezetet használsz a tesztelés során, ahol nem kell újra és újra felépíteni a környezetet. Egy (kapcsoló) változóval meghatározhatod, hogy tesztkörnyezetet kell használni vagy felépíteni szükséges. Pl. a teszt logikai változó értéke igaz, akkor nem kell a környezettel bíbelődni, ha false akkor "éles" a futás.
Gondolom, a teszt különböző részfeladatok megoldására szükséges.
Amennyiben további kérdéseid lennének, priviben szívesen cserélnék eszmét veled.
Üdv. -
Fferi50
Topikgazda
válasz
ROBOTER
#43488
üzenetére
Szia!
Amennyiben a program futása során hozol létre újabb makrókat, eseménykezelőket, akkor sajnos a globális változók tartalma (is) elvész. Ebben az esetben szerintem nincs más megoldás, mint azok tárolása valamilyen módon.
Ha nem nyúlsz a VB projekthez, akkor a változók értékeinek meg kell maradnia.
Üdv. -
Fferi50
Topikgazda
válasz
anonymus89
#43475
üzenetére
Szia!
Sajnos 365-ben nem vagyok otthon.
Próbáld ki, hogy makróval azActiveWorkbook.ProtectSharing ActiveWorkbook.FullName, "jelszo"
utasítás mit eredményez.
Üdv. -
Fferi50
Topikgazda
válasz
anonymus89
#43471
üzenetére
-
Fferi50
Topikgazda
válasz
anonymus89
#43468
üzenetére
Szia!
A két kép kicsit összecsúszott. A felső felén láthatod, hogy a Véleményezés csoportban a Munkafüzet megosztása és védelme menüpontra kell kattintani. Utána kapod a párbeszéd ablakot. Milyen Excel verziód van?
Üdv. -
Fferi50
Topikgazda
válasz
anonymus89
#43460
üzenetére
-
Fferi50
Topikgazda
válasz
bucihost
#43454
üzenetére
Szia!
Akkor ez egy PowerQuery lekérdezés... (Lehet, hogy írtad valahol, bocs ha így volt).
A Formula tulajdonságát kell megváltoztatnod:ActiveWorkbook.Queries("Lekérdezés1"). Formula:= _"let" & Chr(13) & "" & Chr(10) & " Forrás = MySQL.Database(""X.X.X.X"", ""dbname"", [ReturnSingleDatabase=true, Query=""SELECT#(lf)SUM(MENNYS * EGYSAR) AS ERTEK,#(lf)DATUM,#(lf)SID#(lf)#(lf)FROM tabla#(lf)WHERE DATUM between '2020-03-30' AND '2020-03-30'#(lf)GROUP BY DATUM, SID;""])" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " Forrás"
A két dátum helyére & -al összefűzve írhatod a két cella értékét:...between '" & Range("X1").Value & "' AND '" & Range("Y1").Value & ""# stb...
Arra ügyelj, lehet hogy a dátumot alakítanod kell, hogy megfelelő legyen a formátuma.
Ellenőrizheted, ha az immediate ablakba beírod:
Debug.Print Activeworkbook.Queries("Lekérdezés1").Formula és Entert nyomsz.
Az Activeworkbook helyett írhatod természetesen a konkrét nevesített Workbook objektumot is.
Üdv. -
Fferi50
Topikgazda
válasz
Delila_1
#43451
üzenetére
De hol van a bejövő adat és hol a kimutatás? Melyik munkafüzetben és munkalapon? Én úgy értelmeztem, hogy a bejövő adatokat tartalmazó munkafüzetben szeretné az összesítést megcsinálni minden nap. Vagyis minden nap újra kell gyártani....
Vagy még egy ötlet (mert az van ám bőven... ) : az új adatokat másolja be a régiek helyére. Az biztosan menni fog és nem okoz hivatkozási problémákat.
Viszont jó lenne, ha a kérdező is megírná, mire gondolt.
Új hozzászólás Aktív témák
- MSI Thin GF63 - 15,6"FHD 144Hz - i5-12450H - 16GB - 512GB - Win11 - RTX 4050 - Garancia - MAGYAR
- CÉGEK FIGYELEM!! iPhone 11 64GB Black -1 ÉV GARANCIA - 27% ÁFA-S SZÁMLA Kártyafüggetlen, 100% Akksi
- AKCIÓ! Apple Watch SE 2024 44mm Cellular okosóra garanciával hibátlan működéssel
- Xiaomi Redmi Note 13 Pro 8/256GB - Kártyafüggetlen, Fekete - 1 Év garanciával
- GYÖNYÖRŰ iPhone 13 mini 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3060
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest





Fferi50