- Radeon RX 9060 XT: Ezt aztán jól meghúzták
- Atomenergiával dübörögnek tovább az Amazon adatközpontok, SMR-ek is jöhetnek
- Macron betiltatná az EU-ban a közösségi médiát a 15 év alattiaknak
- Az NVIDIA ipari AI-felhőt épít a németeknek, együtt az OpenAI és a Google
- Két új Ryzen közül választhatnak a kézikonzolok
-
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
-
Fferi50
Topikgazda
válasz
Tiboy86 #25497 üzenetére
Szia!
Némi segítséget azért szokott a függvényhez tartozó súgó adni.
A hetek számát tartalmazó oszlopot másold át egy új helyre - akár azon a munkalapon is, úgy, hogy csak egyszer szerepeljen a hét. Ezt megteheted az adatok - speciális/irányított szűrő segítségével, ha 2007-es vagy annál frissebb exceled van, akkor az átmásolt oszlopon adatok - ismétlődések eltávolítása.
Ha megvan az egyedi hétszámod az oszlopban, legyen ez a V oszlop, V1-től kezdődően, akkor a W1 cella képlete
= Szumha(B:B;V1;S:S)Ezt a képletet húzod végig a hetek számának aljáig.
Üdv.
-
Tiboy86
tag
válasz
Fferi50 #25496 üzenetére
De halvány gőzöm sincs hogy kell használni.
Ezt kéne tegye:
Ahol az 1. sorban szerepel 1501 a B oszlopban és szerepel szám az S oszlopban akkor azokat a számokat adja össze, és ez legyen a cella értéke. És ebből lesz grafikon, ez lesz az első oszlopa a diagramnak.
Következő oszlopban 1502, stb. stb. -
Tiboy86
tag
Sziasztok! A következő kérdésem van:
Össze szeretném adni egy cellába azoknak a celláknak az összegét, amelyeknek a sorában található egy konkrét szám.
A konkrét szám ez esetben az, hogy hányadik hét, pl. 1501, 1502, az összegek pedig az azokra a hétre való összbevitel. Tehát van olyan sor, ahol csak az szerepel, hogy hányadik hét, illetve a termékre vonatkozó egyéb információk, és van olyan sok, ahol a hét sorszáma mellett szerepel az input is. Ezeket az inputokat szeretném összeadni, hogy kiderüljön, melyik héten mennyi volt az összes input.
Segítenétek kérlek?
-
Fferi50
Topikgazda
Szia!
Nos, azt gondolom, hogy saját magát nem szerencsés meghívni, hanem egy másik eljárást kell hívni, aminek a végére ismét betesszük az időzítés meghívását.
Tehát az üzenetet tedd bele egy külön eljárásba és annak a végén hívd meg az időzítőt újra. Tehát az időzítő eljárásban a másik eljárás neve szerepel, mint meghívó.
Szerintem ez lesz a nyerő.
Bocs, eddig nem figyeltem fel rá, hogy nem két külön eljárást nézek - biztosan a tavaszi fáradtság volt az oka (ez keltette fel a gyanúmat: "Vagy önmagát ne tudná beidőzíteni?")
Nálam mindig külön eljárás az időzítő és az időzített folyamat.
Sőt, a kikapcsolásra, biztos ami biztos alapon van egy harmadik is.(Még egy icipici apróság: a call egyáltalán nem szükséges, ha vba eljárásokat hívsz meg.Help:"You are not required to use the Call keyword when calling a procedure.")
Üdv.
-
Wyll
őstag
válasz
Fferi50 #25489 üzenetére
De igazából nem akkor akad ki, amikor (elsőre, kézzel indítva) lefut az időzítés, hiszen egyrészt olyankor még nem kapok hibaüzenetet, másrészt utána pont a beállított idő eltelte után újra le akarna futni, ami helyes.
Csak épp ilyenkor mégsem fut le, hanem jön a hibaüzenet.
Most amúgy odaírtam a value-t is, és nem javított a helyzeten.Ez inkább olyan, mintha nem találná a kért függvényt.. valami névhiba vagy stringhiba..
Gondoltam hogy esetleg hiányzik a zárójel, vagy ilyesmi, de nem..
Vagy önmagát ne tudná beidőzíteni? Ez csak egy string, nem függvénypointer.. -
Fferi50
Topikgazda
Szia!
Azt gondolom, az a baja, hogy a kovetkezo cella és nem időérték. szerintem úgy kellene meghívni, hogy
Application.Ontime, kovetkezo.value,"frissito_idozito"Ezért(is) szoktam én mindig odaírni a value tulajdonságot is, mert bár igaz, hogy a range alapértelemzett tulajdonsága az érték, de sajnos ezt nem mindig tudja a VBA "értelmezni" - itt pl. egy időértéket vár.
Remélem, ez segít.
De szerintem ezzel együtt ki kellene lépni teljesen az excelből, hogy "elfelejtse" ezt az időzítést.
Üdv.
-
Wyll
őstag
válasz
Fferi50 #25482 üzenetére
Még most is ugyanezt írja ki, pedig azóta konszolidáltam a kódot, és marhára nem csukom be a file-t!
Szépen az x másodperc lejártakor jön a hibaüzenet...Ennyi a lényeg:
Private Sub Workbook_Open()
Call frissito_idozito
MsgBox "Frissítés elindítva!"
End Sub
Sub frissito_idozito()
Dim kovetkezo As Range, gyakorisag As Range
Set kovetkezo = ThisWorkbook.Sheets("titkos").Range("A1")
Set gyakorisag = ThisWorkbook.Sheets("titkos").Range("A2")
MsgBox "Frissítés..."
'Call frissites
kovetkezo = Now + gyakorisag
Application.OnTime kovetkezo, "frissito_idozito"
End SubAkkor sem jó, ha zárójellel a végén írom a string-be a sub nevet.
-
Fferi50
Topikgazda
válasz
KaliJoe #25479 üzenetére
Szia!
Ha tömbnek hoztad létre, akkor az Ubound(tömb) függvény mutatja, hogy hány eleme van az adott tömbnek.
Tehát elég, ha azt írod a redim utasításba, hogy
redim preserve tömb(ubound(tömb+1)).
De ezt minden egyes tömbelem - egész rekord! - beolvasása után meg kell tenned.A preserve azért kell, hogy megmaradjanak az addig bevitt értékek.
A byt_Ciklus változó helyett használhatod az Ubound(tömb) értéket számlálónak (bár a tömb nevét elnézve, nyilván a rövidebb a praktikusabb.Tehát közvetlenül az end if elé be kell tenned, hogy
redim preserve udef_MunkavállalóAdatbázis(byt_Ciklus)
Üdv.
-
Wyll
őstag
válasz
Fferi50 #25482 üzenetére
Igen, ez már megvolt ha visszaolvasol, pont ehelyett akartam áttérni makróra, mivel a beépített frissítés csak beolvassa a változásokat, de a linkeket nem update-eli, ami nekem nem elég, mert a linkek maguk nem változnak, az viszont igen, amit beolvasnak, de az meg már link update, nem szinkronizáció.
Ezért most kézileg kell az egészet újraépítenem, aminek két előnye lesz:
- 5 percnél gyakrabban is beolvashatom a változásokat
- azt teszek a loop-ba amit csak akarok, itt most persze a linkek update-je a lényeg -
Fferi50
Topikgazda
Szia!
Az előbb rosszul írtam, a frissítési periódust a közössé tétel után kell megadni:
ActiveWorkbook.AutoUpdateFrequency=10
Az ütközés kezelés is változtatható határok között:
Activeworkbook.ConflictResolution=xlUserResolutionA változások megőrzési ideje is változtatható.
Üdv.
-
Fferi50
Topikgazda
Szia!
Ez azt jelenti, hogy van egy időzítésed, ami éles és szeretett volna lefutni - de az a program/munkafüzet már nem aktív, ami elindította, illetve amiben a futtatandó makró lenne. Ezért kell kikapcsolni az időzítést, mielőtt kilépsz a programból. Természetesen lehet globális változóba is tenni az időpont értékét (Public-ként vagy Globál-ként is definiálhatod egy általános modulban). Nálam nem volt probléma a munkafüzetbe irkálás.
A közös használat azért igényel némi óvatosságot.
A közös használatú munkafüzetnek van egy saját frissítési opciója. A korrektúra menü munkafüzet megosztása menüpontban láthatod, hogy beállítható a frissítés és az ütközések kezelése is. Természetesen ez megy makróból is.
Ebben az esetben minden nyitott munkafüzet a megadott periódusonként frissíti és menti magát.
Lehet, hogy Neked ebbe az irányba kellene elindulni?
Közös használatúvá tevés:
If Not ActiveWorkbook.MultiUserEditing Then
ActiveWorkbook.SaveAs fileName:=ActiveWorkbook.FullName, _
accessMode:=xlShared
End If
Előtte még be kell állítani a frissítést és az ütközések kezelését is.Üdv.
-
Wyll
őstag
válasz
Fferi50 #25460 üzenetére
"Az éppen abban a pillanatban elindult frissítést viszont már nem tudod kikapcsolni, az le fog futni, csak a későbbi időpontot lehet "törölni"."
Igen, de amit te írtál, az csak akkor törli a későbbi időpontot, ha az már korábban bejegyződött.
Így ha azonos másodpercben zajlik az újraélesítés és a kilépés, akkor a kilépés nem fogja deaktiválni az immár a kilépés utánra datálódó időzítést. (Lehet hogy erre azért nem gondoltál, mert te még nem írtad bele az újraélesítést.)Nade ez igazából már részletkérdés, a lényeg az ötlet volt, amit köszönök.
Bár azért egy olyan aprócska gond azért van vele, hogy ez tulajdonképpen egy megosztott dokumentumba folyamatosan belefirkál, azaz módosítja magától akkor is, ha a felhasználók hozzá sem nyúltak..
Nem lehet, hogy jobb lenne az idő megjegyzésére egy globális változót használni? Lehet VBA-ban olyat egyáltalán?És egy jelenség;
a frissítés még nincs benne, egyelőre a rendszeres időzítést akarom szépen stabilizálni:Ez mi lehet?
-
Dr. Mózes
aktív tag
Sziasztok!
Az volna a kérdésem, hogy a képen látható bal oldaliból hogyan lehetne olyat csinálni, mint ami a jobb oldalon van.
Előre is nagyon szépen köszönöm! -
KaliJoe
tag
Sziasztok,
A kérdésem a következő: Egy egyedileg létrehozott tömb, később egy ciklussal feltöltött eleminek számát - programfutás időben - hogy tudom megkérdezni a programtól. Itt a '.Count' tulajdonság nekem nem működik.
Találgatás:
Talán fel kellene vennem az egyedi tömb tulajdonságai közé, és amikor feltöltöm a tömböt, akkor minden egyes rekordba tegyem be az utolsó rekord sorszámát?
Definíciós rész:
Private Type typ_MunkavállalóAdatbázis
Név As String
SzülDátum As Date
Adóazonosító As String
TAJSzám As String
TelefonSzám As String
Email As String
BelépésDátum As Date
Munkahely As String
Pozíció As String
End TypePrivate udef_MunkavállalóAdatbázis() As typ_MunkavállalóAdatbázis
Felhasználás, feltöltés:
ReDim udef_MunkavállalóAdatbázis(byt_Ciklus)
byt_Ciklus = 1: byt_AktuálisSor = 2
Do Until Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapHosszúNévOszlop).Value = "Vége"
If Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapDolgozóStátuszOszlop).Value = "Aktív" Then
udef_MunkavállalóAdatbázis(byt_Ciklus).Név = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapHosszúNévOszlop).Value
udef_MunkavállalóAdatbázis(byt_Ciklus).SzülDátum = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapSzülDátumOszlop).Value
udef_MunkavállalóAdatbázis(byt_Ciklus).AdóAzonosító = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapAdóAzonosítóOszlop).Value
udef_MunkavállalóAdatbázis(byt_Ciklus).TAJSzám = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapTAJSzámOszlop).Value
udef_MunkavállalóAdatbázis(byt_Ciklus).TelefonSzám = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapTelefonSzámOszlop).Value
udef_MunkavállalóAdatbázis(byt_Ciklus).Email = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapEmailOszlop).Value
udef_MunkavállalóAdatbázis(byt_Ciklus).BelépésDátum = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapBelépDátumOszlop).Value
udef_MunkavállalóAdatbázis(byt_Ciklus).Munkahely = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapMunkahelyOszlop).Value
udef_MunkavállalóAdatbázis(byt_Ciklus).Pozíció = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapSorSzámOszlop).Value
byt_Ciklus = byt_Ciklus + 1
End If
byt_AktuálisSor = byt_AktuálisSor + 1
Loop -
slashing
senior tag
válasz
pirit28 #25474 üzenetére
A2-ben és B2 lévő cella képleteiben van egy ilyen ;HA(SZÁM(Tábla!A1)=IGAZ cserléd le úgy hogy : (Tábla!A1*1)
ez amúgy azért van mert nem tudom hogyna kerülnek oda az adatok de átveszi a régi cellák cellatípusát és a sima számokat így nem számnak gondolja hanem szövegnek......
de ezt a számos vizsgálatot át kellene írni valami másra mert így a sima 1/10-et meg dátumnak veszi majd... eredetileg ezt a feladatot *-al csináltuk így most a / jel miatt máshogy kell
-
pirit28
csendes tag
válasz
m.zmrzlina #25473 üzenetére
Szia !
Pontatlan, információhiányos volt a kérésem ezért kibővítettem file-t.#25418-hsz-ban volt egy kérésem a *-al elválasztott számok szétszedésében.
Nagyon profin sikerült is ezt a problémát megoldani.
A szétszedéshez használt táblázatból az adatok másolását követően ,amit a Tábla fül A oszlop alatt a található számok igazolnak ,csak úgy végezhető el a szétbontás,hogy az oszlopban levő számokat számmá konvertálom.Viszont mivel ezeket az adatokat percenként kell másolni, ezért a percenként végrehajtandó -
pirit28
csendes tag
válasz
m.zmrzlina #25471 üzenetére
-
pirit28
csendes tag
válasz
m.zmrzlina #25469 üzenetére
Sziasztok !
Újra itt vagyok.Feltöltöttem egy file-t, hátha többet segít a probléma megoldásában.
Az a baj hogy a nem számformátumú számok ,nem azt az értéket tükrözik ami látszik.Ezt szeretném reformálni.
[link]
Köszönöm -
m.zmrzlina
senior tag
-
pirit28
csendes tag
Sziasztok !
Excel file-ból excel file-ba való másoláskor keletkezik néhány nem számformátum.
Hogyan tudnám ezeket a nem számformátumú cellákat
szám formátumra vagy text-re konvertálni ?
Bármilyen megoldás jó,csak minél egyszerűbb legyen.
Ezen kívül
http://i.imgur.com/E5RORx5.pngAz lenne profi megoldás ha már másolást követően nem is kellene foglalkozni vele .
A választ,és megoldásokat előre is köszönöm !
-
Fferi50
Topikgazda
válasz
m.zmrzlina #25466 üzenetére
Nálad az igazság!
-
m.zmrzlina
senior tag
válasz
Fferi50 #25465 üzenetére
"(De az is csak annyiszor kell lefusson, ahány gyümölcsneved van és nem az egész tartomány cellaszámának megfelelően.)"
Igen de változás esetén itt ugyanúgy át kell írni az egész kódrészletet mint a Select Case-nél, a másodiknál viszont csak a rng_gyümölcsök listát a másik munkafüzetben. Ehhez pedig nem kell tudni programozni és ez volt a cél.
Köszi még egyszer!
-
Fferi50
Topikgazda
válasz
m.zmrzlina #25464 üzenetére
Szia!
Az első csak "illusztráció" volt a működésre. (De az is csak annyiszor kell lefusson, ahány gyümölcsneved van és nem az egész tartomány cellaszámának megfelelően.)
Üdv.
-
m.zmrzlina
senior tag
válasz
Fferi50 #25463 üzenetére
Köszönöm eltettem a megoldásokat.
Az első replace-es megoldás most azért nem jó nekem mert pont azt a célt nem valósítja meg ami miatt a Select Case-es szerkezetet le akarom cserélni. A második természetesen jó lesz.
A valódi makróban nem használok ékezetet az csak a illusztrációba került bele.
-
Fferi50
Topikgazda
válasz
m.zmrzlina #25461 üzenetére
Látom, közben Te is megtaláltad a megoldókulcsot. Csak még fűztem hozzá némi egyéb dolgot.
Üdv.
-
Fferi50
Topikgazda
válasz
m.zmrzlina #25459 üzenetére
Szia!
A VBA-ban a nevek nem úgy működnek, mint a munkalapon. A names("név").referstorange mutat a név által meghatározott területre, a names("név").refersto pedig az adott névhez tartozó terület címét adja meg.
Tehát ezt a sor részt:
Workbooks("forrásadatok.xlsx").Names("gyümölcsök")ki kell egészíteni:
Workbooks("forrásadatok.xlsx").Names("gyümölcsök").referstorange
Másrészt, sokkal gyorsabb, ha a range.replace tulajdonságát használod:
wsKabelo.Range("C2:C129").replace what:="ALMA",replacement:=1,lookat:=xlwhole
ami az egész tartományban kicseréli az ALMA szót az 1 számra.
A javított makró pedig a Gyümölcsök tartományon megy végig - és kicseréli az első oszlopban található gyümölcsneveket a második oszlopban található számokra:
Set rng_gyümölcsök = Workbooks("forrásadatok.xlsx").Names("gyümölcsök").referstorange
Set wsKabelo = ActiveSheet
for each cl in rng_gyümölcsök.columns(1).cells
wsKabelo.range("C2:C129").replace what:=cl.value,replacement:=cl.offset(0,1).value, lookat:=xlwhole
nextEgyébként annyit javaslok még, hogy ne használj ékezetes karaktereket a makrókban és a neveknél, mert ebben az esetben nem hordozható a munkafüzeted, más (pl.angol) környezetben hibásan /vagy nem működik.
Üdv.
-
m.zmrzlina
senior tag
válasz
m.zmrzlina #25459 üzenetére
Ha az objektumváltozót a következőképpen deklarálom akkor megy:
Set rng_gyümölcsök = Workbooks("forrásadatok.xlsx").Names("gyümölcsök").RefersToRange
Set wsKabelo = ActiveSheet
For Each rngCella In wsKabelo.Range("C2:C129")
If rngCella.Value <> "" Then
rngCella.Value = Application.WorksheetFunction.VLookup(rngCella.Value, rng_gyümölcsök, 2, 0)
End If
Next -
Fferi50
Topikgazda
Szia!
"Most nézem csak, hogy a frissitőből kihagytad az ön-újraidőzítést, nem?"
De! Nyilván minden lefutáskor újra kell időzíteni.
Az időzítő kikapcsolásra pedig azért van szükség, mert application szinten van bekapcsolva, azaz "emlékszik rá", hogy kellene valamit csinálnia - ezért "panaszkodni fog", vagy egyszerűen "benyalja" a korábbi fájlt és megcsinálja az időzített folyamatot akkor is, ha nem szeretnéd.
Azért fontos, hogy a következő frissítés időpontját eltároljuk, mert pontosan kell rá hivatkozni a kikapcsolásnál. (Nyilván a Now+timevalue(akármi) egy konkrét időpont, de ha nem tudod mi ez az időpont, akkor nem fogod tudni "utolérni" az időzített programot.)
Az éppen abban a pillanatban elindult frissítést viszont már nem tudod kikapcsolni, az le fog futni, csak a későbbi időpontot lehet "törölni".
Üdv.
-
m.zmrzlina
senior tag
Adott egy tartomány (pl C2:C120) amiben kb 100 darab elem (szöveg) van. A 100 elem 5 különböző értéket vehet fel, vannak üres cellák és értelemszerűen az 5 féle elem mindegyike többször is előfordul.
Az a feladat, hogy le kell cserélni minden elemet egy számra, azonos szöveget azonos számra.
Ezt eddig így csináltam:For Each rngCella In wsKabelo.Range("C2:C129")
If rngCella.Value <> "" Then
If UCase(rngCella.Value) = "ALMA" Then
rngCella.Value = 1
ElseIf UCase(rngCella.Value) = "KORTE" Then
rngCella.Value = 2
ElseIf UCase(rngCella.Value) = "BANÁN" Then
rngCella.Value = 3
ElseIf UCase(rngCella.Value) = "NARANCS" Then
rngCella.Value = 4
ElseIf UCase(rngCella.Value) = "CITROM" Then
rngCella.Value = 5
End If
End If
NextEz rendben működik de több ilyen lista van amelyek ráadásul folyamatosan változnak, tehát nem a legjobb ötlet beleírni a kódba fixen a neveket és a csereértékeket.
Felvittem az összes listát egy másik munkafüzetbe két oszlopból álló tartományokba, majd elneveztem ezeket a tartományokat a Névkezelővel. Ezekben a tartományokban szeretnék keresni makróból a VLOOKUP() fv-nyel a következőképpen:
For Each rngCella In wsKabelo.Range("C2:C129")
If rngCella.Value <> "" Then
rngCella.Value = Application.WorksheetFunction.VLookup(rngCella.Value, _
Workbooks("forrásadatok.xlsx").Names("gyümölcsök"), 2, 0)
End If
Nextesetleg így:
Set rng_gyümölcsök = Workbooks("forrásadatok.xlsx").Names("gyümölcsök")
Set wsKabelo = ActiveSheetFor Each rngCella In wsKabelo.Range("C2:C129")
If rngCella.Value <> "" Then
rngCella.Value = Application.WorksheetFunction.VLookup(rngCella.Value, _
rng_gyümölcsök, 2, 0)
End If
NextSajnos egyik sem működik. Mit szúrok el?
-
pepenek
csendes tag
Köszönöm a gyors választ. Próbáltam össze & operátorozni, de van olyan html rész, ahol "" jel van, azt nem tudtam megoldani. Viszont tovább ügyködtem a helyettesítő karakter visszacserélésén és az sikerült. Összeszedetem vele a kicserélt idézőjeles html szöveget és a változókat, majd a kész szövegben visszacserélem azokat idézőjelre: =HELYETTE(A1;"KARAKTER(34)";KARAKTER(34)) visszarakta az idézőjeleket.
-
Wyll
őstag
válasz
pepenek #25455 üzenetére
Egyrészt az összefűzésre használható az
&
(összefűzés) operátor is, szerintem egyszerűbb ezt használni, ha sok az összefűznivaló. Pl:
"Termék neve: " & link & ", ami még változhat."
A stringben pedig idézőjelet duplaidézőjellel tudunk elhelyezni:
"Termék neve: " & link & ", ami még változhat. Speciális, ""barbatrükk"" eljárással készült termék."
Idézőjellel befejezni egy stringet ebből következően három idézőjellel lehet:
"Használt eljárás neve: ""barbartükk"""
-
pepenek
csendes tag
Sziasztok!
Egy weboldal adatbázisát készítem elő Excel-ben. Sorokban a termékek vannak, egyik oszlopban pedig a termékismertetőt kell hogy tartalmazza. Ez Html kódrészletből, majd a változó termékinformációk (cellahivatkozás), majd újabb Html kódrészletből áll.
Az összefűz függvényt használtam az összeállítására. A problémát az idézőjel használata okozta, amit az összefűz függvény használna és a html kód is bőven tartalmazza:
=ÖSSZEFŰZ("<p style="text-align: center;"><span style="color:#000000;">";'[Készlet 2015.xlsx]Készlet'!Y302;"</span></p> <hr /> <p style="text-align: center;"><img alt="" src="http://markabarkaoutlet.shoprenter.hu/custom/markabarkaoutlet/image/data/site/";'[Készlet 2015.xlsx]Készlet'!Z302;"" style="width: 147px; height: 235px;" /></p> <p style="text-align: center;"><span style="color:#000000;">";BJ302;"</span></p>")
Manuálisan úgy oldottam meg, hogy a html idézőjeleit kicseréltem jelölőkarakterre (a függvény " -jelei természetesen maradtak). Az eredményként kapott szövegben a jelölőkaraktereket keresés - csere használatával pedig visszacseréltem idézőjelre.
Van erre szép megoldás?
A helyette függvény sem tudja értelmezni, hogy a jelölőkaraktereket idézőjelre cserélje vissza. A KARAKTER(34) használatával sem mentem sokra, bár lehet, hogy rosszul csináltam. -
Wyll
őstag
válasz
Fferi50 #25241 üzenetére
Szia!
Nagyon köszi a válaszodat, most jutottam csak odáig, hogy érdemben foglalkozzak vele. Egy felvetés: a
timevalue(kovetkezo) > Time
feltétel mindig igaz lesz, hiszen a kovetkezo az egy valódi dátum (Now + Timeserial), ellenben a Time függvénnyel, ami csak az adott napon belüli időt adja vissza, és utóbbi az excel dátumábrázolásában nullánál kisebb érték.
Szóval nem lehet hogy inkább atimevalue(kovetkezo) > Now
feltételt kéne használni?
***
Őőő, nem szóltam
If the time argument contains date information, TimeValue doesn't return it. ... -
KaliJoe
tag
Sziasztok,
A kérdésem a következő: Egy egyedileg létrehozott tömb, később egy ciklussal feltöltött eleminek számát - programfutás időben - hogy tudom megkérdezni a programtól. Itt a '.Count' tulajdonság nekem nem működik.
Találgatás:
Talán fel kellene vennem az egyedi tömb tulajdonságai közé, és amikor feltöltöm a tömböt, akkor minden egyes rekordba tegyem be az utolsó rekord sorszámát?Definíciós rész:
Private Type typ_MunkavállalóAdatbázis
Név As String
SzülDátum As Date
AdóAzonosító As String
TAJSzám As String
TelefonSzám As String
Email As String
BelépésDátum As Date
Munkahely As String
Pozíció As String
End Type
Private udef_MunkavállalóAdatbázis() As typ_MunkavállalóAdatbázisFelhasználás, feltöltés:
ReDim udef_MunkavállalóAdatbázis(byt_Ciklus)
byt_Ciklus = 1: byt_AktuálisSor = 2
Do Until Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapHosszúNévOszlop).Value = "Vége"
If Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapDolgozóStátuszOszlop).Value = "Aktív" Then
udef_MunkavállalóAdatbázis(byt_Ciklus).Név = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapHosszúNévOszlop).Value
udef_MunkavállalóAdatbázis(byt_Ciklus).SzülDátum = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapSzülDátumOszlop).Value
udef_MunkavállalóAdatbázis(byt_Ciklus).AdóAzonosító = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapAdóAzonosítóOszlop).Value
udef_MunkavállalóAdatbázis(byt_Ciklus).TAJSzám = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapTAJSzámOszlop).Value
udef_MunkavállalóAdatbázis(byt_Ciklus).TelefonSzám = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapTelefonSzámOszlop).Value
udef_MunkavállalóAdatbázis(byt_Ciklus).Email = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapEmailOszlop).Value
udef_MunkavállalóAdatbázis(byt_Ciklus).BelépésDátum = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapBelépDátumOszlop).Value
udef_MunkavállalóAdatbázis(byt_Ciklus).Munkahely = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapMunkahelyOszlop).Value
udef_MunkavállalóAdatbázis(byt_Ciklus).Pozíció = Worksheets("Személylap").Cells(byt_AktuálisSor, const_SzemélylapSorSzámOszlop).Value
byt_Ciklus = byt_Ciklus + 1
End If
byt_AktuálisSor = byt_AktuálisSor + 1
Loop -
slashing
senior tag
válasz
robull5 #25447 üzenetére
az irányított szűrést lehet csinálni új munkalapra is annyi különbséggel hogy előbb meg kell adnod egy sorban a fejléceket majd arról a lapról indítani az irányítottt szűrést ahova ki akarod gyűjteni, fontos hogy ne onnan indítsd ahonnan gyűjtesz mert akkor valamiért nem enged lapot váltani.
remélem érthetően és jól írtam le, én még nem sokat használtam ezt a funkciót...
üdv.
-
robull5
csendes tag
válasz
slashing #25446 üzenetére
Szia. Isten király vagy, főleg, hogy ennyit foglalkoztál vele és még videóval is prezentáltad, ez csillagos 5-ös, jár a jutalomkönyv év végén a bizonyítványkiosztásnál
Amúgy én is pont ilyennel gondolkoztam, meg is tudnám csinálni, egy hasonló táblában csináltam így ahogy te, csak a gond nekem az, hogy abból a táblából amire hivatkozok, oda nem tudok már több oszlopot beszúrni, (hosszú, akarom mondani széles: CY-ig), mert félő hogy csúsznak a "dolgok".
Néztem ezt a SZUMHATÖBB függvényt értem, hogy mit szeretne, csak valahogy nem tudom megvalósítani
-
slashing
senior tag
válasz
slashing #25445 üzenetére
csak mert unatkoztam: http://data.hu/get/8507616/2015-02-14_23-34-32.mp4
-
slashing
senior tag
válasz
robull5 #25443 üzenetére
Többlépcsős megoldással lehet csak megcsinálni.
Először is kell csinálni mondjuk a D oszlopba egy összefűzést:
=A2&" "&B2&" "&C2
Ha ez megvan akkor irányított szűréssel(fontos hogy fejléccel el legyen látva a táblázat, ezért van fent a képletben A2 B2 C2, de részletesebben nem megyek bele az irányított szűrésbe, keress rá példát a neten ha még nem csináltad, nem bonyolult) az egyedi értékeket kiszűrni valahova a táblázatba és ha ez megvan akkor az egyedi értékek mellé már csak egy darabteli függvény kell amiben megadod az összefűzött oszlopot tartománynak kritériumnak meg az egyedi értékeket és kész is vagy...
-
robull5
csendes tag
Sziasztok, szeretnék tanácsot kérni a következőben:
Van egy A1:A500-ig lévő különböző neveket tartalmazó oszlop. Szeretném megkerestetni és megszámoltatni az excellel, hogy hányszor fordult elő A oszlopban lévő "Anasztázia" a B1 : B500 és C1 : C500 oszlopban lévő értéke együttesen (magyarul mind a kettő értéket vizsgálja meg egyszerre, és számoltassa meg)
Példa:
Sor A B C
12 Anasztázia 0 1
130 Anasztázia 1 0
142 Anasztázia 3 0
168 Anasztázia 0 1
220 Anasztázia 1 0
456 Anasztázia 0 1
500 Anasztázia 5 2Ezt szeretném elérni, én az előfordulásra és annak darabszámára vagyok kíváncsi:
Tehát:
Anasztázia
0 1 3 db
1 0 2 db
3 0 1 db
5 2 1 dbVBA-t nem tudok használni, csak függvénnyel meg tudjuk oldani?
Üdvözlettel Robi -
Delila_1
veterán
A próbálkozások között törölnöd kellett volna a Havi lap kigyűjtött adatait.
Beírtam a makróba, hogy tegye ezt meg.Sub Kigyujtes()
Dim usor As Long, sor As Long, lap As Integer, WSH As Worksheet
Dim WF As WorksheetFunction
Set WF = Application.WorksheetFunction
Set WSH = Sheets("Havi")
usor = WSH.Range("A" & WSH.Rows.Count).End(xlUp).Row
WSH.Range("A2:K" & usor).ClearContents
For lap = 2 To Worksheets.Count
With Sheets(lap)
.Range("A100:K200").Copy WSH.Range("A" & WF.CountA(WSH.Columns(1)) + 1)
End With
Next
End Sub -
Delila_1
veterán
válasz
Dr. Mózes #25431 üzenetére
A G oszlopba kigyűjtöd a C egyedi rekordjait (régebbi verziókban Adatok | Szűrő | Irányított, 2007-től Speciális szűrés).
A kép szerinti képleteket beírod az E, F, és I oszlopokba. Azokat a cellákat törölheted, ahol az I oszlopban HAMIS érték van. Kijelölöd az E2:I2 cellákat, Ctrl+ mínusz jel, cellák eltolása felfelé.
Ez utóbbira lehet írni egy makrót. -
Delila_1
veterán
A
.Rows("2:" & usor).Copy WSH.Range("A" & WF.CountA(WSH.Columns(1)) + 1)sorban a félkövér helyére
Range("A100:K200")-at írj.
Az usor = .Range("A" & .Rows.Count).End(xlUp).Row sor nem kell.
Még a Dim kezdetű sorból is kimaradhat az usor As Long, de nem szükséges kitörölni, nem árt semmit.
-
Delila_1
veterán
Első lapnak betettem egy Havi nevűt, ahova bemásoltam a többi lap címsorát. Minden lapon az első a címsor.
Az összegző makró:
Sub Kigyujtes()
Dim usor As Long, sor As Long, lap As Integer, WSH As Worksheet
Dim WF As WorksheetFunction
Set WF = Application.WorksheetFunction
Set WSH = Sheets("Havi")
For lap = 2 To Worksheets.Count
With Sheets(lap)
usor = .Range("A" & .Rows.Count).End(xlUp).Row
.Rows("2:" & usor).Copy WSH.Range("A" & WF.CountA(WSH.Columns(1)) + 1)
End With
Next
End SubSzerk.: eddig nem szórta szét a fórummotor ilyen randán a sorokat.
-
Dr. Mózes
aktív tag
Sziasztok!
Azt a feladatot kaptam, hogy egy ehhez hasonló excel táblában az azonos azonosítójú (c. oszlop) számokat adjam össze, majd ha a végeredmény a és b oszlopban megegyezik, akkor törlődjön, ha pedig nem egyezik a két oszlop, akkor maradjon meg. Meg lehetne ezt valahogy oldani egy képlettel, mert az eredeti nem 13 soros, hanem 30000, ami egyesével több napot venne igénybe, mire kiválogatnám. Az volna a legjobb, ha mellette kilistázná a különbözőeket, mint ahogy azt a jobb oldalon illusztráltam.
Nagyon, nagyon megköszönném, ha ebben valamelyikőtök tudna segíteni, mert már egy napot bogarászással töltöttem és nem volt egy kellemes élmény. -
Treb
tag
Sziasztok!
Én is egy kis segitséget szeretnék kérni excelben!
Arrol lenne szó hogy adott excel táblázatban mindennapnak külön füle van és minden fülön van 5 táblázat hasonló adatokkal de napi szinten azért vannak változások. Ezekből a táblázatokból az egyiket szeretném egy külön lapra másolni ugy hogy a napok szerint sorba egymás alá kerüljenek lehetőleg automatán menjen a dolog ha megoldható!
THX -
Fferi50
Topikgazda
válasz
Delila_1 #25423 üzenetére
Szia!
Ha már makró, próbáljuk meg tömbfüggvénnyel:
Function szetszedo(ByRef cl As Range)
alap = cl.Value
alap = alap & String(2 - UBound(Split(cl.Value, "*")), "*")
szetszedo = Split(alap, "*")
End FunctionKijelölöd a 3 cellát vizszintesen, ahová az eredményt szeretnéd kapni.
Ezután beírod =szetszedo(A1) , ha a "szétdobandó" szám az A1 cellában van.
Tömbképletként (shift+Ctrl+Enter) beviszed.Üdv.
-
slashing
senior tag
válasz
Fferi50 #25424 üzenetére
Hmmm, teljesen máshogy közelítetted meg mint ahogy én de ez is szép képlet lett
közben rájöttem a hibámra szóval akkor az én képleteim szintén 3 tényezős szorzásig:
Bal széle:
=HA(SZÁM(A2)=IGAZ;A2;BAL(A2;SZÖVEG.KERES("~*";A2)-1)*1)
Közepe:
=HA(SZÁM(A2)=IGAZ;"";HAHIBA(KÖZÉP(A2;SZÖVEG.KERES("~*";A2)+1;SZÖVEG.KERES("~*";A2;SZÖVEG.KERES("~*";A2)+1)-SZÖVEG.KERES("~*";A2)-1)*1;JOBB(A2;HOSSZ(A2)-SZÖVEG.KERES("~*";A2))*1))
jobb széle:
=HAHIBA(JOBB(A2;HOSSZ(A2)-SZÖVEG.KERES("~*";A2;SZÖVEG.KERES("~*";A2)+1))*1;"")
Egyedül a ha szám amin lehet változtatni kéne de ha alapból általános a cella beállítottsága akkor nem lesz gond ha előre be van állítva szövegre akkor át kelll állítani általánosra.
-
Fferi50
Topikgazda
válasz
slashing #25422 üzenetére
Szia!
Ha az A1-ben van a szám:
Bal széle:
=HA((HOSSZ(A1)-HOSSZ(HELYETTE(A1;"*";"")))=0;A1;ÉRTÉK(BAL(A1;SZÖVEG.KERES("~*";A1)-1)))
Közepe:
=HA((HOSSZ(A1)-HOSSZ(HELYETTE(A1;"*";"")))=0;"";HA((HOSSZ(A1)-HOSSZ(HELYETTE(A1;"*";"")))=1;ÉRTÉK(HELYETTE(A1;C1&"*";""));ÉRTÉK(KÖZÉP(A1;SZÖVEG.KERES("~*";A1)+1;SZÖVEG.KERES("~*";HELYETTE(A1;C1&"*";""))-1))))
Jobb széle:
=HA((HOSSZ(A1)-HOSSZ(HELYETTE(A1;"*";"")))=0;"";HA((HOSSZ(A1)-HOSSZ(HELYETTE(A1;"*";"")))=1;"";ÉRTÉK(HELYETTE(HELYETTE(HELYETTE(A1;"*";"");C1;"");D1;""))))Ez elvileg 3 tényezős szorzatig működik, ha nincs szorzás azt is tudja, ha 2 tényező van, azt is.
Üdv.
-
Delila_1
veterán
válasz
pirit28 #25420 üzenetére
Makróval:
Sub Szetcincal()
Dim adat
If InStr(Selection, "*") > 0 Then
adat = Split(Selection, "*")
Selection.Offset(, 1) = adat(0)
Selection.Offset(, 2) = adat(1)
On Error Resume Next
Selection.Offset(, 3) = adat(2)
Else
Selection.Offset(, 1) = Selection.Value
End If
End SubRáállsz a szétszedendő cellára, és indítod a makrót.
Sajnos saját készítésű függvényt nem lehet rá írni, mert az nem tud a szomszédos cellákba rajzolni. -
slashing
senior tag
válasz
slashing #25421 üzenetére
Jobb széle
=JOBB(A2;HOSSZ(A2)-(SZÖVEG.KERES("~*";A2)+SZÖVEG.KERES("~*";A2;SZÖVEG.KERES("~*";A2))))
Valaki tiszta aggyal nézze már meg mert nekem már nem fog pedig olyan közel a cél
4-ből kettőre jót ad de a másik kettőre nem, a plusz minuszokkal kéne játszani valahogy illetve honnan számolja a követekező * keresést... már ha ez így érthető én már teljesen belezavarodtam
-
slashing
senior tag
válasz
pirit28 #25418 üzenetére
Ha A2-től vannak a szorzások:
A bal képlete: =HA(SZÁM(A2)=IGAZ;A2;BAL(A2;SZÖVEG.KERES("~*";A2)-1)*1)
A közép képlete: =HA(SZÁM(A2)=IGAZ;"";HAHIBA(KÖZÉP(A2;SZÖVEG.KERES("~*";A2)+1;SZÖVEG.KERES("~*";A2;SZÖVEG.KERES("~*";A2)+1)-SZÖVEG.KERES("~*";A2)-1)*1;JOBB(A2;HOSSZ(A2)-SZÖVEG.KERES("~*";A2))*1))A jobb szélével egyenlőre még nem jutottam dűlőre, valaki besegítehne, kezdek belezavarodni a sok szöveg.keresbe....
-
pirit28
csendes tag
válasz
Fire/SOUL/CD #25419 üzenetére
Szia !
Kösz ,ezt tudom hogy hogyan kell ,de automatizálni szeretném ,ha lehet függvénnyel.
-
-
pirit28
csendes tag
Sziasztok !
Ismét egy kis segítség kellene.
Hogyan tudnám ezeket a számokat külön bontani függvénnyel,külön külön egy egy cellába ?
A segítséget előre is köszönöm !
-
slashing
senior tag
elég szivatós a dolog mert ahogy delila is írja az 523 lehet 5. hét 23 és lehet 52. hét 3 is és ilyenből lehet több száz vagy ezer variáció, nah most addig nincs gond míg csak olyan vanalkódot olvasol be ami a mai nap vagy azutáni de ha mondjuk decemberben kell beolvasni egy május vonalkódot akkor az mindenképpen szívás...
(#25411) HIJ
Nálam is van ilyen ha elindítok egy bizonyos alkalmazást lényegtelen most mit de akkor totál belassul nekem is az excel kénytelen vagyok kilépni a másikból addig.... ha fut mellette valami másik erőforrás igényes program akkor azokat addig zárjátok be....
-
HIJ
őstag
Sziasztok!
Remélem valaki tud valamit ajánlani a problémámra, mert a koleganő a halálba kerget...
Adott egy office 2013 smal bussines, aminek az excelle kissé lassú. Illetve nem is maga a működése vagy betöltése, hanem beíráskor ha gyorsan gépelsz és váltod a cellákat, akkor lemarad. Tehát a beírás és a folyamatos enterezéskor kicsit belassul. Ha megállasz, akkor ő még pl a két cellával le van maradva. Maga a gép nem egy erőmű de bőven jónak kéne lennie egy excell működéséhez (AMD Sempron 140, 4 Gb DDR3). Találtam olyat, hogy hardveres grafikus gyorsítás tiltása, na azzal kicsit gyorsabb lett, de még mindig bőven rossz...
Találkozott már valaki ezzel a problémával? -
vasq
csendes tag
Sry ZohanKAA , félre nyomtam az elöbb.
-
-
ZohanKAA
csendes tag
Hali!
A következő problémára kellene nekem megoldás, de egyenlőre nem jövök rá sehogy sem.
egy vonalkód egy része tartalmaz egy kódszámot: pl 073 ez konkrétan nálunk a mai napot jelenti ( 7. hét 3. nap. ha 523 lenne az például az: 52. hét 3. nap.
Nekem ebből valahogy dátumot kellene csinálnom. szóval ha beolvasom a vonalkódból a 073-as számot azt szeretném ha a másik oszlopba ezt jelenítené meg: 2015.02.11
Fordítva egyszerű mert van rá függvény az excelben, de erre sehogy nem jövök rá.
Milyen megoldások létezhetnek?Előre is köszönöm a segítséget!
Üdv, ZohanKA!
-
Telda
addikt
Hali!
Használja valaki a FONETIKUS függvényt? Mert nekem nem akar működni.
-
alfa20
senior tag
Sziasztok,
Van egy makróm, ami egy inputbox-ból kéri be mit szeretne az illető, az a bajom, hogy ha a "Cancel"-re nyomnak, akkor azt is rossz válasznak veszi, hogy még is ki tudjanak lépni, nem túl elegáns modón, de ha a rossz válaszok elérik a 2-őt akkor kilép a programból.
Be lehet szúrni egy parancsot amivel a "cancel"-re kilép?
Sub leosztás()
Dim usor As Long, usor2 As Long, usor3 As Long, usor4 As Long
Dim uszlp As Integer, RvA As String, regi As String, ujful As String
Dim RV As Byte
RV = 0
10
If RV = 2 Then Exit Sub
RvA = InputBox("Áttárolást vagy Rendelés szeretnél leosztani?" & vbCrLf & "(A/R)", "Válassz leosztást!")
If RvA = "a" Or RvA = "A" Or RvA = "r" Or RvA = "R" Then
GoTo 20
Else
MsgBox ("Rossz válasz!")
RV = RV + 1
GoTo 10
End If
20
Application.ScreenUpdating = False
....
End Sub()
Új hozzászólás Aktív témák
Hirdetés
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Sea of Thieves Premium Edition és Egyéb Játékkulcsok.
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Most kedvező áron!
- Új, bontatlan World of Warcraft gyűjtői kiadások
- ÁRGARANCIA!Épített KomPhone i9 14900KF 64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- REFURBISHED és ÚJ - Lenovo ThinkPad 40AS USB-C docking station (akár 3x4K felbontás)
- AKCIÓ! Apple Mac Studio M1 MAX 2022 32GB 512GB számítógép garanciával, hibátlan működéssel
- Bomba ár! HP ZBook Studio G5 - XEON I 32GB I 512SSD I Nvidia I 15,6" 4K DreamColor I Cam I W11 I Gar
- Dell D6000 univerzális dokkoló USB-C/ USB-A, DisplayLink & Dell WD15 (K17A) USB-C + 130-180W töltő
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest