Hirdetés
- GoodSpeed: Bye PET Palack, hello SodaStream
- Geri Bátyó: Agglegénykonyha 2 – Főzés: szabályok, vagy szabadság?
- Geri Bátyó: Agglegénykonyha 3 – Paradicsomos káposzta (amit amúgy utálok)
- Elektromos rásegítésű kerékpárok
- Luck Dragon: Asszociációs játék. :)
- Rap, Hip-hop 90'
- sziku69: Szólánc.
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sziku69: Fűzzük össze a szavakat :)
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
-
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
-
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.
-
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...
-
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.
-
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
-
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
-
-
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á. -
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) -
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
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
-
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
-
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?
-
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.
-
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
-
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
-
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. -
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! -
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))
-
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).
-
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. -
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
-
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
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.
-
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
-
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) -
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
-
-
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. -
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 is -
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
-
-
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.
-
-
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). -
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.
-
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.
-
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!
-
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
-
Mutt
senior tag
válasz
eszgé100 #53449 üzenetére
Szia,
Tudnál egy mintát mutatni, hogy miből mit kéne varázsolni?
A FILTER vagy AGGREGATE függvénnyel tudunk azonos találatok közül szelektálni, de kevés a fenti infó.
Pl. ez a lapon lévő utolsó sorból ad vissza eredményt a feltételek szerint:
=LET(r,FILTER([dateTime],([SerialNumber]=[@SerialNumber])*ISNUMBER(SEARCH([boltID],"PROGRAMNAME"))),INDEX(r,COUNT(r)))
-
eszgé100
őstag
Sziasztok!
Egy táblázatban szeretném megtalálni adott Serial number alapján adott program első és utolsó lépés timestamp-jét:
=MINIFS(AllResults[dateTime],AllResults[SerialNumber],[@[Serialnumber]],AllResults[boltID],"*PROGRAMNAME*")
=MAXIFS(AllResults[dateTime],AllResults[SerialNumber],[@[Serialnumber]],AllResults[boltID],"*PROGRAMNAME*")
A fenti formulákkal sikerül, de szeretném tovább bontani napokra, mert a legtöbb esetben a egy-egy programot nem fejezünk be egy (vagy rosszabb esetben több) munkanap alatt sem.
van ötletetek, hogy mivel kellene kiegészítenem a keresést?
-
föccer
nagyúr
válasz
Fferi50 #53446 üzenetére
Ez a tábla alpvetően UI. Kézzel pötyöghetik be, illetve javíthatják a beírt árakat. Településre és anyag kódra.
Ez egy nagyobb számolótáblának az egyik bemeneti adaata lesz. A számolótábla alapvetően költség alapú elemzést fog végezni.
Ha frissítés történik (havi riport generálás során), akkor változhat az üzemek és az alapanyagok sorrendje, darabszáma.
Ha frissítés van, akkor gombnyomásra újra beemelem a frissített üzemek és alapanyagok listáját. Viszont hogy ne kelljen minden adatot újra gépelni az ártáblán, ezért a frissítés gomb megnyomása előtt lementem az egésznek az adattartalmát és a frissítés utána újra feltöltöm a meglévő adatokkal. Viszont mivel elcsűszhatnak az oszlopok és sorok, ezért nem lehet nyersen visszarakni. De ez továbbra is UI, ezért nem maradhatnak a képletek sem.
Hmm, most hogy végig gondoltam jött az ötlet, hogy 1x megcsinálom az egész táblázatra a képleetezést (ez sima liba, újgyakorlat) és az egészről csinálok egy árnyákmásolatot (a képletekről) és a frissítés után ezt húzom be a formula2-be és kap egy recalculate-ot, majd visszaírom bele a value-t és kész is.
Köszönöm, asszem ez így jó lesz.
Most már csak az a kérdés, hogy sebességre mit fog hozni. Minden esetre kikapcsolom az automata újraszámolást
Köszi
-
Fferi50
Topikgazda
válasz
föccer #53445 üzenetére
Szia!
"A mentett adattáblából vissza kellene keresnem, azokat az adatokat, amik megvoltak az előző táblázatban."
Ezek az adatok maradnak az új táblában ezek szerint? És képlettel nem ugyanúgy képződnének meg?
A megfelelő címzéssel kialakított képlet (ami húzható jobbra és lefelé) egyetlen utasítással beírható a tartományba!
Pl. Range("A1:XX2000").Formula (vagy Formula2) =Képlet
Üdv. -
föccer
nagyúr
válasz
Fferi50 #53442 üzenetére
Egybefüggő tartomány, de változhat a mérete.
Felső sarka a B4-ből indul. A felette lévő gomb menti le az aktuális adatokat, fejléccel, sorazonosítókkal együtt, majd törli az egészt és másolja fel az előre legyűjtött listákat mind a fejlécbe, mind az alapanyag kódokat.
Viszont durván 40x200-as a tábla, és az adatok nem minden esetben változnak (csak a fejléc és a sorazonosítók. A mentett adattáblából vissza kellene keresnem, azokat az adatokat, amik megvoltak az előző táblázatban. (ugye az oszlopok, sorok elcsúszhatnak, ha új anyagok vagy üzemek kerülnek be az alaptáblákba.
Tisztán makróval is ki lehetne keresni, nem szórakozni a képlezéssel, de azt csak nem túl hatákonyan tudom megoldani.
-
Mutt
senior tag
válasz
ReSeTer #53438 üzenetére
Szia,
32-bites Officet telepítsetek. Nem fogod hátrányát észrevenni, de ha nagyon kell akkor van Large Address Aware patch ami tud segíteni hogy a 32-bites programok 2GB-nál több memóriát lássanak/használjanak 64-bites környezetben.
Ha szükséges a jelszavas kód megtekintése, akkor van rá megoldás.
Excel off the grid megmutatja őket, van kész letölthető fájlja is ami segít neked.üdv
-
föccer
nagyúr
No, ez sem segített. Végül úgy oldottam meg, hogy a segéd munkalapora felraktam a képletet és akkor ha onnan másolom át a cél cella formula2 értékébe, akkor más helyesen megjelenik. Viszont végül leesett a tantusz, hogy baromság, mert egy egész tartományba kellene ezt bemásolnlni, és akkor nem viszi magával helyesen a cella hivatkozásokat.
Vagy makróból keresni az összetartozó párokat.
üdv, FG
-
föccer
nagyúr
Sziasztok!
Van egy UI-n, ahol adatbevitel történik. A fejléc és sor adatok változni tudnak az egyes elemzésnél, viszont elég nagy táblázatról van szó. Ezért azt találtam ki, hogy az adatbeviteli táblázatot csak külön kérésre frissítem. A frissítés elején lementem az egész tartomány értékeit, és a frissítés után újra kikerestetem egy index(hol.van(),hol.van()) függvénnyel a korábban bevitt adatokat, vissza illesztve az eredeti sor/oszlophoz, ahová tartoznak, így ha a fej és sor azonosítók változnak, szépen visszatöltődik minden a helyére.
Viszont ez ugye UI, ezért a frissítés után a kereső képletet vissza kell írnom az egész táblázatba és ennek az értékét visszailleszteni az UI-re, hogy a felhazsnálók ne lássák, hogy mi történik.
A formula beillesztésénél viszont hibát dob.
Ha kiveszem az = jelet a let elől, akkor megy, de akkor meg csak szövegként illeszti be a cellába, ami nyilván nem jó.
ThisWorkbook.Sheets("alapanyag_arak").Range("K1").Formula = "=LET(a,IFERROR(INDEX(alapanyag_ar_mentes!$C$5:$AX$173,MATCH(alapanyag_arak!$B5,alapanyag_ar_mentes!$B$5:$B$173,0);MATCH(alapanyag_arak!D$4,alapanyag_ar_mentes!$C$4:$AX$4,0)),0);IF(a=0,"",a))"
Mint nem veszek észre?
Köszi!
fg -
ReSeTer
senior tag
válasz
Fire/SOUL/CD #53437 üzenetére
Köszönöm a próbálkozást, ez van sajnos, marad így akkor.
-
válasz
ReSeTer #53436 üzenetére
Ha visszarakom a DAO-t, akkor pedig az eredeti problémához jutok vissza.
Igen, mert ez nem csinál semmit (32 bites, nem műxik)
Az MSODAO megoldotta a korábbi hibát, hisz előtte komplett hiányzott egy Class (osztály), a nem működő 32 bites DAO miatt, utána meg nem volt ott gond.Kipróbáltam, debuggoltam: MSOADO nélkül hiba | MSOADO-val hibátlan.
Te is úgy debuggolod a kódot? Biztos, hogy azon a soron hal be?
Ettől függetlenül veszett ügy, mert ha még meg is lehet oldani a dolgot, akkor sem tudod módosítani a makrót (ahogy korábban írtad)
UI: Nem tudom, hogy ez mennyire járható út számodra, de ha fontos, hogy ez a táblázat, ezzel a makróval működjön, akkor talán egy virtuális gépben kellene gondolkodni, ami alá felpakolni egy 32 bites Office-t...
-
ReSeTer
senior tag
válasz
Fire/SOUL/CD #53434 üzenetére
Ha kiveszem a DAO-t, akkor
A következő sornál: Dim dbs As Database, rec As Recordset
Ha visszarakom a DAO-t, akkor pedig az eredeti problémához jutok vissza. -
MrTwister
őstag
válasz
Fire/SOUL/CD #53432 üzenetére
Sajnos nincs más segítségem. Köszi, holnap kipróbálom a suliban.
-
válasz
ReSeTer #53433 üzenetére
Igen, sajnos itt az a helyzet, hogy 64 bites DAO már nincs. Azért másoltad át a DAO360.DLL-t, mert egyébként nem is lehetett volna hozzáadni a referenciákhoz. Sajnos az a DAO fájl 32 bites...
Nem tudom pontosan mihez kell/mit csinál a makró, csak arra gondolok, hogy valami régebbi adatbázis (access, paradox stb stb) áll a háttérben. Ha így van, akkor egy dolgot még meg lehet próbálni, mivel a DAO-t leváltotta az ACE és ez létezik x64-ben, talán lekezeli a dolgot, amit a makró megkíván.
A régi DAO 3.6-t távolítsd el a referenciából és ezt add hozzá. Gépet indítsd újra (nem elég csak az Excel-t) és próba. -
ReSeTer
senior tag
válasz
Fire/SOUL/CD #53431 üzenetére
Windows 10, az Office 365 excel 64 bites, gondolom a többi része is. Én már mindent pipálgattam, a referenciáknál, de egyelőre nem segített.
Most nem vagyok annál a gépnél, de ha jól emlékszem, a 32 bites program files-ban megtaláltam azt a .dll-t ahova mutatott, átmásoltam próbaképpen a 64 bites-be, és utána jutottam el a fenti hibához...ezelőtt még hamarabb állt meg az egész.
Ez a makró elég régi, több mint 10 éves. Jelszó védi, tehát belenyúlni nem lehet a forráskódba. -
válasz
MrTwister #53429 üzenetére
Sulinak nincs valami IT-se vagy Admin-ja? Ezzel Őt kellene megkeresni...
Ettől függetlenül próbáld ezt. Az alábbi "kódot" másold bele (copy/paste-l) egy új/üres szöveges fájlba és mentsd el reg kiterjesztéssel (pl. ubul.reg) és futtasd, majd gép restart és próba.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Protect\Providers\df9d8cd0-1501-11d1-8c7a-00c04fc297eb]
"ProtectionPolicy"=dword:00000001Ha nem hoz változást, akkor meg töröld a registry bejegyzést ezzel (eljárás ugyanaz, mint előbb)
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Protect\Providers\df9d8cd0-1501-11d1-8c7a-00c04fc297eb]
"ProtectionPolicy"=- -
-
ReSeTer
senior tag
Helló! Nem tudom, hogy jó helyen kérdezem-e, igazítsatok légyszíves útba, ha nem jó helyen.
Van egy makró, amely eddig jól működött. Nem tudjuk mióta, de most nem fut le az egyik bővítmény. Semmit nem változtattunk tudtommal, kódba nem írtunk bele.
A kód ahol megáll:
Set wrkJet = CreateWorkspace("NewJetWorkspace", "admin", "", dbUseJet)
Referenciák:
Mit lehet a probléma?
-
MrTwister
őstag
Ezt a hibát kapom iskolai gépen ha importálni akarok az Excelben adatokat txt fájlból:
Microsoft Office PP 2019+Windows 10 Pro 22H2
A gépek tartományban vannak Win Server 2003 alatt.
Rákerestem a hibára, de nem értem mi a megoldás... -
Emod
kezdő
válasz
animatrix11 #53423 üzenetére
Szia!
Oszlop kijelölése
Keresés és csere (ctrl+h)
Kereshez: *xyz*
Csere erre: xyz
Összes cseréje -
válasz
animatrix11 #53425 üzenetére
-
Delila_1
veterán
válasz
animatrix11 #53423 üzenetére
Kijelölöd az oszlopot. A keresésnél beállítod, hogy tartalmazza a keresett szöveget.
A szűrt listában kijelölöd a látható cellákat, majd beírod a szöveget (xyz), és Ctrl+Enterrel viszed be. Ez az összes kijelölt cellában csak a keresett szöveget hagyja meg. -
animatrix11
őstag
Sziasztok
Létezik olyan, hogy egy sok celléból álló oszlopból, rekeresek egy szövegre, de az adott szövegen kívül más is van a cellában, minden mást törljön ki csak az adott szöveget tartsa meg?
Tehát cella pl "42342 xyz 45863" rákeresek miben van xyz és csak azt kell, mást töröljön vagy csak az adott szöveget másolja ki nem tudom mennyire érthetőKöszi
-
Mela Kehes
addikt
válasz
szivacs1987 #53421 üzenetére
Köszönöm sokat segítettél.
-
szivacs1987
aktív tag
válasz
Mela Kehes #53420 üzenetére
-
Mela Kehes
addikt
Üdv!
Ha diagramot készítek akkor lehet nyilat tenni a tengelyek végére?
-
repvez
addikt
válasz
Delila_1 #53415 üzenetére
háta lényeg, hogy lenne egy olyan sor amiben különbözö értékeket lehet beirni és ahogy irod a bevitel után egy gombbal vagy valamivel elküldeni az értékeket a megfelelő lapra.
DE már az is jo , ha van egy ilyen dedikált sor és a bevitel végén beirja az lista utolső sorába.
Mert mst már van egy listám ,de több 100 sorbol áll és minden alkalommal amikor uj bejegyzést csinálok le kell görgetnem az aljára, hogy beirja.
A lényeg, hogy lenne egy név, dátum, darabszám,ár/db ár,összérték, eladás ár/db,összbevétel .
PL: alma, 2024.11.03,5db,140ft,700ft
körte,2024.10.11,-,-,-,2db,70ft,140ft
és azt szeretném, hogy az egyező nevu tételekhez tartzó adatok egy lapra kerüljenek.az alma az alma lapra a körte a körtéhez.
mert a sumif képlettel már müködik a szétválasztás, de csak ahogy irtam, hogy egy ömlesztett listábol aminél a bevitel már kezd macerás lenni.
És még az lenne egy jo dolog ha havonta amikor a dátum serint vége a honapnak akkor automatikusan csinálna egy összesitést és beirná egy cellába -
Delila_1
veterán
válasz
repvez #53414 üzenetére
EGY cellába bevitt adatot kell egy megfelelő lap megfelelő cellájába másolni a bevitt érték szerint? Ennél SOKKAL konkrétabban kellene leírnod a feladatot.
Makróval meg lehet oldani, de szerintem nem a bevitel végéhez kellene rögzíteni szortírozást, hanem pl. egy gombhoz, mert téves adat megadása esetén keresgélhetsz a lapok és cellák között a módosítás, vagy törlés miatt. -
repvez
addikt
az hogy kéne megoldani, hogy egy munkalapon lenne egy fix adatbeviteli mező és amit oda beirok azt szétválogatná a megfelelo munkalap megfelelő cellájába az értékeket maj miután megtörtént az adatbeviteli cellákbol eltunne az érték, hogy ujat lehessen beirni.
Excel sheets be is ha mukodne a dolog nem lenne baj.
mert igy ha van egy munkalapom ahova beviszem az adatokat egy idő után majd kezelhetelen lesz és sokat kell lefelé görgetni mire megtalálom az uj ures helyet az uj adat bevitelhez. -
-
#77257183
törölt tag
válasz
föccer #53411 üzenetére
Köszi a részletes leírást ! Sikerült megcsinálnom.
Tehát ha jól értem, akkor a 100 lépés utáni végeredményt kapom meg.
Az A oszlopot veszem lépcsőfoknak akkor Pl. : 3. lépcsőfokon a fibonacci szám az 1, vagy 6. lépcsőfokon a fibonacci szám 5. Bár volt, hogy 1 és nullára jött ki, amit szerettem volna elkerülni, de mindegy.
Már ebből is tanultam. -
föccer
nagyúr
válasz
#77257183 #53409 üzenetére
Rakd össze úgy a munka1 munkalapot, ahogy a képen van. A oszlopban sorszám, Boszlopban a sorozat elemei. F2-be a lépések száma, F3 F4 eredményt ad. Gomb legyen kirakva fejlesztő eszköz menöből. Ha kiraktad, akkor jobb klikk rajta, makró hozzárendelése, ott rányomsz az újra gombra. Nyílik a VBA editor. A megjeleö üres részen megjeleik egy Sub Gomb1_Click() End Sub sorok. E közé kell berakni az általam írt kódot. (vigyázz az én kódomban is benne van a Sub ---- End Sub sorok, ezt nem kell bemásolni.
Ha minden okás, akkor visszalépsz a munkafözetre és ha megnyomod a gombot, akkor már számol is.
Bármekkora lépésszámot beírhat, ami belefér az integerbe. A kód nem számolja ki a fibonachi számot, csak kiveszi a B oszlopból a megfelelő elemet.
üdv, föccer
-
Mutt
senior tag
válasz
modflow #53394 üzenetére
Szia,
Itt egy VBA kód amivel egy "Summary" elnevezésű lapra ki tudod íratni, hogy a munkafüzet lapjain milyen képletek találhatóak. Ha lefuttatod mindkét fájlon, akkor össze tudod hasonlítani a listákat.
Sub ListCellswithFormulas()
Dim ws As Worksheet
Dim rngFormulas As Range
Dim wsReport As Worksheet
Dim a As Long, c As Long
Dim out As Long
Set wsReport = ThisWorkbook.Worksheets("Summary")
out = 2
With wsReport
.Range("A1") = "Lap"
.Range("B1") = "Cella"
.Range("C1") = "Képlet"
For Each ws In ThisWorkbook.Worksheets
On Error Resume Next
Set rngFormulas = ws.Cells.SpecialCells(xlCellTypeFormulas, 23)
On Error GoTo 0
If Not rngFormulas Is Nothing Then
For a = 1 To rngFormulas.Areas.Count
For c = 1 To rngFormulas.Areas(a).Count
.Cells(out, "A") = ws.Name
.Cells(out, "B") = rngFormulas.Areas(a).Item(c).Address
.Cells(out, "C") = "'" & rngFormulas.Areas(a).Item(c).Formula2
out = out + 1
Next c
Next a
Set rngFormulas = Nothing
End If
Next ws
End With
End Sub
üdv
-
Mutt
senior tag
válasz
szürke #53393 üzenetére
Szia,
Power Query elsődleges célja adatok (akár külső forrásból, mint pl. weblap vagy egy adatbazis) átalakítása és feldolgozása. Excel 2016-tól az Excel része, Excel 2010/2013-hoz külön tölthető le.
Érdemes Youtube-on videokat nézni róla, ha még nem ismered.
Mike Girvin (excelisfun) csatornáját tudom javasolni.Linkeltem korábban:
52669
52723üdv
-
Mutt
senior tag
válasz
Fire/SOUL/CD #53392 üzenetére
Zéró válasz.
A frissítési jegyzékben sem látok ilyet. -
Mutt
senior tag
válasz
#77257183 #53400 üzenetére
Szia,
Itt az én makrós változatom.
Option Explicit
Dim fibonacci(1000) As Variant 'megtalált fibonacci számok listája
Sub Valaszt()
Dim c As Long
Dim r As Double
Dim pozicio As Long
'Rnd() függvénynek kell, különben nem lesz igazán véletlenszám
Randomize
'1-es poziciótól indulunk
pozicio = 1
With ActiveSheet
'fejléc a füzetre
.Range("A1") = "Lépés"
.Range("B1") = "Pozíció"
.Range("C1") = "Véletlen szám"
.Range("D1") = "Fibonacci szám"
'100 lépéses ciklus
For c = 1 To 100
r = Rnd()
'fel-le lépkedünk a listában
If r < 0.5 Then
pozicio = pozicio + 1
Else
If pozicio > 2 Then
pozicio = pozicio - 2
Else
pozicio = 1
End If
End If
'kiírtajuk a kapott eredeményeket
.Cells(c + 1, "A") = c
.Cells(c + 1, "B") = pozicio
.Cells(c + 1, "C") = r
.Cells(c + 1, "D") = FibonacciNum(pozicio)
Next c
End With
End Sub
'rekurzív fibonacci szám generátor
Function FibonacciNum(n As Long)
If Not IsEmpty(fibonacci(n)) Then
FibonacciNum = fibonacci(n)
Exit Function
End If
If n = 0 Then
FibonacciNum = 0
fibonacci(0) = 0
Exit Function
End If
If n = 1 Then
FibonacciNum = 1
fibonacci(1) = 1
Exit Function
End If
FibonacciNum = FibonacciNum(n - 1) + FibonacciNum(n - 2)
fibonacci(n) = FibonacciNum
End Function
üdv
-
föccer
nagyúr
válasz
föccer #53402 üzenetére
dehülye vagyok, a vissza lépés nincs benne
Sub Gomb1_Click()
Dim Fib_sorszam As Integer
Dim Lepes_szam As Integer
Dim i As Integer
Fib_sorszam = 1
Lepes_szam = Sheets("Munka1").Range("F2").Value
For i = 1 To Lepes_szam
If Application.RandBetween(0, 1) = 0 Then
Fib_sorszam = Fib_sorszam + 1
Else
Fib_sorszam = Fib_sorszam - 2
If Fib_sorszam < 1 Then
Fib_sorszam = 1
End If
End If
Next
Sheets("Munka1").Range("F3").Value = Sheets("Munka1").Cells(Fib_sorszam, 2).Value
Sheets("Munka1").Range("F4").Value = Fib_sorszam
End Sub
-
föccer
nagyúr
válasz
#77257183 #53400 üzenetére
Makró beszúrása, ha a munkalapon vagy, akkor alt+F11.
Gombot a fejlesztőeszközök menöből lehet kirakni.Munka1 munkafüzeten, ez a makró:
Sub Gomb1_Click()
Dim Fib_sorszam As Integer
Dim Lepes_szam As Integer
Dim i As Integer
Fib_sorszam = 1
Lepes_szam = Sheets("Munka1").Range("F2").Value
For i = 1 To Lepes_szam
If Application.RandBetween(0, 1) = 0 Then
Fib_sorszam = Fib_sorszam + 1
End If
Next
Sheets("Munka1").Range("F3").Value = Sheets("Munka1").Cells(Fib_sorszam, 2).Value
Sheets("Munka1").Range("F4").Value = Fib_sorszam
End Sub
ps: egyébként nagyon érzékeny az eredmény arra, hogy az első 1-2-3 lépésben mennyi pozitív lépés van.
Új hozzászólás Aktív témák
- One mobilszolgáltatások
- Hivatalos a One UI 8 frissítés közzététele
- A 3D V-Cache és a rengeteg memória lehet az új PlayStation fő fejlesztési iránya
- Épített vízhűtés (nem kompakt) topic
- TCL LCD és LED TV-k
- Gyúrósok ide!
- Házimozi belépő szinten
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Proxmox VE
- Windows 10
- További aktív témák...
- Telefon felvásárlás!! Huawei P20 Lite/Huawei P20/Huawei P30 Lite/Huawei P30/Huawei P30 Pro
- Lenovo 14 Ideapad 3 FHD LED Matt i3-1115G4 4.1Ghz 8GB 256GB SSD Intel UHD Graphics Win11 Garancia
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- GYÖNYÖRŰ iPhone 11 128GB Red -1 ÉV GARANCIA - Kártyafüggetlen, MS3127
- LG 39GS95UE - 39" Ívelt OLED / QHD 2K / 240Hz & 0.03ms / 1300 Nits / NVIDIA G-Sync / AMD FreeSync
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest