- Pentax DSLR topic
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- Milyen egeret válasszak?
- Megjött a Red Magic kompakt táblagépe az EU-ba
- Milyen TV-t vegyek?
- Androidos tablet topic
- Milyen RAM-ot vegyek?
- Bambu Lab 3D nyomtatók
- Milyen billentyűzetet vegyek?
- Kettő együtt: Radeon RX 9070 és 9070 XT tesztje
-
PROHARDVER!
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
-
csferke
senior tag
válasz
Delila_1 #30358 üzenetére
A =SZUM(B:B) képlet a B oszlop adatait összegzi, az adatok darabszámától függetlenül.
Nálam ez a képlet =SUM(H4:H508)/1000, Excel 2007.
Ha átírom =SUM(H:H)/1000 akkor "Circular Reference Warning" hibát jelez
ha =SUM(H4:H)/1000 akkor #NAME? hibát jelezMit csinálok rosszul?
-
m.zmrzlina
senior tag
válasz
Delila_1 #30355 üzenetére
Köszi Delila és bocs hogy feleslegesen dolgoztál de nem igazán volt időm részletekbe menően leírni mit akarok. Most kivettem a teljes makróból azt a részletet ami problémás, hogy ne zavarjon hogy mit deklaráltam korábban és hogyan. Így néz ki:
Sub valogat()
Dim int_usor As Integer, int_uoszlop As Integer, int_vege As Integer
int_usor = 135
int_uoszlop = 50
int_vege = 2
'ThisWorkbook.Worksheets(1).Activate
Dim tartomany As range
Set tartomany = ThisWorkbook.Worksheets(1).range(Cells(2, 3), Cells(int_usor, int_uoszlop))
For Each cella In tartomany.Cells
If cella.Interior.ColorIndex = 6 And cella.Value <> "" And Application.WorksheetFunction.CountIf(Worksheets("csatorna").range("D2:D50"), cella.Value) = 0 Then
Worksheets("csatorna").Cells(int_vege, 4).Value = cella.Value
int_vege = int_vege + 1
End If
Next
End SubA makrórészlet feladata az hogy gyűjtse ki az első munkalap egy adott tartományában /range(Cells(2, 3), Cells(int_usor, int_uoszlop))/ a sárga cellaháttérrel jelölt cellákból az ott előforduló összes cellaértéket és készítsen egy listát a "csatorna" nevű munkalap D oszlopába. Természetesen ha a cellaérték a tartományban 50-szer fordul elő a listában akkor is csak egyszer szerepeljen. /ezért van a CountIf a feltételek közt/
A makró működik is ha a kikommentezett sor benne van. Ha azonban nincsen benne akkor a Set tartomany = stb... sornál Application-defined or object-defined errorral kiakad.
Szóval a kérdés az, hogy hogyan lehet megszabadulni a vizsgálandó tartományt tartalmazó munkalap aktiválásától?
Ja és a range ebben a munkafüzetben lévő összes előfordulásánál kisbetűs.
-
Sweetraver
csendes tag
válasz
Delila_1 #30370 üzenetére
Köszönöm, de sajnos ez így nem jó.
Lehet nem volt érthető amit írtam.
Szóval a D oszlop adatait alapból kézzel írom be. Ebből keresi meg a C-t FKERES-sel.
Vagyis alapból megvan az A, B és a D. Ezek kézzel lettek beírva, nincs semmi képlet sehol.
Ami még igaz, hogy minden D érték szerepel az A oszlopban. Ezért kézzel egy sima =a1-es hivatkozással be tudom hívni, de ehhez ugye meg kell keresnem az A oszlopban ugyanazt a kódot.
Ehhez kellene valami képlet., hogy automatán bekeresse. Azt szeretném látni a D1-es cellában, hogy =a2, illetve ennek az értékét. Ezt most is látom, csak képlet nélkül. Így ha változik a kód, akkor a D nem változik. Azt szeretném, ha átrom az A-ban, akkor a D-is változzon. Ehhez kellene a hivatkozás bele.Addig eljutottam, hogy ki tudom iratni azt, hogy egy adott cella melyik oszlop és sorban van.
Márcsak egy keresés kellene bele.
=KARAKTER(OSZLOP(A1)+96) --> oszlop betűje
=SOR(a1) --> sor száma
Majd hozzáírok egy = jelet és összefűz. ÍGy megvan a hivatkozás az adott cellára.
Csakhogy így nem keresi még meg az A-ból.köszi
-
m.zmrzlina
senior tag
válasz
Delila_1 #30343 üzenetére
Hogyan egészítem ki a terulet objektumváltozó deklarálását a példádban, hogy ne a ws_Kabelo munkalap objektumváltozón értelmezze a terulet változót hanem pl mindig az első munkalapon /Worksheets(1)/?
Még egy kérdés:
Van a kódszerkesztőben az a ficsör, hogy beírod kisbetűvel a parancssort és ha rendben van a szintax akkor a megfelelő kezdőbetűk nagybetűre váltanak.Az egy dolog, hogy ebben a sorban a range nem vált nagybetűre de ha beírom nagybetűvel akkor visszavált kisbetűre
-
Fferi50
Topikgazda
válasz
Delila_1 #30282 üzenetére
Szia!
Amit gyanítottam, az bekövetkezett.... Szerintem egy sima kimutatással meg lehet oldani a problémát, nem kell hozzá bűvészkedni az idővel és a napokkal:
A kimutatás értékmezőit óra szerint csoportosítani kell, majd kiválasztani a maximumot és beállítani az Eltérés az előzőhöz. Ennyi lenne szerintem.
Üdv.
-
bsh
addikt
válasz
Delila_1 #30293 üzenetére
most például az a hiba keletkezett, hogy valamelyik gyökér letörölt két docx template fájlt, amikből az excel makróval fuvarleveleket generálna
dolgozzon ezeknek akinek két anyja van, az
a két docx template-et be tudom ágyazni excelbe valami ole ojjjektumként és azt megadni template-nek (word.documents.add() eljárással? (gondolom az utóbbi része nem menne)
-
bsh
addikt
válasz
Delila_1 #30290 üzenetére
az a baj ez nem az én fájlom, én nem írok bele adatot meg semmi közöm az egészhez, én csak makrózzam
ráadásul közösen használják, a kollégák állandóan szétcseszik az egészet, átállítják (az általam már előre beállított) formázásokat, meg ilyenek, aztán meg csak jön az opás nekem, mert jönnek nyafogni, hogy nem jó
(illetve sokszor észre sem veszik, hogy nem jó amit gányoltak...) na de hagyjuk...
-
bsh
addikt
válasz
Delila_1 #30285 üzenetére
vagy például amivel a minap ..optam: egy ilyen megrendelési szám: 302000060500, ezt ugye a nagyonokos excelje tudományos formátumra alakítja, ami nem jó... és hiába állítom át szövegre a cellaformázást, akkor is úgy jelenik meg, egészen addig, amíg nem próbálom meg szerkeszteni. ezért egyéni formátumra "@" kell állítanom minden cellát preventíven, de akkor meg "##########" jelenik meg cella teljes szélességében, és azt írja a tooltip, hogy a "negatív vagy túl hosszú dátumok" így jelennek meg... milyen dátumok könyörgöm, amikor ez egy formázatlan szöveg?!
de legalább másolni jó értéket másol...
-
Stanlee
őstag
válasz
Delila_1 #30256 üzenetére
Mitol lehet az, hogy egyes oszlopokban jol szamolja ossze, mig a mellette levo oszlopban neha jol neha meg total rosszul szamolja ossze a dolgokat? A keplet teljesen ugyanaz, nem valtozik meg...
negativ ertekek nem is lehetnenek. Az B oszlop jo, mig a C es D ertekei nem valosak. Esetleg valami javaslat, hol ronthattam el?
-
-
leepu
újonc
válasz
Delila_1 #30245 üzenetére
Köszönöm Delila és lappy hogy szántok rá időt, sajnos most dolgozok és csak éjszaka tudom megpróbálni, de aggaszt amit Te is írtál hogy egy sorban több tartományt hogy venné figyelembe. Az nem tudom segitene-e ha transzponálnám a táblázatot és utána a szöveges cellákat üressé tenném, csak a számot tartalmazóra van szükség.
-
Sweetraver
csendes tag
válasz
Delila_1 #30061 üzenetére
Köszönöm szépen!
De sajnos valami nem jó, nem jeleníti meg a megjegyzést :S Azt írja, hogy Compile error: Expected End Sub. - Lezártam egy End Subbal, most jó. Azt semmiképp nem megoldható, hogy az eredetit is megjelenítse?Közben találtam olyat, hogy Korrektúra-Változások követése. Itt állítgattam, s létrehozott egy Előzmények fült, plusz a cellában is létrehoz megjegyzést. Ez tök jó lenne, mert megjelenti a volt és a van állapotot is ezek a külön fülön.
Azonban amint rámentek, eltűnik ez a fül és a megjegyzés is. Miért? Hogyan tudom megcsinálni, hogy maradjon? Ha megnyitom akkor sincs ott. Bár ha újra rámegyek erre a Változások követésére s újra beállítom akkor látom a régebbi változtatásokat is. -
stivi1g
tag
válasz
Delila_1 #30008 üzenetére
Köszönöm!!
Annyit még kérhetek , hogy most így csak akkor küldi a rendszámot a tartalék munkalapra ha billentyű paranccsal viszem be a szöveget.
Viszont ha törlöm vagy módosítom dolgozik -ra az adott rendszám tevékenységét, akkor is ott marad a tartalék állományba a rendszám. Megoldható valahogy hogy akkor eltűnjön?? Vagy akkor vigyem be amikor már tuti hogy tartalék?
Tényleg nagyon köszönöm amit eddig segítették nem akarok pofátlan lenni..
-
Louro
őstag
válasz
Delila_1 #30000 üzenetére
Bocsi, az régi beidegződés, mert az elején még több cellába akartam a képletet beszúrni.
De megnézem Range-ek nélkül.
Azért akartam az Application.SumProduct-tal megoldani, mert a script-ben azt használok a többi helyen. Azért, hogy ne kelljen utána felülírnom önmaguk értékeivel a cellákat. (Ne képletek maradjanak a táblázatban.)
-
Louro
őstag
válasz
Delila_1 #29997 üzenetére
?activecell.formula
=SUMPRODUCT(Y5:AI5,Y14:AI14/SUM(Y5:AI5))A makrórögzítő azért nem jó, mert hivatkozásokat tesz be. Én meg olyanra akarom csinálni, azért a sok változó, hogy ha beszúrnak új sorokat, akkor még mindig a megfelelőekkel számoljon. Nem tudom azt mondani, hogy FormulaR1C1.
Rögzítővel:
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT(R[-10]C[-10]:R[-10]C,R[-1]C[-10]:R[-1]C/SUM(R[-10]C[-10]:R[-10]C))" -
biker
nagyúr
válasz
Delila_1 #29967 üzenetére
szia!
ez fut olyan 6-7 perce, nem tudom, mi lesz a vége, de most nézem, a B oszlopot a termék nevekkel felülírja #values-al, ami nem jó jel, a K oszlopba 1 1 1 1 2 2 2 és hasonlók kerülnek be
Kíváncsi leszek, mi lesz a végeredmény, ha lefut (core i7 16gb ram macbook pro) -
bsh
addikt
válasz
Delila_1 #29967 üzenetére
én így oldottam meg:
ez a K oszlop (cikkszám) alapján dolgozik, mivel ahogy látom, a megnevezés (B oszlop) lehet eltérő is ugyanahhoz a cikkszámhoz. (emiatt veszélyes is a makróm, mert törli a sorokat, és a többféle megnevezésekből csak az első marad meg, a többi elvész)
Sub flt()
lastrow = Me.UsedRange.Rows(Me.UsedRange.Rows.Count).Row
Call Me.UsedRange.Sort(Me.Columns("K:K"), xlAscending, Header:=xlYes)
i = 2
While i <= lastrow
o = 1
While Me.Cells(i, 11) = Me.Cells(i + 1, 11)
'kategóriák külön oszlopokba (AE, AF, AG, stb.)
Me.Cells(i, 30 + o) = Me.Cells(i + 1, 30)
'vagy kategóriák AD oszlopba, vesszővel elválasztva
'Me.Cells(i, 30) = Me.Cells(i, 30) & ", " & Me.Cells(i + 1, 30)
Me.Rows(i + 1).Delete
o = o + 1
lastrow = lastrow - 1
Wend
i = i + 1
Wend
End Sub -
-
batmanéhes
tag
válasz
Delila_1 #29862 üzenetére
(nagyon nem tudok egyetérteni ezzel a megoldással, mert a cél az volt, hogy be legyen írva elé a 06, nem pedig az, hogy úgy látsszon, mintha be lenne írva elé. elég zavaró tud lenni egy ilyen "kamuzás", nem teljesen értem miért pont te javasolsz ilyet. értem, hogy előtted már megválaszolták helyesen, csak általában furcsállottam)
-
MCGaiwer
addikt
válasz
Delila_1 #29750 üzenetére
Szia!
Kicsit módosítottam a táblázaton.
Felmerült egy újabb funkció:
Egy olyan macróra lenne szükségem, ami egy adott kijelölt területen számolja össze a ledolgozott napok számát valamint azokat a napokat, amiken valmiért dolgozni kellett volna, de az illető nem volt (szabadság, betegség stb)
-
-
bteebi
veterán
válasz
Delila_1 #29754 üzenetére
Nem kell azonosnak lennie. Nyilván időt veszít azzal, hogy minden sorban a UsedRange széléig megy, de még mindig sokkal jobb, mintha a teljes sort (256 vagy 16384 cella) végignézné. De akár azt is megtehetné, hogy minden sornak megnézi a jobb szélét, és csak addig menne a makró:
oszlopig = Cells(sor, Columns.Count).End(xlToLeft).Column
Persze ha teljesen fix a táblázat, akkor jó (gyorsabb), ha csak a fix tartományok vannak megadva.
-
Zimmy88
tag
válasz
Delila_1 #29751 üzenetére
Szia!
Köszi a tippet! Kipróbáltam, és lefuttattam a következő makrót. Viszont két dolog kellene még bele:
az egyik, hogy először kijelölje azokat a munkalapokat, amin végre kell hajtani a műveletet (B1 cella ha adott szöveget (pl "ezkell") tartalmaz, csak akkor kell rögzíteni az értékeket és különmenteni a fájlt),
a másik, pedig hogy értékrögzítés után, kimentés előtt ki kellene törölni pár felesleges oszlopot az E és a W közül (oszlop sorszámát tudom megadni).
Más: elég lassan futott a makró, 18-20 másodpercig tartott, mire "kidobott" egy kész munkalapot külön fájlba. Mivel lehetne gyorsítani esetleg? 30-40 munkalapnál ez elég hosszú idő...Sub mm()
Dim lap As Integer, r As Range, nev As String, utvonal As String
Dim terulet As Range
utvonal = "D:\kiment\"
For lap = 1 To Worksheets.Count
Sheets(lap).Select
Set terulet = Range("E8:W9,E12:W14,E16:W17,E20:W22,E25:W30,E33:W35,E37:W39,E41:W43,E45:W46,E49:W50,E52:W59,E62:W67,E69:W72,E75:W76,E81:W82,E85:W90,E93:W95,E98:W100,E102:W103,E105:W105,E107:W109,E112:W117,E120:W120,E123:W124,E129:W130,E132:W132")
For Each r In terulet
Range(r.Address) = r.Value
Next
nev = ActiveSheet.Name
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=utvonal & nev & ".xlsx"
ActiveWindow.Close
Next
End Sub -
csferke
senior tag
válasz
Delila_1 #29637 üzenetére
Köszi Delila!
Időközben én is alkottam valamit ="04."&MONTH(A1)+1&"."&YEAR(NOW()).Picit nyakatekert.
Az EOMONTH() sokkal egyszerűbb. Mindig van még mit böngésznem az Excel help-ben.De azért, hogy ne legyen egyszerű az élet, újabb követelménynek kell, hogy megfeleljen az új dátum.
Tehát a következő hónap 3.-10.-ig az új dátumban nap és munkanap legyen, nem lehet szombat vagy vasárnap. -
m.zmrzlina
senior tag
válasz
Delila_1 #29621 üzenetére
Nagyon köszönöm. Szépen működik. Sok finomhangolni való van rajta olyan dolgok miatt amit nem írtam le a kérdésben (így is hosszú volt) de alapvetően jól dolgozik.
A lényeg, hogy a létrehozott tartományban már sokkal könnyebb automatizálni a keresést és ez nagy segítség.
Köszi még egyszer, jár a
-
karlkani
aktív tag
válasz
Delila_1 #29567 üzenetére
Ez gyakorlatilag egy jelenléti ív. A ledolgozott órákat összegzem az általad készített makró segítségével. Eddig ugye a tartományt kézzel jelöltem ki, kihagyva a hétvégi napokat, stb. Most, ugye szín szerint összegzi az órákat, tehát nem kell minden hónapnál ezzel bajlódnom. Ellenben a képlet másolásánál, majd beillesztésénél másik cellába marad a kimásolt képletben szereplő tartomány. Ezt minden esetben módosítani kell, nem oldható meg úgy, mint az egyszerű összeadásnál?
Eszembe jutott még valami. Ebben a tartományban két szín van használatban (3, 33), kézzel állítom be. Ha minden betűszínt a 33-as színkódra állítom, megoldható az, ha az adott cella mellett eggyel balra levő cella betűszíne 36-os színkódú (hétvégi napok), akkor a betűszínt módosítsa 3-as színkódúra? Így ezzel sem kellene foglalkoznom a továbbiakban.
Végül, hogy lett a SumByColor-ból SubMyColor?
-
poffsoft
veterán
-
róland
veterán
válasz
Delila_1 #29556 üzenetére
Igen, én rontottam el az ide beírt függvényt. Helyesen:
=INDEX($A:$D;HOL.VAN($H2;$A:$A;1);3) vagy ...);4)
Az én kérdésemben egy céges munkarend készítő táblázatról van szó. Az adott munkahelyhez/munkakörhöz tartozó munkarend egy táblázat adott lapján szerepel. Amennyiben változás van úgy az adott lap következő sorába kerül a változás kezdő dátuma és a munkakezdés/munkaidő vége értékek. (Azaz mindig emelkedő sorrendbe rendezett lesz a dátum.)
-
róland
veterán
válasz
Delila_1 #29530 üzenetére
Még egyszer köszönöm!
Közben alaposan átnéztem a HOL.VAN függvény súgóját és sikerült még egyszerűsíteni a keresést:
=INDEX(HOL.VAN($H2;$A:$D;1);3) valamint ...);4)-re a két változatban.
A lényeg, hogy a HOL.VAN függvény utolsó paramétereként "1"-et megadva pontos egyezést, vagy legközelebbi kisebb értéket keres.
Új hozzászólás Aktív témák
Hirdetés
- Nintendo Switch 2
- Fotók, videók mobillal
- Pentax DSLR topic
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- PlayStation 5
- Milyen egeret válasszak?
- Építő/felújító topik
- Redmi Note 8 és 8T
- Samsung Galaxy S24 - nos, Exynos
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- További aktív témák...
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Most kedvező áron!
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- 27%-OS ÁFÁS SZÁMLA I Jogtiszta Microsoft digitális és fizikai termékek I DIGITALKEYZ.COM
- Sea of Thieves Premium Edition és Egyéb Játékkulcsok.
- Antivírus szoftverek, VPN
- MacBook felvásárlás!! MacBook, MacBook Air, MacBook Pro
- LG 32GS95UE - 32" OLED / UHD 4K / 240Hz - 480Hz & 0.03ms / 1300 Nits / NVIDIA G-Sync / AMD FreeSync
- Steam, EA, Ubisoft és GoG játékkulcsok, illetve Game Pass kedvező áron, egyenesen a kiadóktól!
- SAMSUNG DDR4 REG ECC 32GB 2666MHz RDIMM szerver RAM modulok, nettó 15740Ft+ÁFA, 1 év gar., több db
- 135 - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4090 (ELKELT)
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest