Hirdetés
-
GAMEPOD.hu
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
-
Mutt
senior tag
Szia,
Alt+F11-re bejön a makró szerkesztő. Bal oldalon ki kell választanod a füzetedet, majd az Insert | Module menüpontokkal új modult kapsz, ami a bal oldalon látszik, és ki van jelölve. A jobb oldali nagy üres mezőbe kell bemásolni a fórumon kapott makrót. Visszalépve a füzetbe az Alt+F8 előhoz egy párbeszéd ablakot, itt tudod kiválasztani és indítani a makrót.
Az indítás előtt hozzlétre egy Summary nevű lapot a munkafüzetben.
Futtatás után amikor mentesz, akkor fel fog dobni egy üzenetet, hogy makróbarátként célszerű menteni különben elveszik a makró. Érdemes nem makróbarátként menteni, mert nem kell neked folyamatosan ez a makró.A fenti lépéseket mindkét fájlon külön-külön kell megtenned és utána a két fájl Summary lapját tudod összehasonlítani.
üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Peterhappy
őstag
Sziasztok,
Csináltam anno egy költségtáblát, amiben egy táblázatban vezetem a bevételeket is, a kiadásokat is.
Kényelmi okokból egyik irányú pénzmozgásnál sem használok mínusz előjelet.Az lenne a kérdésem, megoldható volna-e, hogy a pivotálásnál (külön lapon) a 'bevétel' és a 'vállalkozás' értékeit továbbra is "plusszosan" lássam, szemben a többi oszloppal (élelmiszer, közlekedés, szórakozás stb.), amiket viszont kivonnék ezek értékeiből.
Jelenleg a Végösszeg oszlopban minden összeadásra kerül (nagyon helyesen), csak így elég megtévesztőek az itt megjelenő havi, és éves adatok.Közel 11000 soros a táblázat, nem javítgatnám egyenként az összes bevételt, ha ez nem szükséges
Előre is nagyon szépen köszönöm az esetleges segítséget!
-
andreas49
senior tag
válasz Peterhappy #53454 üzenetére
A cellaformázásnál be tudod állítani, hogy ne jelenitse meg az előjelet. A mező kitöltésnél ott kell lenni az előjelnek, de az nem fog látszani. Lehet a negatív szám fekete vagy piros. Nem tudom erre gondoltál-e.
[ Szerkesztve ]
HONOR Magic5 Pro - Huawei P30 Pro 8/128 GB - Xiaomi MI Note 10 Pro - Huawei Mate 10 Pro
-
Peterhappy
őstag
válasz andreas49 #53455 üzenetére
Köszönöm szépen a gyors választ.
Nem egészen, a lényeg az lenne, hogy előjelet nekem ne kelljen beírnom.De adtál egy ötletet! Képlettel át tudom másolni az értékeket másik fülre, ahol feltételek használatával negatív számmá tudom varázsolni a kiadásokat - ha azokat emelem be a pivotba, rendben leszek. Legalábbis remélem.
Szóval köszönöm a segítséged Ha nem sikerülne, visszatérek.
-
Mutt
senior tag
válasz Peterhappy #53456 üzenetére
Szia,
Nem kell plusz dolog, csak Excel 2010 vagy frissebb, amiben van Power Pivot (PP).
1. Amikor Kimutatást (Pivotot) készítesz, akkor pipáld be az "Adatmodellbe töltés" opciót.
2. Kezdőknek az egyszerűbb - de nem hatékonyabb megoldás - pedig hogy az adatmodellben létrehozunk egy új mezőt, ahova berakjuk a megfelelő előjelet. Ehhez aktiválni kell a Power Pivot menüt, amit a Fejlesztő/Developer fülön a COM Addins alatt lehet megtenni.
Ezek után a Power Pivot menüben a Kezelés/Manage gombra kattintva feljön az PP szerkesztő. Az utolsó, "Add Column" oszlopot kijelölve és felette a szerkesztőlécben megadhatjuk az alábbi képletet (a mintám szerint ha "kiadás" van a típus oszlopban akkor -1-el szorozzuk meg az Érték oszlopban található számot):=if(Range[Típus]="kiadás";-1;1)*Range[Érték]
Az oszlop fejlécére kattintva adhatsz nevet az oszlopnak.
Ha így viszed be a képletet:eredmény:=if(Range[Típus]="kiadás";-1;1)*Range[Érték]
, akkor a kettőspont előtti elnevezést kapja az oszlop. Bezárhatod a PP szerkesztő ablakot és visszajutsz az Excelbe.3. Ezek után a kimutatásban használd az új oszlopot az érték mezőben.
A hatékonyabb, de nehezebben érthető megoldás egy új érték/measure hozzáadása az adatmodellhez. A PP a DAX nyelvet használja, ami angol függvényeket használ. Egy részük hasonlít az Excel függvényekhez, de többnyire máshogy működnek.
Lépések a profi megoldáshoz:
1. Ugyanaz mint a fenti 1-es.
2. Ha akarod aktiváld a Power Pivot menűt, mint ahogy fent említettem. Nem kötelező.
3. Kezd el összerakni a kimutatást, de kimutatás mezőknél jobb klikk a táblázaton (mintámban Range a neve) és válaszd az "Érték hozzáadása/Add measure" opciót. (Ha van már Power Pivot menüd, akkor azon belül a második gomb a "Measure", amivel ugyanezt lehet csinálni.
Az ablakot vhogy így töltsd ki:
Én az "eredmény" nevet adtam neki, a képlete ez (ha kell magyarázat szólj):=SUM(Range[Érték])-2*CALCULATE(SUM(Range[Érték]);Range[Típus]="kiadás")
Alul beállítottam hogy Ft-ként tizedesek nélkül írja ki automatikusan.4. Ezt az új értéket, húzd be a kimutatás értékrészébe.
Készen vagyunk.
A Power Pivot mindkét esetben automatikusan használni fogja a képletet az új adatokon.Ps.
A két megoldás között a különbség, hogy az első minden sor esetén lefuttatja a képletet (az adatok betöltésekor) és létrehoz egy új oszlopot. Ez lassítja a betöltést és több memóriát foglal. Észrevenni a mai gépeken milliós sorok esetén lehet csak. A második egy explicit függvény, ami csak a pivotban látható adatsorokon fut le (pl. ha együtt vannak a tavalyi és idei mozgások, de a pivotban szűrtél az ideiévre akkor csak 2024-es adatoknál számol a képlet).[ Szerkesztve ]
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
eszgé100
őstag
Koszonom, idokozben irrelevanssa valt a kerdesem. Nem volt tul sok sor (<100), szoval kivalogattam a dolgokat kezzel. Ez eleg infot szolgaltatott, hogy lassuk, hogy nem azt mutatjak az adatok, amit fonok prezentalni szeretett volna, igy vegul az egesz muveletet kukaztuk.
"-Meddig tart a játék? -Amíg mindenkinek ki nem verik a fogát..."
-
félisten
-
eszgé100
őstag
válasz Fire/SOUL/CD #53460 üzenetére
Az elkepzelese jo volt, csak a valosaggal nem szamolt
Story annyi volt, hogy be akarta mutatni, hogy a kulonbozo kaizenek bevezetese utan mennyivel csokkent egy-egy tipus ciklusideje visszamenoleg a kezdetektol. Hat semennyivel, mert ugyanugy 2-3 darabot epit meg a kollega, mint elotte, csak mostmar k.rva raerosen, anelkul, hogy megszakadna. Ertelmezheto adatok akkor lesznek lathaoak, ha nagyobb darabszamra lesz az igeny, lesz rajta valamennyi nyomas, es nem szakitjak felbe non-standard activitykkel.
Megmondom oszinten majdnem sirva fakadtam, mikor a kapott eredmenyt kinyomtam egy bar chartra es ugy nezett ki mint egy hullamvasut a szepen csokkeno tendencia helyett
[ Szerkesztve ]
"-Meddig tart a játék? -Amíg mindenkinek ki nem verik a fogát..."
-
andreas49
senior tag
Sziasztok,
Helyezés megállapítására keresek megoldást 2 oszlop esetén.
Pl.: A1-A4 -> 100,100,43, 25
B1-B4 -> 57. 63 , 15, 44
Eredmény a C1-C4 oszlopban.
Ha az A1-A4 oszlopban egyezőség, akkor vegye figyelembe a B1-B4 adatait.
A 'RANG.EGY függvényt és a DARABHA függvény próbáltam, de nemigazán jött össze. Microsoft 365 Excel-t használok.
Segítséget köszi előre isHONOR Magic5 Pro - Huawei P30 Pro 8/128 GB - Xiaomi MI Note 10 Pro - Huawei Mate 10 Pro
-
Fferi50
Topikgazda
válasz andreas49 #53462 üzenetére
Szia!
2 db egyformára működik ez a képlet, de csak akkor, ha egymás után vannak az egyformák:=RANG.EGY(A1;$A$1:$A$4;0)+HA(DARABHA($A$1:$A$4;A1)>1;HA(RANG.EGY(B1;$B$1:$B$4)>RANG.EGY(A1;$A$1:$A$4;0);1;0))
Ha több egyforma van, arra még nincs megoldásom.
Képlet nélküli megoldás:
Rendezés: első szint A oszlop, második szint B oszlop. C oszlopba pedig 1 től induló sorszám. Ez biztosan működik akárhány A oszlopban levő egyezés mellett, ha nincs ugyanott B oszlopi egyezés.
Üdv.[ Szerkesztve ]
-
Fferi50
Topikgazda
-
Mutt
senior tag
válasz andreas49 #53462 üzenetére
Szia,
Itt az én megoldásom MS365-ös függvényekkel, segédoszlop nélkül. Feltételeztem hogy csökkenő sorrend érdekel, ha nem akkor a -1-eket a rendezésben 1-re kell cserélni.
C2-nek a képlete (tördelés csak a könnyebb olvashatóság miatt):=LET(
adat;INDIREKT("A2:B7");
lista;RENDEZÉS.ALAP.SZERINT(adat;INDEX(adat;0;1);-1;INDEX(adat;0;2);-1);
XHOL.VAN(A2&"-"&B2;INDEX(lista;0;1)&"-"&INDEX(lista;0;2)))
Egy másik változat pedig SZŰRŐ-t használva (ez van a D-oszlopban):
=LET(
adat;INDIREKT("A2:B7");
lista;VÍZSZ.HALMOZÁS(RENDEZÉS.ALAP.SZERINT(adat;INDEX(adat;0;1);-1;INDEX(adat;0;2);-1);SORSZÁMLISTA(SOROK(adat)));
a;INDEX(lista;0;1);
b;INDEX(lista;0;2);
c;INDEX(lista;0;3);
SZŰRŐ(c;(a=A2)*(b=B2)))
Mindkét esetben a LET utáni első változó deklaráció azért van, hogy csak ott kelljen változtatnod a tartományt.
üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
félisten
Tehát ha jól látom, akkor azt továbbra sem oldották meg, hogy egy visszaadott dinamikus tömb egyes elemeire/tartományára közvetlenül/direktbe lehessen hivatkozni?
Pl. a deklarált lista változódban visszakapott táblázat (esetedben 12 elemű, 2 dimenziós dinamikus tömb) pl. első elemére így nem lehet hivatkozni: lista[0,0] ?
(szintaktikát ne nézd, az így nem jó, tudom, csak így egyértelmű(bb) mit is kérdeznék)Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Mutt
senior tag
válasz Fire/SOUL/CD #53469 üzenetére
Szia,
Nem hinném, hogy valaha is lehet majd direktben hivatkozni tömb elemeire a frontendben. INDEX-et lehet addig is használni.
Üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
KaliJoe
tag
Sziasztok Kedves Excel expertek,
(Na akkor még egyszer, mert miután leírtam a kérdésem, újra beléptetett a rendszer, és elszállt a szövegem.)
Szeretnék Excelben telefonszámokat formázni, úgy, hogy a cellában eredetileg csak a számsor szerepel. Viszont különböző formázások kellenek, amire így a Cellaformázás Egyéni szekciója alkalmatlan. (Az én tudásom szerint) marad a feltételes formázás.
Viszont, hátha már valaki megoldotta ezt a problémát frappánsan.Tehát a probléma példákkal:
1. Világ telefonszám: 1-től 9-ig a világ zónái + 3 számjegyes körzethívó + 7 -8 jegyű telefonszám. Pl. +1 (289) 9-297-191, tárolása: 12899297191
2. Olyan országok, ahol változó hosszúságú a körzetszám:
2.a. Például Németország Bad Homburg: +49 6172; Berlin: +49 30; Bonn: +49 228 és 7 jegyűek a számok. Tárolása +49 (####) és a 7 jegyű telefonszám.
3. Magyarország +36 országhívóval. Itt további pontosabb elkülönítés lenne kívánatos
3.a. Körzetenként
3.a.1. Budapest, pl. +36 (1) 789-56-62
3.a.2. Vidék, pl. +36 (99) 452-520
3.a.3. Mobilszámok, pl. +36 (20) 854-14-75, +36 (70) 701-888-0
3.b. Nem terület alapú körzetszámok, pl. +36 (21); +36 (31); +36 (40); +36 (51); +36 (80); +36 (90); +36 (91), ahol a maszk lehet hasonló a mobilszámokéval, esetleg +36 (51) 55-12-85-1 vagy +36 (51) 551-2-851 típusú, ugyanakkor itt jó volna az írásszínnel való megkülönböztetés, mint a 40-es kék számnál a kék szín, 80-as zöldnél a zöld, 90 és 91-es körzeteknél az emelt díjas szolgáltatásokra figyelemfelkeltő piros szín, stb.Ha valaki tud rá jó megoldást, de kellene még infó, akkor tudok küldeni egy táblázatot, ami nagyjából ezt tartalmazza, amit fentebb leírtam.
Segítségetek előre is köszönöm.
Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
-
Fferi50
Topikgazda
válasz KaliJoe #53471 üzenetére
Szia!
Azt esetleg elárulnád, hogy az ömlesztett számsorból mi fogja megmutatni, hogy éppen melyik formázást kell alkalmazni?
Mert szabály nélkül nemigen lehet kitalálni.
A szabály ismeretében lehet eldönteni, hogy milyen formázás legyen. Szerintem mindenképpen szövegformázást kell majd alkalmazni, valószínűleg makróval.
Üdv. -
KaliJoe
tag
válasz Fferi50 #53474 üzenetére
Szia Fferi50,
A szabály magából a telefonszámból következik. Ahogy leírtam. Tehát például:
1. Világ telefonszám, feltételrendszer:
1.a. Ha 1-gyel (vagy +1-gyel) kezdődik a szám, és a hossza 11 karakter, netán 1-gyel kezdődik és több, mint 10 milliárd, mint például a 12 899 297 191, vagyis 12milliárd 899 millió 297 ezer 191. Tehát a szükséges maszk: \+\# (000) #0-###-###
3.a.1 Magyarország, Budapest: 36-tal kezdődik, utána két karakter >=11 és <=19, hossza pedig 10 vagy (ami evvel egyenértékű) >=3610000000, de <=3619999999. Tehát a szükséges maszk: \+\## (0) 000-00-00.
3.a.2 Magyarország, Vidék: 36-tal kezdődik, utána két karakter >=20, de nem a 3.b alatt felsoroltak, hossza pedig 10 vagy (ami evvel egyenértékű) >=3620000000, de <=3699999999. Tehát a szükséges maszk: \+\## (00) 000-000.
3.b Magyarország, Nem terület alapú körzetszámok, például a 40-est kiemelve: 36-tal kezdődik, utána két karakter =40, hossza pedig 10 vagy (ami evvel egyenértékű) >=3640000000, de <=3640999999. Tehát a szükséges maszk: \+\## (40) 000-000, de kék írásszínnel, mint ezkék szám
.És így tovább, a feltételekkel. Amiket ehhez kéne kitalálni. Arra próbáltam rákérdezni, hogy ez így megvan-e valakinek úgy hogy az működik is, vagy van-e az én gondolatomnál egyszerűbb megoldás a problémára, ami ezt az eredményt hozza?
Tehát a szabály, amire rákérdezel az maga a telefonszám, és annak értelmes tagolása, mondanám, ahogy mi magyarok tagolni szoktuk a telefonszámokat.
Remélem így már érthetőbb a kérdésem. Van egy Excel táblám, ami magyarázza a számokat vagy ugyanez az infó elérhető a: [link] -ről
Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
-
Fferi50
Topikgazda
válasz KaliJoe #53475 üzenetére
Szia!
Sajnos nem erre gondoltam, a maszkok teljesen érthetőek. De
Pl. 123456789, 345678289, 21345678912
Mondd meg légy szíves, melyik maszkot használjam ezekre, mindegyikre ugyanazt vagy melyikre milyent.
Melyik számról mit tudsz megállapítani?
Mi van, ha a magyar telefonszámhoz nincs a +36?
Üdv.[ Szerkesztve ]
-
Mutt
senior tag
válasz KaliJoe #53475 üzenetére
Szia,
Az én megoldásom azon alapszik, hogy van egy táblázat amely tartalmaz pár adatot ami alapján meg lehet találni, hogy melyik formátumot kell használni.
Mutatom.
Jobb oldalt van a táblázat, amiben a telefonszám első pár karaktere van megadva (lehet dzsóker karaktert - kérdőjel most csak - is használni). Aztán van hossz is, hogy az altípusokat meg lehessen különböztetni (biztosra mentem és tartományt lehet megadni).
Majd jön a kívánt számformátum, itt követni kell az Excel speciális számformátum szabályait. Meg lehet adni, hogy milyen háttérszíne legyen a cellának (három szám 0-255 között, vesszővel felsorolva a vörös-zöld-kék alapszínekhez). A komment pedig segít eligazodni a káoszban.A táblázatban fontos a sorrend. Ha több lehetőség is van akkor is az első találatot fogja használni a makró.
Ezek után a makró:
Option Explicit
Dim arrFormats
Sub FormatNumbers()
Dim s As Range
Dim r As Variant
Dim szinek As Variant
'megadott formátumokat memóriába töltjük
'ha más a tábla neve akkor a tFormats helyére a helyes kerüljön
arrFormats = ActiveSheet.ListObjects("tFormats").DataBodyRange.Value
Set s = Intersect(Selection, ActiveSheet.UsedRange)
If Not s Is Nothing Then
'kijelölt adatokon végigmegyünk
For Each s In Selection
r = FindFormat(s.Value)
If IsArray(r) Then
'a cél cella formázását levesszük
s.ClearFormats
'beállítjuk a formátumot
s.NumberFormat = r(1)
'ha van színezünk
If r(2) <> "" Then
szinek = Split(r(2), ",")
If UBound(szinek) = 2 Then s.Interior.Color = RGB(szinek(0), szinek(1), szinek(2))
End If
End If
Next s
End If
End Sub
Function FindFormat(p As String) As Variant
Dim i As Long
Dim pFormat(1 To 2) 'formátum és színkód
Dim pKezdo As String
Dim pHossz As Long
pHossz = Len(p)
FindFormat = ""
If pHossz = 0 Then Exit Function
'végigmegyünk a létező formátumokon
For i = 1 To UBound(arrFormats)
pKezdo = ""
'hossz alapján keresünk egyezést
If arrFormats(i, 2) >= pHossz And arrFormats(i, 3) <= pHossz Then
pKezdo = arrFormats(i, 1)
'kezdõ karakterek alapján keresünk egyezést
If Left(p, Len(pKezdo)) Like pKezdo Then
'ha van egyezés akkor elmentjük és kilépünk a ciklusból
pFormat(1) = arrFormats(i, 4)
pFormat(2) = arrFormats(i, 5)
FindFormat = pFormat
Exit For
End If
End If
Next i
End Function
Csak a kijelölt cellák formátumát változtatja meg! Vagyis előbb jelöljük ki a cellákat/oszlopokat és utána futassuk (Alt+F8-at nyomva vagy egy gombot kitéve).
[ Szerkesztve ]
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
félisten
válasz KaliJoe #53475 üzenetére
Kivitelezhető, csak több melóval, mivel a nemzetközi telefonszám-formátumok országonként eltérnek. Nemzetközi számoknál az országkódot ki kell szedni, telószám hosszát lekérdezni és ebből a kettőből lehet meghatározni megjelenítési formátumot.
Feltételes formázással is kivitelezhető, de amint egy újabb ország telószáma bekerül, egyből új szabály(ok) hozzáadása szükséges.Az utolsó 2 szabály a 2 Németországi formátumot érvényesíti.
1.=LET(Nemzetközi_DE;BAL(A1;2);Nemzetközi_DE_HOSSZ;HOSSZ(A1);HA(ÉS(Nemzetközi_DE="49";Nemzetközi_DE_HOSSZ=12);1))
2.=LET(Nemzetközi_DE;BAL(A1;2);Nemzetközi_DE_HOSSZ;HOSSZ(A1);HA(ÉS(Nemzetközi_DE="49";Nemzetközi_DE_HOSSZ=13);1))
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Owlet
újonc
Sziasztok!
Adott Minta János és Teszt Béla felhasználó egy vállalaton belül, akik excelben szeretnék rögzíteni, mely napon melyik telephelyen dolgoztak, ezeket legördülő listából adatérvényesítésen keresztül teszik meg.
János csak a saját oszlopában lévő adatokat módosíthatja, Béla pedig a sajátjaiét.
A B2 és C5 közötti területetn kívül minden levédtem jelszóval, amivel a dátumok és neveik módosítását megvontam, viszont így egymás adatát még át tudják írni.
Próbáltam írni egy makrót, amely ellenőzi, mely windows AD felhasználó nyitja meg a munkafüzetet, de nem jártam sikerrel.
A csavar benne még az, hogy minden név mellett szerepel egy fix 6 karakter hosszú számsor, mely nem szerepel az AD névben.
További csavar benne (ami nem biztos, hogy csavar, de érdemesnek találom megemlíteni), hogy a munkafüzet online térben közös használattal lesz feltöltve, tehát többen egyszerre is nyitva tarthatják azt majd.
Próbáltam megoldani tartományszerkesztés engedélyezése funkcióval is, de ezzel sem sikerült kielégítő eredményt elérnem.
Előre is köszönöm szépen a segítségeteket! -
Fferi50
Topikgazda
Szia!
Elviekben:
Az Application.Username visszaadja annak a felhasználónak a Windows nevét, aki éppen használja a munkafüzetet. Az első sorban levő neveket ehhez kell hasonlítani úgy, hogy a cella értékéből elhagyod az utolsó 6 karaktert. Így megkapod azt az oszlopot, amit felszabadíthatsz.
Alapesetben a munkalapnak zároltnak kell lennie, hogy a korlátozások érvényesülhessenek. Viszont a zárolást közös használat esetén úgy emlékszem nem lehet feloldani csak kizárólagos megnyitással.
Úgy gondolom mégis inkább a szerkeszthető terület megadása lesz a megoldás, amit előre definiálhatsz és hozzárendelhetsz a Windows userhez. Ezt utána az Excel maga ellenőrzi, a munkalap azon területeit, amelyeket szerkeszteni lehet, a hozzárendelésnél fel kell szabadítani, majd az egész munkalapot zárolni.
Üdv. -
Mutt
senior tag
Szia,
...munkafüzet online térben közös használattal lesz feltöltve...
ez a részt mit jelent? Sharepoint/OneDrive vagy a shared folder?A weben (Sharepoint/OneDrive) a VBA nem műkődik, helyette van az Office Script (csak olyan munkahelyi licensz esetén ahol ezt az admin engedélyezte). Office Scriptben nincs lehetőség aktuális felhasználó beazonosítására, amit ki lehet próbálni hogy felugró ablakban bekérni a felhasználót és azzal tovább menni.
Ha shared folderben van a fájl, akkor műkődik a VBA, de nagy az esély ilyenkor az adatvesztésre/hibás fájlra.
Alternatív lehetőségek:
1) Esetleg amit lehetne tenni, hogy mindenkinek külön fájlja van és Power Query-vel egyesíteni lehet őket.
2) Microsoft Forms használata (ha van licensz).
3) Harmadik opció ha mindegyik felhasználó tud emailt küldeni, akkor küldhetnek egy emailt (pl. elég ha a tárgyba beleteszik honnan dolgoznak, a többi jön a feladóból és email dátumából). Ezt lehet Power Query-vel vagy azonnal Power Automate-el összesíteni egy fájlba (utóbbi megint licensztől függ).üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Mutt
senior tag
Mivel kicsit zavart ezért itt a javítás.
Sub FormatNumbers()
Dim s As Range, sel As Range
Dim r As Variant
Dim szinek As Variant
'megadott formátumokat memóriába töltjük
'ha más a tábla neve akkor a tFormats helyére a helyes kerüljön
arrFormats = ActiveSheet.ListObjects("tFormats").DataBodyRange.Value
Set sel = Intersect(Selection, ActiveSheet.UsedRange)
If Not sel Is Nothing Then
'kijelölt adatokon végigmegyünk
For Each s In sel
r = FindFormat(s.Value)
If IsArray(r) Then
'a cél cella formázását levesszük
s.ClearFormats
'beállítjuk a formátumot
s.NumberFormat = r(1)
'ha van színezünk
If r(2) <> "" Then
szinek = Split(r(2), ",")
If UBound(szinek) = 2 Then s.Interior.Color = RGB(szinek(0), szinek(1), szinek(2))
End If
End If
Next s
End If
End Sub
Akit érdekel a hibám a "For Each" sorban volt, ahol továbbra is a Selection (a felhasználó által kijelölt tartományt) használtam. Ha egy teljes oszlopot jelöl ki a felhasználó, akkor mind az 1 millió soron próbál végig menni a makró, ami lassú lesz. Ezért van a kódban előtte egy INTERSECT, amit elfelejtettem használni.
üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
KaliJoe
tag
Szia Mutt,
Köszönöm a megoldásod / próbálkozásod. Ki fogom próbálni.
Szerintem, ki lehet lépni a ciklusból egy vizsgálattal, például, ha 3 (vagy akár csak egy) üres sort i talál, így nem fut le mind az egymillióra. Ez világos.
Ha jól értem a megoldásod, készítettél egy formátum táblát, ahol megvannak országra, plusz külön Magyarországra részletesebben a használandó formátumok, ezeket beolvassa a makró, majd sorról sorra megnézi, hogy melyikhez hasonlít a számsor, ha talál megfelelőt, akkor arra a típusra beállítja a táblában kódolt formátumot.Ha jól értem a működését, akkor ez jó lehet. Tetszik is a megoldásod, de egy kicsit jobban húzok a feltételes formázás felé, mert azt rögzíteni lehet a sablon munkafüzetbe és csak mindig azt az oszlopot kell neki megadni, ahol az adott munkalapon a telefonszámokat reprezentáló számok vannak.
Köszönöm a segítséged, majd még jelentkezem, ha ki tudtam próbálni.
Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
-
KaliJoe
tag
válasz Fire/SOUL/CD #53479 üzenetére
Szia Fire,
Szimpatikus a megoldásod, ki fogom próbálni.
Le tudom ezt tölteni valahonnan?
Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
-
KaliJoe
tag
válasz Fferi50 #53476 üzenetére
Szia Fferi50,
Ha annyit se tudnak megtenni, hogy beírják a 36-ot, akkor a kedves felhasználók kap... khmmm... szóval, akkor majd kiírom nekik, hogy milyen formában vihetik be a számokat.
A többi kérdésedet nem igazán értem. Persze, hogy a különböző MO-i és külföldi számok, ahogy azt Mutt és Fire is értették különböző formátumúak (többnyire). Amint megvan, hogy éppen melyik számot formázzuk, az annak megfelelő formátumot kell alkalmazni.
Ha ez nem válasz a kérdésedre, akkor bocsáss meg, de nem értem a kérdést. Meg tudnád fogalmazni másképp?Tisztelettel
Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
-
Mutt
senior tag
válasz Fire/SOUL/CD #53479 üzenetére
Szia,
Esetleg LET nélkül:
=N("Nemzetközi DE")+(HOSSZ(A1)=12)*(BAL(A1;2)="49")Itt az elején egy kommentet helyeztünk el, hogy a szabály mit akar érvényesíteni.
A képlet második fele pedig csinálja az ellenőrzést hossz és kezdő karakterek alapján.üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Troy.
addikt
Sziasztok,
Full egyszerű kérdés de nem értem miért nem működik:
A1-es cella értéke mondjuk 1,35
Ha függvénynél a logikai vizsgálatnál beírom hogy 0,9<=A1<=1,4 (tehát ebben a tartományban nézze,) akkor miért ad ki fals adatot?.
-
Mutt
senior tag
Ha olyan formátumban adod meg, ahogy fent akkor az alábbi történik.
Balról jobbra haladva próbálja meg értelmezni a képletet.
1. Előbb a 0,9 <= A1 fut le, eredménye IGAZ.
2. Ezt az eredményt viszi tovább, vagyis IGAZ <= 1,4 , amire HAMIS az eredmény.Megoldás ÉS vagy szorzás használata.
ÉS(0,9<=A1;A1<=1,4) vagy (0,9<=A1)*(A1<=1,4)[ Szerkesztve ]
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
félisten
Most nem tudom kipróbálni(majd ha hazaérek), de szerintem ez nem működik...
Az N fx (magyarban talán S fx, ami nem is működik már talán) az szöveges változó esetén 0-t (nullát) ad vissza, ezért ez a képlet egy 491231234567 telószámot lehet, hogy számmá fogja konvertálni... Ha hazaérek kipróbálom, de ha időt engedi Te is nézz rá.[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Mutt
senior tag
válasz Fire/SOUL/CD #53492 üzenetére
Szia,
Igazad van, magyarban S az N függvény.
Mivel feltételes formázás képleteként fogjuk használni, így az eredeti cella értékét nem változtatja, az eredeti kérdezőnek pedig segíthet eligazodni a többszáz feltételes formázás között ha használja.Azonban az sem lenne gond, ha a szöveges cellában lévő értéket számmá alakítja a nullával való hozzáadás, mert az egyedi számformátumok csak számokon műkődnek, szövegként tárolt számokra nincsenek hatással.
Pár formátumot felvittem:
üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Mutt
senior tag
Szia,
HA(feltétel;1;2) kell akkor neked. A feltétel lehet a korábban megadott ÉS függvény.
Ha az is jó, hogy az igaz 1 és a hamis 0, akkor tegyél két minuszjelet a használt képlet elé.
Amivel adós maradtam, hogy miért ad HAMIS eredményt az "IGAZ <= 1,4", ha alapból az igaz értéke 1 és 1 kisebb mint 1,4?
a) A HAMI/IGAZ egy logikai adattípus, az 1,4 pedig egy szám típus.
b) Eltérő adattípusokat összehasonlítani nem lehet, ezért HAMIS eredményt ad az Excel.Azonban az Excel próbál meg segíteni és amikor műveleteket (szorzás, összeadás stb.) végzünk eltérő adattípusokon akkor megpróbálja őket egységes típussá konvertálni (coerce). Az "IGAZ+0" ezért 1-et fog visszadni.
üdv
[ Szerkesztve ]
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Mutt
senior tag
válasz Peterhappy #53493 üzenetére
Remek. Féltem, hogy az én mintám egy nagyon egyszerűsített változat és nem biztos hogy egyben lehet átültetni a te példádra, de akkor sikerült.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
félisten
Jól emlékeztem, Nálam nem működik az S függvény.
O2021 x64 Version 2410 (Build 18129.20116)1. létezik, engedi beszúrni, de aztán enter után ez van.
2. az 1. pont miatt feltételes formázás képletében sem használható
3. =N-t használva, érdekes módon elfogadja, de így meg a képlet nem csinál semmit
4. O2024-t is felpakoltam, virtuális gép alá, ugyanez a szitu
5. Na ez meg aztán mindennek a teteje, ugyanis az O365 "buta" web-s változatában is ugyanez van. beszúrható, de hibás | feltételes formázásnál | szintén zenészSzóval erre most csak ezt tudom mondani!
UI: S függvény nélkül azért elvagyok, de azért -pusztán kíváncsiságból- érdekelne, hogy most mégis mi a tosz van...
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz KaliJoe #53486 üzenetére
Hali!
Holnap reggel 8-ig él a megosztás, utána megszűnik: phonenumbers_with_LET_by_Fire.xlsx
Korábban írtam, hogy országkód és hossz párossal lehet operálni, de ez nem mindig elég. Ilyenkor a szabályok végrehajtási sorrendjét lehet segítségül hívni ill. ez esetben ha a szabály igaz, akkor nem kell a többi szabályt futtatni (Leállítás, ha igaz minden szabály esetén be van jelölve).
Telószámoknál is kellett a szabályok sorrendjére figyelni, mert pusztán az országkód és hossz alapján nem lehetne megkülönböztetni a budapesti-, zöld-, kék-, és vidéki telószámokat, hisz mindegyik 36-l kezdődik és 10 karakter hosszú.
Ezért elsőre a 361-l kezdődőre vizsgáljuk(Budapest), ha nem igaz, következő szabály, 3640-l kezdődre vizsgáljuk(Zöld), ha nem igaz, következő szabály, 3680-l kezdődőre vizsgáljuk(Kék), ha nem igaz, akkor már csak Vidéki lehet, de akkor is megvizsgáljuk, hogy 36-l kezdődjön és 10 karakter hosszú legyen.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
Új hozzászólás Aktív témák
- Öregszem
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- eBay-es kütyük kis pénzért
- Ezek a OnePlus 12 és 12R európai árai
- Vezeték nélküli fejhallgatók
- Milyen RAM-ot vegyek?
- Milyen alaplapot vegyek?
- Milyen SSD-t vegyek?
- Milyen monitort vegyek?
- 180 Hz-es VA panellel jön az MSI 34 hüvelykes kijelzője
- További aktív témák...
Állásajánlatok
Cég: HC Pointer Kft.
Város: Pécs
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest