- hmzs: Fujitsu Futro S920 csúcsra járatva
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- gban: Ingyen kellene, de tegnapra
- Sgr_A: Számítógépeim aktualizálása cseréje
- sziku69: Szólánc.
- Geri Bátyó: Agglegénykonyha 2 – Főzés: szabályok, vagy szabadság?
- Magga: PLEX: multimédia az egész lakásban
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- sh4d0w: Tökéletes töketlenség
-
LOGOUT
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
Richard #42097 üzenetére
Szia!
Úgy tűnik, rosszul raktam össze a célba való másolást, az első másolás miatt pedig betettem egy vizsgálatot.If celtabla.Range(2, 1).Value = "" Then
celtabla.Range(2, 1).PasteSpecial xlPasteValues
Else
celtabla.ListColumns(1).DataBodyRange.Cells(1).End(xlDown).Offset(1, 0).Paste Paste:=xlPasteValues
End If
Azt írtad, hogy több táblából másolsz. Ha ez kevés számú, akkor lehet egymás után többször leírni a kódot más-más táblanevekkel. De már 3 után is megéri ciklusba szervezni. A kérdés az, hogy a táblák külön-külön munkalapon vannak-e (feltételezem), de ugyanazon munkafüzetben..
Ebben az esetben a ciklus:Sub a()
Dim sh As Worksheet, tbl As ListObject
For Each sh In Worksheets
If sh.ListObjects.Count > 0 Then
For Each tbl In sh.ListObjects
With tbl
Union(.ListColumns("Név").DataBodyRange, .ListColumns("Cím").DataBodyRange…..).Copy
End With
If celtabla.Range(2, 1).Value = "" Then
celtabla.Range(2, 1).PasteSpecial xlPasteValues
Else
celtabla.ListColumns(1).DataBodyRange.Cells(1).End(xlDown).Offset(1, 0).Paste Paste:=xlPasteValues
End If
Next
End If
Next
End Sub
Üdv.
Ps.
"a táblázat alá ugrik és amikor beilleszti a következő oszlopokat, akkor automatán kiterjeszti a táblát is."
Miért, nem kellene a táblázatot kiterjesztenie a beillesztett adatokra? -
válasz
Fferi50 #42096 üzenetére
Köszönöm, így tökéletes a kijelölés.
A másolást azonban nem hajtja végre csak akkor, ha ezt írom:
celtabla.Range(2, 1).PasteSpecial xlPasteValues
Így azonban mindig legfelülről kezdi sajnos.
Az általad írt kódra kiáll ezzel a hibával:
Amennyiben üres még a tábla:
Run-time error '91': Object variable or With block variable not setAmennyiben már van a táblában egy "adag" másolva:
Run-time error '438' Object doesn't support this property or methodMit rontok el?
"Természetesen a sok tábla másolását csinálhatod ciklussal és akkor a forrás tábla neve helyett az indexét használhatod."
Ezt pedig nem is igazán értem -
Fferi50
Topikgazda
válasz
Richard #42095 üzenetére
Szia!
1. Amennyiben a cél táblába egymás mellé kerülnek az oszlopok, akkor az Union függvény használatával egyben átmásolható a kívánt oszlopszám:
Az értékek átmásolásához célszerű a céltáblát változóba tenni:Dim celtabla As Listobject, usor As Long
Set celtabla =Worksheets("Munka_cel").Listobjects("Tbl_cel")
With Worksheets("Munka_forras").Listobjects("Tbl_forras_1").
Union(.Listcolumns("Név").Databodyrange,.Listcolumns("Cím").Databodyrange…..).Copy
End With
2. A céltábla utolsó sor után a bemásolás:celtabla.Databodyrange.Listcolumns(1).Cells(1).End(xlDown).Offset(1,0).Paste Paste:=xlPasteValues
Az első másolásnál még maradhat a Range(2,1), de ne feledd ekkor egyben jön a 8 oszlop adata már.
Természetesen a sok tábla másolását csinálhatod ciklussal és akkor a forrás tábla neve helyett az indexét használhatod.
Ha kérdésed lenne, csak írj.Üdv.
-
Sziasztok!
Kezdő vagyok nagyon VBA-ban és elakadtam. Ebben kérnék segítséget, mert hiába túrom a netet egyszerűen nem áll össze amit szeretnék megvalósítani.
A szituáció:
Adott több táblázatként formázott tábla.
A forrás táblákban rengeteg oszlop van (80)
A cél táblában 8 oszlop van.
Az összes forrás táblából adott 8 oszlopot (nem egymás mellett levőket) szeretnék a cél táblába másolni úgy, hogy a fejléc ne, de az összes érték átkerüljön.
Az első táblánál még csak rendben is van, hogy egyenként bemásoltatom az oszlopokat, de a második táblánál meg kellene kerestetni a céltábla adott oszlopának utolsó adatot tartalmazó celláját, hogy az alá tegye a következő oszlopot.Eddig jutottam:
Private Sub CommandButton6_Click()
Worksheets("Munka_forras").ListObjects("Tbl_forras_1").ListColumns("Név").DataBodyRange.Copy
Worksheets("Munka_cel").ListObjects("Tbl_cel").Range(2, 1).PasteSpecial xlPasteValues
Worksheets("Munka_forras").ListObjects("Tbl_forras_1").ListColumns("Cim").DataBodyRange.Copy
Worksheets("Munka_cel").ListObjects("Tbl_cel").Range(2, 2).PasteSpecial xlPasteValues
End Sub
Kérdés:
Nem lehet valahogy össze vonni, hogy ezeket a másolásokat egyszerre végezze? Tehát kijelöli az összes oszlop adatát amit szeretnék és egyszerre bemásolja?!
Hogy tudom megoldnai, hogy ne a Range(2,2) -vel monjam meg hova tegye, hanem mondjuk az oszlop nevét adjam meg ?!
A második táblánál hogy fogom megmondani, hogy a már létező adatok alá másoljon?
Ezt találtam:
With ActiveSheet LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row End With
Csak sehogy nem bírom beilleszteni.
Valaki tudna ebben segíteni?
Köszönöm
-
vandeminek
tag
Sziasztok!
Van egy Excel fájlom, amiben a megjegyzések nem jelennek meg. Tudom, kapcsolgattam már a megjegyzések megjelenítése gombot
A megjegyzést jelző kis piros háromszög megvan, sőt ha ráviszem az egeret, akkor a megjegyzés nyila is látható, de semmi más:
Mi lehet a megoldás? Volt már ilyen problémája másnak is? Ha ilyenre keresek Google barátom mindig csak a megjegyzések megjelenítése gombot hozza sajnos
Köszi!
Szerk.: közben találtam rá megoldást
valahogy a szélességük lett lenullázva. Jobb klikk / jegyzet szerkesztése és átméretezés után már jó!
-
-
Fferi50
Topikgazda
válasz
Peterhappy #42091 üzenetére
Szia!
A PowerPivotból tudja normálisan. Lépések:
A fejlesztőeszközök - Com bővítmények között aktíválod a PoverPivot bővítményt
1. Nyitsz egy új üres munkafüzetet.
2. Átmész a PP ablakba - a Kezelés menüponttal
3. Kezdőlap - Külső adatok beolvasása -- Más forrásokból - kiválasztod az Excel fájlt,
4. Kiválasztod az Excel fájlod, amiben az adatok vannak.
5. Kiválasztod a munkalapot belőle ($ jel lesz a név végén).
6.Beolvasás. - ha vannak ott olyan adatok, amelyekre nincs szükséged, törölhetők
7. Még mindig a PP ablak Kezdőlap fülén - Kimutatás
és innentől úgy, mint az Excelben, kiválasztod a mezőket és az összegzési függvényeket, a kimutatás az Excel munkalapra készül el.
Ez már normálisan formázza a dátumot. (Legalábbis nálam így volt.)Üdv.
-
válasz
Fferi50 #42090 üzenetére
Hát ez zseniális
Egy kicsit most örülök, hogy ezek szerint nem én vagyok iszonyatosan láma, hanem az office 2016
Ennyit az egész nem ér, túl fogom élni, ha nem tudok havi összegzést csinálni, már így is nagyon-nagyon jól néz ki a dolog, ne fáradj, ne fáradtjatok vele többet! És köszönöm, le a kalappal előttetek, nagyon sokat segítettetek + hozzám vaskos mennyiségű türelem kell, szóval tényleg nagyon köszönöm mindannyiótoknak
-
Fferi50
Topikgazda
válasz
Peterhappy #42087 üzenetére
Szia!
Te most fogod a fejed a falba verni, én már túlvagyok rajta!
El kell felejteni az Excel dátumbontását, mert egyszerűen nem működik tisztességesen a kimutatásban. Ahhoz hogy rendesen láthassuk a nap - hónap - év felépítését és a napok "olvasható" formában szerepeljenek, mindent amit eddig gondoltunk, sutba kell dobni. Legalábbis a 2016-os Excel ilyen rettenetesen viselkedik, hiába állítgatjuk a formátumot, az neki smafu.
Mit is kellett csinálnom, hogy ilyen formátumú kimutatást kapjak:Három + oszlopot csináltam.
1. oszlop az évet tartalmazta az év függvény szerint (azaz =ÉV(A2))
2. oszlop a hónapok nevét a HÓNAP függvény és a Választ függvény használatával:=VÁLASZT(HÓNAP(A2);"JANUÁR";"FEBRUÁR";"MÁRCIUS";"ÁPRILIS";"MÁJUS";"JÚNIUS";"JÚLIUS";"AUGUSZTUS";"SZEPTEMBER";"OKTÓBER";"NOVEMBER";"DECEMBER")
3. oszlop a dátumot szöveg formátumban:=ÉV(A2) & "." & JOBB("00" & HÓNAP(A2);2) & "." &JOBB("00" & NAP(A2);2)
Ezután a kimutatásba ez a három oszlop került be és szépen is mutat.Nem tudom, mitől bolondult meg, mert a korábbi Excelben létrehozott kimutatásaim szépen működnek dátum alábontással továbbra is.
Talán a korábban létrehozott oszlopaid közül fel tudsz használni párat....
Még utána nézek, hogy Power Pivotban lehet-e valamit varázsolni. mert ez így nagyon-nagyon gáz szerintem.Üdv.
-
Fferi50
Topikgazda
válasz
Peterhappy #42087 üzenetére
Szia!
ny.janosé az ötlet, nem akarnék más tollával ékeskedni.
A számformázással küzdök egyet én is, mert most nálam is határozottan ellenkezik velem az Excel.
Üdv. -
válasz
Fferi50 #42064 üzenetére
Szia Feri!
Köszönöm szépen a segítséget, ez egy nagyon szép megoldás és tök jól is sikerült
Viszont egy dolgot még mindig nem értekVégre van számformátum gombom is, de hiába állítok ott be bármit is, nincs ráhatással az értékre. Dátum a forrás formátuma (általános-ra állítva nem is látszott a gomb).
"Más: Nem értem, ha a dátum oszlopodnak Dátumérték a mezőneve, akkor a kimutatásodban miért nem az az oszlop van benne?"
Utólag, direkt a print screen miatt neveztem át őket, hogy érthetőbb legyen, hol és mit csináltam. -
karlkani
aktív tag
-
Fferi50
Topikgazda
válasz
karlkani #42083 üzenetére
Szia!
Ebben az esetben nem kell hozzá segédoszlop! Elég egy tömbképlet, hogy az eredményt lásd:
Pl.=SZUM(DARABTELI(Ünnepnapok;$C$2200:$C$2255))
Ez akkor ad jó értéket, ha egy ünnepnap csak egyszer fordul elő a keresendő értékek között. Ha többször is előfordulhat, akkor=SZUM((DARABTELI(Ünnepnapok;$C$2200:$C$2255)>0)*1)
a tömbképlet. Azaz Shift+Ctrl+Enterrel kell bevinni és kapcsos zárójelek közé teszi az Excel.
VBA-ban pedig:Range("X2").FormulaArray="=SUM((COUNTIF(Ünnepnapok,$C$2200:$C$2255)>0)*1)"
Üdv.
-
Fferi50
Topikgazda
válasz
karlkani #42081 üzenetére
Szia!
A segédoszlopban miért nem jó neked Delila képlete, hiszen az csak akkor ad 0-nál nagyobb értéket, ha előfordul az ünnepnapok között az érték. Számolásnál nem mindegy neked, hogy össze kell adni az értéket vagy megszámolni hány db 0-nál nagyobb érték van?
A második kérdésre csak tippem van: nem lehet, hogy ilyenkor értesítés nélkül le van tiltva a makró futtatás az Excelben a biztonsági beállítások között?Üdv.
-
karlkani
aktív tag
válasz
Fferi50 #42072 üzenetére
Szia!
Értem.
Jól sejted, van egy másik lap, onnan nézi a dátumokat.(#42073) ny.janos
Feltételes formázásnál ez a képlet szerepel:=DARABTELI(Ünnepnapok;$C1)>0
(#42076) Delila_1
Ezzel a képlettel működik:=HA(DARABTELI(Ünnepnapok;C2251)>0;DARABTELI(Ünnepnapok;C2251);"")
Annak idején segítettél nekem létrehozni ezt a makrót:
Function Orak(tartomany As Range)
Dim CV As Range, osszeg As Double, WSD As Worksheet, WF As WorksheetFunction
Set WSD = Sheets("Dátum")
Set WF = Application.WorksheetFunction
For Each CV In tartomany
If Not IsNumeric(CV) Or CV = "" Then GoTo Tovabb
If WF.CountIf(WSD.Columns(4), Cells(CV.Row, "C")) = 0 And _
WF.CountIf(WSD.Columns(6), Cells(CV.Row, "C")) = 0 And _
WF.Weekday(Cells(CV.Row, "C"), 2) < 6 Or _
WF.CountIf(WSD.Columns(2), Cells(CV.Row, "C")) > 0 Then osszeg = osszeg + CV
Tovabb:
Next
Orak = osszeg
End Function
Már többször előfordult, hogy a füzet megnyitásakor az összes olyan cella értéke, ami ezt a makrót használja összegzésre 0-ra módosult. Csak úgy tudtam újraszámoltatni, hogy a cellára álltam, szerkesztőléc, Enter (sok cellánál ez elég macerás), vagy átneveztem a fájlt, vagy töröltem a fájlra vonatkozó bejegyzést a regisztrációs adatbázisból az alábbi helyen.
HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security\Trusted Documents\TrustRecords
Ötlet?
-
Bobrooney
senior tag
válasz
TigerCat #42077 üzenetére
Makróbarát Excel munkafüzetként mentsd el. De elvileg mentés előtt figyelmeztet is hogy ha nem változtatsz fájl formátumot akkor elvesznek a makróid.
Szóval Fájl -> Mentés másként -> xlsm formátumba mentsd el.
Ha újra nyitod figyelj oda a makróbeállításokra (pl. ne tiltsa le azonnal).Remélem tudtam segíteni.
-
Fferi50
Topikgazda
válasz
ny.janos #42073 üzenetére
Szia!
Akkor már talán egyszerűbb, ha a segédoszlopba a feltételes formázás képlete alapján értékeket írunk, mert azokat utána csak meg kell számolni.Pl. =HA(A1>30;"C";HA(A1>20;"B";HA(A1>10;"A";"X")))
Ezután már csak a betüket kell megszámolni DARABTELI függvénnyel.Üdv.
-
Fferi50
Topikgazda
válasz
karlkani #42071 üzenetére
Szia!
Az előbbi hozzászólásban szereplő makró kiegészíthető egy harmadik paraméterrel, ahova az eredményt kéred.Public Sub CountColor(pRange1 As Range, pRange2 As Range,pRange3 As Range)
Dim rng As Range, xcolor As Long, CountColor As Integer
xcolor = pRange2.DisplayFormat.Font.color
For Each rng In pRange1
If rng.DisplayFormat.Font.color = xcolor Then
CountColor = CountColor + 1
End If
Next
pRange3.Value = CountColor
End Sub
Üdv. -
-
Fferi50
Topikgazda
válasz
karlkani #42069 üzenetére
Szia!
Mivel feltételes formázás van, ezért a DisplayFormat tulajdonságot kell használni, ezt viszont függvényben sajnos nem tudja a VBA (a 2016-os legalábbis). Ezért nem függvényt, hanem Sub-ot kell használni:Public Sub CountColor(pRange1 As Range, pRange2 As Range)
Dim rng As Range, xcolor As Long, CountColor As Integer
xcolor = pRange2.DisplayFormat.Font.color
For Each rng In pRange1
If rng.DisplayFormat.Font.color = xcolor Then
CountColor = CountColor + 1
End If
Next
Range("A1").Value = CountColor 'ide azt a cella címet írd, ahová az eredményt szeretnéd
End Sub
Ezt viszont nem lehet felhasználói függvényként meghívni. A két paraméter ugyanaz, mint az általad leírt függvényben, pRange1 amiben keressük a cellákat, pRange2 aminek a színét számoljuk. Azért talán ezzel is tudsz ügyeskedni.
Más ötlet. Talán mégsem a színek szerinti összesítés a nyerő. Feltételezem, hogy a feltételes formázásnak a feltételei valamilyen táblázat alapján működnek (jó kis mondat lett a feltételek halmozásával...), mivel írtad, hogy pl. ünnepnapok. Ez alapján is lehetne a számolást elvégezni makró nélkül, valamilyen számláló képlettel, ami megvizsgálja, hogy az adott dátum benne van-e a "táblázatban". Szóval én nem vetném el ny.janos ötletét sem.
Üdv.
-
ny.janos
tag
válasz
karlkani #42069 üzenetére
Makróhoz nem értek, így abban majd segítenek a nálam okosabbak, de ehhez nem is feltétlen alkalmaznék makrót.
Beszúrhatsz egy új oszlopot, ahol a feltételes formázás képletét megadod, majd a szorzatösszeg függvénnyel megkapod a kívánt végeredményt. Szorzatösszeg helyett használhatsz szum függvényt is, de azt tömbképletként kell (Ctrl+Shift+Enter) alkalmaznod.
Segédoszlop nélkül is megoldható. Pl. A1:A31 tartomány azon értékeinek összegzése, amelyek nagyobbak 30-nál:=SZORZATÖSSZEG(($A$1:$A$31)*($A$1:$A$31>30))
vagy tömbképletként{=SZUM(($A$1:$A$31)*($A$1:$A$31>30))}
-
karlkani
aktív tag
válasz
Fferi50 #42066 üzenetére
Szia!
Public Function CountColor(pRange1 As Range, pRange2 As Range) As Double
Application.Volatile
Dim rng As Range
For Each rng In pRange1
If rng.Font.Color = pRange2.Font.Color Then
CountColor = CountColor + 1
End If
Next
End Function
Ezt kellene módosítani (ha lehet egyáltalán...), hogy működjön feltételes formázással módosított betűszín estén.
-
karlkani
aktív tag
válasz
ny.janos #42063 üzenetére
Háttérszín alapján cellaszám, cellaérték összegzésre találtam makrót. Nekem olyan kellene, ami feltételes formázással módosított betűszínű cellák számát összegezi. A táblában több, feltételes formázással módosított betűszínű cella van, melyek közül csak a piros színűek darabszáma kell. Neten csak olyan makrót találtam, ami abban az esetben működik, ha a betűszín nincs feltételes formázással módosítva.
-
-
-
Fferi50
Topikgazda
válasz
Peterhappy #42060 üzenetére
Szia!
Működik az adatok - szövegből oszlopok menüpont az Excelben megában. Nem kell hozzá Power Query.
Adatok - szövegből oszlopok - tagolt - a következő lapon (2. lépés) bejelölöd elválasztónak a szóközt. A következő lapon (3.lépés) az első oszlopra bejelölöd, hogy dátum NHÉ formátumban. Megadod hova kerüljön - nyilván a mellette levő oszlopba, hogy a forrás megmaradjon.
Ezután valóban dátum lesz az az oszlop, amibe az első része kerül az adatnak.
Más: Nem értem, ha a dátum oszlopodnak Dátumérték a mezőneve, akkor a kimutatásodban miért nem az az oszlop van benne?Üdv.
-
karlkani
aktív tag
Sziasztok!
Az megoldható, hogy egy táblában, feltételes formázással módosított betűszínű cellák számát összegezzem?
-
ny.janos
tag
válasz
Peterhappy #42060 üzenetére
Bár a Power Query-t nem igazán ismerem, épphogy csak megpróbáltam használni egyetlen alkalommal, de az biztos, hogy amennyiben a G oszlopban látható riportált adat szóköznél történő szétválasztását választod akkor kettő külön oszlopot fogsz kapni. Az elsőben lesz a kívánt dátumod, míg a másodikban az időpont. Ha ez utóbbira nincs szükséged, akkor törölheted az oszlopot. Ha így töltöd be végül az adataidat, akkor nincs szükséged utána semmilyen képletre ahhoz, hogy dátumot kapj.
-
válasz
Fferi50 #42057 üzenetére
Szia!
Én nem a forrás mezőt, hanem az összefűzés eredményét próbáltam a szomszéd cellába átmásolni - ez utóbbit formázta is, míg a forrás mező átalakításánál #érték hibát jelenített meg..
Így néz ki a riport - soha ilyen rettenetes riportot nem láttam még.
Az összefűzés képlete:
=ÖSSZEFŰZ(KÖZÉP(G2;SZÖVEG.KERES("/";G2;4)+1;4);". ";HA(HOSSZ(BAL(G2;SZÖVEG.KERES("/";G2)-1))=2;"";0);BAL(G2;SZÖVEG.KERES("/";G2)-1);". ";HA(HOSSZ(KÖZÉP(G2;SZÖVEG.KERES("/";G2)+1;(SZÖVEG.KERES("/";G2;4)-1)-(SZÖVEG.KERES("/";G2))))=2;"";0);KÖZÉP(G2;SZÖVEG.KERES("/";G2)+1;(SZÖVEG.KERES("/";G2;4)-1)-(SZÖVEG.KERES("/";G2)));".")Nem szép, de elvileg működik
És ebből dátumot is tud csinálni a dátumérték - más kérdés, hogy nem tudom használni.
Neked is köszönöm a segítséget, tök jó hogy ilyen türelmesek vagytok, ez nekem már nagyon magasröptű
-
Fferi50
Topikgazda
válasz
Peterhappy #42056 üzenetére
Szia!
Ez azért van, mert az adott mezőben nem dátumok vannak, hanem "számnak látszó" szövegek. A kimutatás forrás mezőjét kellene átalakítanod dátummá, ahogyan ebben a hozzászólásban írták (#42032 ny.jános), a Dátumérték függvénnyel. De talán még jobb lenne a DÁTUM függvény használata, a 42025-os hozzászólásodban levő Összefűz függvény paramétereire hivatkozással:=DÁTUM (Szöveg1;Szöveg3;Szöveg5)
Vagyis a DÁTUM függvénybe az adott paraméterhez írt képletet tedd bele.
Mert az Excelben dátum tekintetében sok esetben nem az van, mint amit látsz. Jelen esetben is, hiába fűzöd össze az értékeket "dátum formátumnak megfelelően", attól az még nem lesz dátum.
De még többet látnánk, ha a forrásod egy részletét megmutatnád, amiben ezek az értékek szerepelnek. -
-
Fferi50
Topikgazda
válasz
Petium001 #42053 üzenetére
Szia!
Az oszlop utolsó nem üres cellája után beírod a képletet:
= Darabteli($D$2:$D$400;"igen")
Itt a D oszlop 2-400 cellájában vannak az értékek.
Egy buktatója van: Ha az igen nem szöveg, hanem logikai érték - pl. összehasonlítás utján kapod - akkor az IGEN() függvényre kell keresni, "igen", helyett IGEN() kell a második paraméterhez.
Használd a függvényvarázslót légy szíves, könnyebben megérted.
Üdv. -
Fferi50
Topikgazda
válasz
bozsozso #42052 üzenetére
Szia!
"úgy egészíteni, hogy a gyümölcsökhöz tartozó számokat az alján összesítse, hogy hány db"
Úgy értettem, hogy össze kellene adni a számokat (összesítse). Ha a tételszámra vagy kíváncsi, akkor Darab2 függvény a második sortól indulva.
Miután befejezted a Powerqueryben a munkát, visszaadod a táblát és a vezérlést az Excelbe. Ott pedig minden Excel függvény él természetesen.
Üdv. -
bozsozso
őstag
Sziasztok,
Kaptam régebben egy ilyen power query-s segítséget. Ezt ki lehetne úgy egészíteni, hogy a gyümölcsökhöz tartozó számokat az alján összesítse, hogy hány db? Arra lenne ötletem, hogy miután az oszlopot szétválasztottam utána kellene még egy oszlopot hozzáadni és abba mehetne a számolás. Azt tudom, hogy excelben pl darabteli függvénnyel meg tudom számoltatni, de itt nem tudom milyen módon, függvénnyel lehetne összegezni. Utána mehetne a transzponálás. Mindegy, de lehetne a transzponálás után is a számolás csak nem tudom sort lehet-e hozzáadni.
-
Fferi50
Topikgazda
válasz
TigerCat #42048 üzenetére
Szia!
Az Excel munkalap nézetből az Alt+F11 gomb visz át a VBA (makrós) ablakba.
Az ablakban normál esetben van egy Projekt rész. Itt láthatod a munkalapjaid és hozzá a Thisworkbook - ot. Arra ráállsz - jobb egérgomb -View Code
Megjelenik a jobb oldalon a kódlap. Oda másold be.
Sajnos sem 365 sem Mac nincs nekem, így nem tudom kipróbálni.Üdv.
-
Petium001
csendes tag
Sziasztok!
Van egy táblázatom, amiben az egyik oszlopban "igen" és "nem" szerepel, hosszú sorokban.
A legaljára hogyan tudom összegezni az "igen"-ek számát?Köszi
-
Fferi50
Topikgazda
válasz
#73966957 #42039 üzenetére
Szia!
Az alábbi makrókat együtt kell bemásolnod egy modulba. Igyekeztem általánossá tenni.
Az alkotó elemeket az O oszloptól lehet beírnod. Az első oszlop 2. cellája az alapár.
A többi oszlop tartalmazza a megnevezést és az árakat párban. A makró a P2 cellából indul ki (de ez nem azt jelenti, hogy ide kell az alapárat írnod), ez legyen mindenképpen a kiindulási területen. A fejléceket nem másolja. Az utolsó oszlopba kerül az összár.
Most lehet 2-3-4 sőt akár 5 összetevője is az összárnak. Persze vedd figyelembe, hogy minél több a változat, annál több lesz a variáció és nő a futási idő is. Ha már unod, akkor a Ctrl+ Break megszakítja a futást, erre két helyen figyel a makró - ott ahol DoEvents van.
A varialhat makrót kell elindítanod, a másikat majd az meghívja, ha kell neki. Íme:Sub varialhat()
Dim u As Integer, alap As Double
Dim x As Long, y As Long, kepl As String
Dim arazas As Range, oszl As Range
Dim oszlopok As New Collection
Dim varia As Long
Dim oszlsz As Integer
Dim valami(), szoroz As Long
Set arazas = Range("P2").CurrentRegion
alap = arazas.Cells(2, 1).Value: kepl = "=A2"
varia = 1
For x = 2 To arazas.Columns.Count
With arazas.Columns(x)
oszlopok.Add Range(.Cells(2, 1), .Cells(2, 1).End(xlDown)), Str(x - 1)
If x Mod 2 = 0 Then varia = varia * oszlopok(x - 1).Cells.Count: kepl = kepl & "+" & Cells(2, x + 1).Address(rowabsolute:=False)
End With
DoEvents
Next
oszlsz = oszlopok.Count
Application.ScreenUpdating = False
If Range("A2") <> "" Then Range(Range("A2"), Cells(Range("A2").End(xlDown).Row, Range("A2").End(xlToRight).Column)).ClearContents
u = 2
Range(Cells(u, 1), Cells(u + varia - 1, 1)).Value = alap
y = 2
ReDim Preserve valami(1 To varia, 1 To oszlsz)
szoroz = 1
For x = oszlsz To 1 Step -1
sokszoroz oszlopok(x), x, szoroz, varia / oszlopok(x).Cells.Count / szoroz, valami
'oszl.Copy Destination:=Cells(u, y)
'Range(Cells(u, y), Cells(u + oszl.Cells.Count - 1, y)).AutoFill Destination:=Range(Cells(u, y), Cells(varia + 1, y)), Type:=xlFillCopy
If x Mod 2 = 1 Then szoroz = szoroz * oszlopok(x).Cells.Count
Next
y = 2 + oszlsz
Range(Range("B2"), Cells(UBound(valami, 1) + 1, y - 1)).Value = valami
Range(Cells(u, y), Cells(u + varia - 1, y)).Formula = kepl
Range(Cells(u, y), Cells(u + varia - 1, y)).Value = Range(Cells(u, y), Cells(u + varia - 1, y)).Value
Application.ScreenUpdating = True
Range("A1").Select
MsgBox "Készen vagyok!"
End Sub
Sub sokszoroz(ByRef mit, hova, hanyszor, ciklus, ByRef valami())
Dim x As Long, cl As Range, w As Integer, z As Long
x = 1
For z = 1 To ciklus
For Each cl In mit.Cells
For w = 1 To hanyszor
valami(x, hova) = cl.Value
x = x + 1
Next
Next
DoEvents
Next
End Sub
Ha bármi probléma adódik, csak írj.
Üdv. -
#73966957
törölt tag
-
Fferi50
Topikgazda
válasz
Peterhappy #42036 üzenetére
Szia!
Ha már valóban dátum lett a pivot forrása, akkor a pivotban a mezőt meg tudod formázni. Ráállsz a mezőfejlécre, majd jobb egérgomb, mezőbeállítások - alul balra megtalálod a számformátum gombot. Itt be tudod állítani a neked megfelelő dátumformátumot, függetlenül az alapadatok formátumától.Üdv.
-
válasz
ny.janos #42032 üzenetére
Próbálkoztam most kicsit vele. Érdekes ez, mert működött és így tudtam pl. a pivotban hónapos szűrést beállítani neki, ugyanakkor a dátum formátuma szétesett, pl. 1.szept jelent meg "2019. 09. 01." helyett (amit az összefűzésekkel én adtam meg).
Finomítanom még így is kellett a táblázaton, plusz nullákat bedöfködnöm, ha egyszámjegyű a hónap vagy a nap, szóval nem mondanám szépnek a képletet, de elméletileg most teszi a dolgát
Nekem pedig a napi kimutatás elégséges - egy hónapos szűrővel szebb lenne ugyan, de így is gyakorlatilag tökéletes
Nagyon szépen köszönöm a segítségedet!
-
-
Fferi50
Topikgazda
válasz
#73966957 #42033 üzenetére
Szia!
Bocs, a 100-ast valóban elnéztem.
A makrót megváltoztattam, annyi a megkötés, hogy 3 komponensnek kell lennie és az M-R oszlopokban legyenek az adatok, ahogyan a képen mutattam: név, mellette az ár. Lehetnek különböző hosszúságúak.
Az alapár az L2 cellában legyen.
A makró többször is futtatható, az előző futás eredményét törli.Sub varial()
Dim aras(), u As Integer, usor1 As Integer, usor2 As Integer, usor3 As Integer, alap As Double
Dim x As Byte, y As Byte, z As Byte
Application.ScreenUpdating = False
u = 2
usor1 = Range("M2").End(xlDown).Row
usor2 = Range("O2").End(xlDown).Row - 1
usor3 = Range("Q2").End(xlDown).Row - 1
aras = Range("M2:R" & usor1).Value
If Range("A2") <> "" Then Range(Range("A2"), Range("A2").End(xlToRight).End(xlDown)).ClearContents
alap = Range("L2").Value
For x = 1 To usor1 - 1
For y = 1 To usor2
For z = 1 To usor3
Cells(u, 1).Value = alap: Cells(u, 2).Value = aras(x, 1): Cells(u, 3).Value = aras(x, 2): Cells(u, 4).Value = aras(y, 3): Cells(u, 5).Value = aras(y, 4): Cells(u, 6).Value = aras(z, 5): Cells(u, 7).Value = aras(z, 6)
Cells(u, 8).Value = alap + aras(x, 2) + aras(y, 4) + aras(z, 6)
u = u + 1
Next
Next
DoEvents
Next
Application.ScreenUpdating = True
MsgBox "Készen vagyok!"
End Sub
Üdv. -
#73966957
törölt tag
válasz
Fferi50 #42031 üzenetére
Hali!
Kipróbáltam a dolgot. Elsőre azt mondanám, hogy működik, azonban mégsem. Az első hiba, hogy hiába van nekem megadva egy alapár az L2 cellában, mégis a te 100-addal számol alapárat. Továbbá olyan problémám is van, hogy a konkrét opciós lista az 26x3x3, tehát összesen 234 árnak kellene kijönnie. Azonban a makrót lefuttatva 17.517 db jön ki.
Nagyon szépen köszönöm az eddigi munkádat is, ha pedig remélhetőleg nem túl nagy munkával még ki tudnád javítani, abban az esetben nagyon hálás lennék!
Üdv.
Dávid -
ny.janos
tag
válasz
Peterhappy #42029 üzenetére
Sajnos tartottam tőle, hogy így lesz. Én feltételeztem ugyanis, hogy a riportolt adataid dátum formátumúak, de ezek szerint szövegként kezeltek. Ez esetben viszont a te megoldásodat is ki kellene még egészíteni a DÁTUMÉRTÉK függvénnyel, hogy az excel is dátumként ismerje azt.
Egy másik ötlet, hogy az adataidat Power Queryvel próbálod meg beolvasni, és ott formázod az adott oszlopot a megfelelő formátumra. Ha ez sikerül, akkor működnie kellene a képletemnek. Több meló lesz megcsinálni, de ha rendszeresen olvasol be adatot, akkor valószínűleg megéri.
-
Fferi50
Topikgazda
válasz
#73966957 #42028 üzenetére
Szia!
Egy makróval megoldható a feladat. Az árlistát az alábbiak szerint helyezd el:
Az L2 cella tartalmazza az alapárat, az M, O, Q oszlopok a tartozékfajták megnevezését, a mellettük levő oszlop pedig az árakat.
Az árlista generálása az A2 cellától kezdődik és tartalmazza az adott tartozék nevét és árát valamint a végösszeget. A fejléceket nem írja ki a makró, amely az alábbi:Sub varial()
Dim aras(), u As Integer, usor As Integer
Dim x As Byte, y As Byte, z As Byte
u = 2
usor = Range("M2").End(xlDown).Row
aras = Range("M2:R" & usor).Value
For x = 1 To UBound(aras, 1)
For y = 1 To UBound(aras, 1)
For z = 1 To UBound(aras, 1)
Cells(u, 1).Value = 100: Cells(u, 2).Value = aras(x, 1): Cells(u, 3).Value = aras(x, 2): Cells(u, 4).Value = aras(y, 3): Cells(u, 5).Value = aras(y, 4): Cells(u, 6).Value = aras(z, 5): Cells(u, 7).Value = aras(z, 6)
Cells(u, 8).Value = 100 + aras(x, 2) + aras(y, 4) + aras(z, 6)
u = u + 1
Next
Next
Next
End Sub
Ezt a makrót egy modullapra helyezd el. (eljárás az összefoglalóban).
3 fajta összetevőt használhatsz, de ezen belül nem csak 10-10 lehetőséget, azokat tetszés szerint növelheted. Fontos, hogy azokat azM : R
oszlopokba írd.Üdv.
-
-
#73966957
törölt tag
Sziasztok!
Lenne egy olyan problémám amit talán excel-lel meg lehet oldani és eszméletlenül megkönnyítené az életem. Ezért fordulok hozzátok, hátha valaki aki benne van már oldott meg hasonló problémát.
Tehát adott mondjuk a példa kedvéért egy webshop. Egy webshop ami kerékpárokat árul. Van egy adott kerékpár, legyen a neve "26"-os felnőtt kerékpár". ennél a terméknél van 4db konfigurációs lehetőség, amely változtatja az árat is. Pl.: Lehet kérni a vázat 10 féle színben, minden színnek más az ára. Lehet kérni 10 fajta gumiabronccsal, megint csak mindnek különböző az ára, valamint mondjuk 10 fajta áttétellel melyeknek megint csak különböző az áruk. Tehát összesen 10*10*10 fajta ár lehet, azaz összesen 1.000 féle ára lehet ennek a kerékpárnak. A probléma viszont az, hogy a webshopban nem lehet megadni, hogy az egyes változatoknak mennyi a plusz ára a sztenderd árhoz képest, hanem minden egyes variációhoz külön kell nekünk manuálisan megadni az árat. Ez a probléma. Hogyan tudnék excelben létrehozni egy olyan munkafüzetet, ahol ha megadom, hogy pl. 100.000 Ft az alapára a kerékpárnak, majd pedig megadom a 3*10db opciót árakkal, akkor az excel kiszámolja nekem az összes létező variációt, tehát mind a 1.000db-ot és mondjuk egymás alá megadja nekem egy táblázatban. Ezt követően az árakat már egy egyszerű skripttel be tudom pár gombnyomással vinni az oldalra, ezzel nincs baj. A kiszámításánál akadtam el.
Előre is köszönöm mindenkinek aki egyáltalán elolvassa ezt a feladványt, ha pedig még segíteni is tudtuk akkor le a kalappal!
Üdv.
Dávid -
-
ny.janos
tag
válasz
Peterhappy #42025 üzenetére
Használhatod a
=DÁTUM(ÉV(G2);HÓNAP(G2);NAP(G2))
vagy még egyszerűbben a=KEREK.LE(G2;0)
képleteket is. -
válasz
Peterhappy #42024 üzenetére
-
Sziasztok,
Feladom
Olyan riportot tudok generálni, amelyben a következő módon szerepelnek az időpontok:
10/25/2019 2:26:01 PM
10/7/2019 13:27:51
10/4/2019 18:34:47
10/24/2019 3:44:17 PMIgen, akad amikor PM-mel, akad amikor anélkül, amerikai formátum, esetenként egyjegyű nappal és hónappal, ahogy kell.
Hogy a búbánatba lehetne ebből képlettel használható dátumot kreálni?
Az időpontra nincs is feltétlen szükségem, elegendő az év-hónap-nap - csak pivotálható legyen, dátum szerint rendezhető...Előre is köszönöm a segítséget!
-
BalanceR
addikt
Sziasztok,
Egy kicsit összetettebb, kérdésem lenne a gurukhoz...
Megoldható-e, hogy egy munkalap automatikusan frissítsen bizonyos adatokat egy publikus weblapról?
A következőről lenne szó:
árukereső.hu -s árakat kellene automatikusan levadásznia, és beletenni a táblába érékesítő szerint....
Pl:
Van egy táblám cikkszámokkal az első oszlopban, arra kellene megoldás, hogy mondjuk egy másolható képlet, vagy makró csinálja azt , hogy keresést indít az árukeresőn az első oszlopban található cikkszámra, (ez ugye meg egy jól paraméterezett [hiperhivatkozás]-al ) az első találati oldalt megnyitja, és az ott lévő adatokat bepakolja a cikkszám melletti oszlopokba.
Pl:
cikkszám | MediaMarkt | Tesco | ebolt |
1254568 | 12.99FT | 11.99Ft | 13.25Ft |
188568 | 26.99FT | 26.99Ft | 26.25Ft |
Ilyesmire valakinek ötlete, vagy esetleg gyakorlati tapasztalata?
Előre is köszi. -
vmk
tag
Sziasztok.
Nem tudom, hogy jó helyen járok-e a problémámmal.
Az egyik kolléganőmnél van olyan hiba, hogy munkalapok nyomtatásánál különböző felhasználónévvel küldi ki a program (vagy driver?) a dokumentumot.Tehát a nyomtató egy Konica Minolta C280. Be van állítva egy felhasználónév pl "kifli".
A kolléganő Windows-os felhasználóneve mondjuk "zsömle".
Azt vettem észre, hogy a dokumentumon belül bizonyos munkalapoknál a "kifli"-vel megy ki a nyomtatás (és sikeres is), bizonyosaknál pedig a "zsömle"-vel és ezt visszadobja a nyomtató.
Office 2016 Otthoni és vállalati verziójú a programcsomag.Találkozott már valaki ilyesmivel? Mi lehet a gond?
-
Sziasztok!
A 100%-os nagyítás értékét lehet módosítani valahogy? Mac-en nagyon apró, így ha elmentem 125%-on, az túl nagy Windows alatt és fordítva. Szóval jó lenne valamilyen megoldást találni az alapértelmezett értékre. Van ilyen lehetőség szerintetek?
Köszi! -
Fferi50
Topikgazda
válasz
bucihost #42014 üzenetére
Szia!
Ezt találtam ki, nézd meg, hogy működőképes-e nálatok:
A táblázat első oszlopa tartalmazza a 2 órás határt - ezt még jobban lehet finomítani 2,00001 -re akár - a további 3 oszlop az egyes műszakokhoz tartozó műszakpótlékot.
Persze itt még a 7vége nincs benne, de szerintem az is megoldható (pl ha hétvége, akkor a + 3 oszlop tartalmazza azt a pótlékot és a G oszlopban levő értékhez nem 1, hanem 4 a hozzáadás).
(Nem mellesleg, így csak a szorzószámokat kell esetleg változtatni, nem kell átírni az összes képletet.)Üdv.
-
Fferi50
Topikgazda
-
ny.janos
tag
válasz
bara17 #42015 üzenetére
A Ctrl+L billentyűparancs már a régebbi verziókban is a táblázat létrehozása párbeszédpanelt nyitotta meg. Amit írsz az egy makró lehetett. Billentyűparancs módosítása nem hiszem, hogy lehetséges.
Makró helyett: ha van olyan parancs az excelben, ami az aktuális cella feletti cella tartalmát másolja (én nem tudok ilyenről), akkor azt a parancsot felveheted a gyorselérési eszköztárra. A gyorselérési eszköztárra felvett parancsok közül az első tíznek a gyorsbillentyű kombinációja: Alt+1, Alt+2 stb.
-
bara17
tag
Sziasztok!
Lehet láma kérdés, de a billentyűparancsokat hol lehet átállítani az Excelben (Office 2016). Korábba verziókban a ctrl+L szépen lemásolta a felette lévő cellát, de a 2016-os verzióban már nem működik.
Köszönöm.
-
bucihost
senior tag
válasz
Fferi50 #42013 üzenetére
Az a baj, túl összetett a képlet.
Egy bérkalkulátor táblázatról van szó.
3 műszakos munkarend van, az alábbi adatokból számol a táblázat.
- melyik műszak (műszakonként eltérő pótlék)
- van e túlóra, ha igen mennyi. (Első 2 órára x% jár, minden további órára y%)
- hétvége vagy sem (erre szintén külön pótlék van)
Minden automatán van számolva
Műszakszorzó beillesztése: (ez még meg oldható FKERES-sel, általad leírt módon)=HAHIBA(HAELSŐIGAZ(G4=1;1;G4=2;1,5;G4=3;1,5);)
Túlóra díj kiszámítása:=HAHIBA(HAELSŐIGAZ(G4=1;HA(F4>2;2*$G$1*1,5+(F4-2)*$G$1*1,75;F4*$G$1*1,5);G4=2;HA(F4>2;2*$G$1*2+(F4-2)*$G$1*2,25;F4*$G$1*2);G4=3;HA(F4>2;2*$G$1*2+(F4-2)*$G$1*2,25;F4*$G$1*2));)
és ugye itt bonyolódik a helyzet, mert ennek a képletnek figyelembe kell vennie minden kritériumot -
Fferi50
Topikgazda
válasz
bucihost #42012 üzenetére
Szia!
Az FKERES függvény 4. paraméterét ha IGAZ-ra állítod, akkor alkalmas arra, hogy táblázatban keressen, ehhez emelkedő sorrendbe kell rendezni a táblázatot - és még szöveges keresésben is működik.
Az előző hsz-ban levő példához a táblázat és a képlet:
Ez biztosan működik minden verzióban, mert a függvény is régi már.Üdv.
-
-
karlkani
aktív tag
(#42005) 3DFan
Nem az enyém, Fferi50 képlete, én csak a tábládhoz igazítottam.Ebédrendeléshez készítettem egy táblázatot. Van egy cellám, ami az aktuális hét, hétfő-péntek dátumát tartalmazza, jelenleg kézzel beírva (10.21-10.25). Készítettem hozzá egy képletet:
=SZÖVEG((MA()-HÉT.NAPJA(MA();3));"h.n.") & "-" & SZÖVEG((MA()-HÉT.NAPJA(MA();16));"h.n.")
Ezt hogyan kellene beírni makróba? -
3DFan
aktív tag
Köszönöm a segítséget mindenkinek! karlkani képletével működik.
-
bucihost
senior tag
Sziasztok!
Adott egy O365 excelben megírt HAELSŐIGAZ képlet. Tökéletesen működik, viszont ma O2016 excelben megnyitom a munkafüzetet akkor nem működik a képlet, valamint HAELSŐIGAZ helyett _xlfn.IFS jelenik meg. Hogyan lehetne orvosolni a problémát? FX-ben rákerestem, de nem létezik ilyen függvény....
-
karlkani
aktív tag
válasz
Fferi50 #42001 üzenetére
Nála ez a helyes képlet:
=ÉS(SOR(A1)=$N$2;OSZLOP(A1)=$O$2)
(#42002) Delila_1
A B2 : K11 területre nem jó a képleted, mert ilyenkor az összes találatot kiszínezi, ezt akarja elkerülni.[ Módosította: Intruder2k5 ]
-
Delila_1
veterán
-
Fferi50
Topikgazda
Szia!
Egyetlen cellába sem kell írnod semmit!
Az általad bemutatott minta alapján a feltételes formázást az alábbiak szerint tudod megtenni:
Kezdőlap - feltételes formázás - új szabály -
Ezután a formázandó cellák kijelölése képlettel:Kiválasztod a formátumot, majd OK.
A formázandó terület kiválasztásához:
Kiválasztod a szabályt és beírod az érvényességi területet:
Ha a képletben nem az A1 cella lenne, akkor a Szabály szerkesztése gombra kattintva átírod A1- a sor és oszlop függvény paraméterét.
Majd OK vagy/és Alkalmaz.Üdv.
Új hozzászólás Aktív témák
- Renault, Dacia topik
- hmzs: Fujitsu Futro S920 csúcsra járatva
- Egyéni arckép 1. lépés: ARCKÉPHEZ VALÓ JOGOSULTSÁG
- Fortnite - Battle Royale & Save the World (PC, XO, PS4, Switch, Mobil)
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- TCL LCD és LED TV-k
- Parkside szerszám kibeszélő
- Battlefield 6
- Már az MSI-nek is van 500 Hz-es QD-OLED monitora
- Mibe tegyem a megtakarításaimat?
- További aktív témák...
- Battlefield 6 - Digitális játékkulcs
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap
- Assassin's Creed Shadows Collector's Edition PC
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Microsoft Windows, Office & Vírusirtók: Akciók, Azonnali Szállítás, Garantált Minőség, Garancia!
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7500F 32/64GB RAM RX 9060 XT 16GB GAMER PC termékbeszámítással
- HIBÁTLAN iPhone 11 Pro 64GB Space Grey -1 ÉV GARANCIA - Kártyafüggetlen, MS2137
- Xiaomi Redmi Note 12 Pro 5G 128GB Kártyafüggetlen 1Év Garanciával
- GYÖNYÖRŰ iPhone 11 128GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3264, 100% Akkumulátor
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest