- Milyen okostelefont vegyek?
- VoLTE/VoWiFi
- Xiaomi 15T Pro - a téma nincs lezárva
- One mobilszolgáltatások
- Google Pixel 10 Pro XL – tíz kicsi Pixel
- EarFun Air Pro 4+ – érdemi plusz
- Megjött Magyarországra a legnagyobb akkuval szerelt Redmi
- Yettel topik
- iPhone topik
- Android alkalmazások - szoftver kibeszélő topik
-
Mobilarena
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
-
-
Fehér Mancs
tag
válasz
pitman
#11194
üzenetére
Makró nélkül szerintem nem lehet megoldani, legpraktikusabb megoldás a reguláris kifejezések használata:
Ezt először aktiválni kell a VBA-ban (Microsoft VBScript Regular Expressions 5.5 -> aktiválás leírása pl.: http://lispy.wordpress.com/2008/10/17/using-regex-functions-in-excel/ )
Ezután pedig egyszerű makró közbeiktatásával lehet használni az excelben is függvényként:
pl.:
makró:
Dim reg As New RegExp
Public Function RegExpLike(Source As Range, Pattern As String, Optional IgnoreCase As Boolean = True, Optional MultiLine As Boolean = True) As Boolean
reg.IgnoreCase = IgnoreCase
reg.MultiLine = MultiLine
reg.Pattern = Pattern
RegExpLike = reg.Test(Source.Value)
End FunctionAz excel függvény, ami ellenőrzi, hogy az adott cellában alfanumerikus karakter van (ékezetes betűkkel megspékelve):
=RegExpLike(A1;"^[A-Z0-9ÁÉÍÓÖŐÚÜŰ]*$")Szinte bármilyen minta keresésére, cseréjére, számolgatására fel lehet használni, neten jó leírások vannak erről.
-
Fehér Mancs
tag
válasz
gyros3
#11190
üzenetére
Ha az adott oszlop összes mezőjében van szám (nem formázási kérdés, hanem legyen kitöltve), akkor alapból sum-ot dob fel, amúgy pedig COUNT-ot a pivot.
Sajnos ha már egyszer úgy olvasta be, hogy adott oszlopban van egyéb ( pl.: karakteres ) érték is, akkor azt mindig úgy fogja kezelni. Ha ezen segíteni akarsz, akkor egy teljesen új pivotot kell készíteni az adathalmazra.
( Ui.: a pivoton belüli group-olás is ugyanez a logika alapján működik, ha dátumot vagy számot akarunk csoportosítani, ott is minden értéknél számnak/dátumnak kell lennie )
-
Fehér Mancs
tag
válasz
Retekegér
#7513
üzenetére
Ha a keresett érték van megadva, nem az oszlop/sorszám, akkor a HOL.VAN / MATCH függvénnyel meg lehet találni, hogy a táblázat melyik sorában/oszlopában van a keresett érték:
=INDEX(Sheet1!$B$2:$E$5;HOL.VAN("mar";Sheet1!$A$2:$A$5;0);HOL.VAN("a3";Sheet1!$B$1:$E$1;0))
, ahol Sheet1!$B$2 : $E$5 a táblázat, fejlécek nélkül, "mar" a keresett sor fejléce, Sheet1!$A$2 : $A$5 a sorok fejléce, "a3" a keresett oszlopfejléc és Sheet1!$B$1 : $E$1 az oszlopok fejléce.
Persze a "mar" és az "a3" helyett állhat cellahivatkozás is.
-
Fehér Mancs
tag
válasz
kenesei1982
#7418
üzenetére
Én ilyet úgy szoktam kreálni, hogy pl ha A1:A100-ig vannak az adatok, akkor a B1-be beírom, hogy "=A1", B2-be pedig, hogy "=B1&A2". Ha végighúzod, a B100-as cellába benne lesz a keresett eredmény.
-
Fehér Mancs
tag
válasz
qpakcovboy
#7397
üzenetére
Próbáld ezt:
=TNÉV(SZÖVEG(MA();"hhhh"))
-
Fehér Mancs
tag
válasz
neilszab
#6853
üzenetére
Egy alternatíva:
Az excelben be lehet állítani, hogy mit tekintsen default ezres elválasztónak és tizedesjelnek. Ha ezek mindenhol "," és "." , akkor nem fog automatikusan átformázni.
Ennek elérése:
Eszközök -> Beállítások -> Nyelvfüggő.Másik lehetőség, hogy a területi beállításokban próbálod meg átállítani az exportált fájlnak megfelelően.
-
Fehér Mancs
tag
válasz
DeFranco
#6819
üzenetére
Ok, tényleg.
Valószínűleg akkor az történt, hogy amikor beírtuk a 3 db-t, akkor az excel automatikusan felismerte, hogy egy számról és egy egységről van szó, így magától megformázta. Nálam a "3 db"-re ez nem működik, de pl. ha "3 Ft"-ot írok be, akkor szépen megcsinálja.
Amúgy tényleg látszik, hogy szám van az A1-ben, mivel formázás nélkül jobbra rendezi, ami pedig a számok sajátossága.
-
Fehér Mancs
tag
válasz
WildBoarTeam
#6722
üzenetére
szerk
-
Fehér Mancs
tag
válasz
Delila_1
#6667
üzenetére
Ez is jó, de a desktopra gondoltam első körben, viszont meg is találtam a megoldást.
(Ha valakit érdekel:
Option Explicit
Private Const SPIF_UPDATEINIFILE = &H1
Private Const SPI_SETDESKWALLPAPER = 20
Private Const SPIF_SENDWININICHANGE = &H2
' Enter the following Declare as one, single line:
Private Declare Function SystemParametersInfo Lib "User32" Alias "SystemParametersInfoA" (ByVal uAction As Integer, ByVal uparam As Integer, lpvParam As Any, ByVal fuWinIni As Integer) As Integer
Private Sub Command1_Click()
Dim filenm As String
Dim x As Long
filenm = "c:\winnt\Bgt.bmp"
' Enter the following two lines as one, single line:
x = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0&, filenm, SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)
End Sub -
Fehér Mancs
tag
Valaki tudja, hogy hogyan lehet a destop háttérképét excel makróval megváltoztatni? Jól jönne így április 1 előtt.

-
Fehér Mancs
tag
válasz
Fire/SOUL/CD
#6370
üzenetére
Megnéztem én is a kastélyokat, az én megoldásom:
-
Fehér Mancs
tag
egy függvényes megoldás:
=INDEX($A$1:$E$12;TRUNC((ROW(G1)-1)/5)+1;MOD((ROW(G1)-1);5)+1)
(A G1 cellába lehet írni, ha továbbhúzod, egy oszlopban kifejti neked a mátrixodat).
$A$1:$E$12 -> hivatkozott tábla
TRUNC((ROW(G1)-1)/5)+1 -> egészrész függvény, az aktuális sorszám 5-tel osztva, így 5 soronként vált sort a táblában
MOD((ROW(G1)-1);5)+1 -> maradékfüggvény, szintén 5-ös osztóval, így oszloponként mindig 1-gyel nő, egészen 5-ig, ezután visszamegy 1-re. -
Fehér Mancs
tag
=SUMPRODUCT(LARGE(A1:A100;ROW(A1:A10)))
, ahol A1 -> A100 -ig az adatok vannak, a ROW(A1:A10) pedig azt mondja meg, hogy a hányadik legnagyobbakat szummázza. Jelen esetben ez 1-10-ig, vagyis a top 10 legnagyobb összegeződik. Annyi, hogy amennyiben a 10. legnagyobb érték többször is szerepel, akkor azt többször veszi bele.
-
Fehér Mancs
tag
válasz
Fire/SOUL/CD
#5317
üzenetére
Nem szükséges kettészedni, az egyszerű <> is megteszi ugyanezt, bár elég furán néz így ki...
=SZUMHA(A1:A10;"<>";B1:B10)
-
Fehér Mancs
tag
A Ctrl-1 csak a formátumot változtatja meg (szövegről pl. számra), de a tárolt értéket nem konvertálja automatikusan számmá, ugyanúgy "123" marad benne. Persze, ha beleállunk és enter-t nyomunk, akkor már felismeri az excel. Persze Delila már lelőtte az egyik megoldást

Viszont alternatív megoldás mindig van, ezzel a képlettel egy másik oszlopban lehet számosítani az arra érdemes értékeket:
=HA(HIBA(B1*1);B1;B1*1) -
Fehér Mancs
tag
válasz
Psytróger
#5090
üzenetére
Egy alernatív megoldás, egy képlettel (B1-P1-ig vannak az adatok):
=SZORZATÖSSZEG(NAGY(B2:P2;{1;2;3;4;5;6;7;8;9}))/9
vagy ugyanez, csak a sorszámokat paraméterezve:
=SZORZATÖSSZEG(NAGY(B1:P1;SOR($A$1:$A$9)))/9Ha nincs 9 szám, akkor Delila megoldásához hasonlóan hibaüzenetet ad vissza, de ezt is le lehet kezelni, bár ez már a tömbképlet tömbképlete
(az üresek helyére 0-t tesz - Negatív számoknál problémát okozhat!!!)=SZORZATÖSSZEG(NAGY(HA(SZÁM(B2:P2);B2:P2;0);SOR($A$1:$A$9)))/9
a végén pedig ctrl+shift+enter
-
Fehér Mancs
tag
Na, hogy én is mondjak egy okosat

Pivot táblával/kimutatás varázslóval is egyszerűen le lehet ezt gyártani, persze a tábla bővítésénél ezt is folyamatosan utána kell húzni (mint bármely képletezésnél...) / vagy elég nagy táblát kell kijelölni az alapesetnek, hogy mindenképpen beleférjen)
A lényeg, hogy beteszed a dátumot a sorokba, összeget az értekekhez, a végén pedig jobb klikk a dátum mezőjére, csoportosítás/group menűpont, ott pedig ki kell jelölni a hónapot és kész is. Ha kimutatást is akarsz ebből, akkor csak rá kell állni a pivotra, és a Chart wizard kapásból megcsinálja neked.
-
Fehér Mancs
tag
válasz
Fire/SOUL/CD
#4975
üzenetére
Agreed.
-
Fehér Mancs
tag
válasz
Fire/SOUL/CD
#4955
üzenetére
Az excel az egész számokat nem óraként, hanem napként kezeli. Amit te írsz, az igazából 2 nap + 1:56:54mp.
Ha órába akarod megjeleniteni, akkor el kell osztani 24-gyel, és utána formázni:
=4589/2205/24 -> formázás óra:perc:mp-re -> végeredmény pedig 2:04:52 -
Fehér Mancs
tag
Megpróbálom megfejteni én is+beképletezni
A4:AH103-as táblát alakítom át A1 : C1134-essé.
A problémát ketté lehet bontani:
1: Meg kell találni az összes célhoz, hgoy melyik cella tartozik, ezt sorszámmal el lehet érni (0- 3399). Ez a sorszám: oszloponként 3-mal nő ((COLUMN(A1)-1)*3), soronként 1-gyel nő (ROW(A1)-1) és ezen felül 3 soronként 6-tal (INT((ROW(A1)-1)/3)*6), így a sroszám:=INT((ROW(A1)-1)/3)*6+(ROW(A1)-1)+(COLUMN(A1)-1)*3
(ha a A1 : C1134-be kirakod, akkor lehet is látni, hogy 0-3399-ig besorszámozza a cellákat).
2: ez alapján kikeresni az értéket a táblából:
=INDEX(Tabla;INT(Sorszám/34)+1;MOD(Sorszám;34)+1)
(34 soronként vált új sorra)
A végeredmény:
=INDEX(Tabla;INT((INT((ROW(A1)-1)/3)*6+(ROW(A1)-1)+(COLUMN(A1)-1)*3)/34)+1;MOD(INT((ROW(A1)-1)/3)*6+(ROW(A1)-1)+(COLUMN(A1)-1)*3;34)+1)
(A4:AH103-t el kell nevezni Tabla-nak)
Remélem azt oldottam meg, amit szerettél volna, nekem sem volt teljesen világos a kérés

-
Fehér Mancs
tag
válasz
[HUN]Tyson
#4918
üzenetére
Azt tudom, hogy meg lehet valósítani Outlookban is, de nem tudom, hogy hogyan
(Nálunk Lotus Notes-ból küldtünk ki generált leveleket csatolmányokkal). Többiek / Google biztos tud segíteni. -
Fehér Mancs
tag
válasz
[HUN]Tyson
#4902
üzenetére
E-mailt akarsz küldeni
? Makróval lehet automatikusan is generálni ilyet, nem csak a címeket összefűzni... -
Fehér Mancs
tag
válasz
VANESSZA1
#4897
üzenetére
Ha automatikusan szeretnéd nézni ezt, akkor a timer-rel is lehet operálni (Fire-től loptam
:Workbook_open-nél beindítjuk a folyamatos figyelést:
Private Sub Workbook_Open()
Call check_date
End SubMajd egy új modulba betesszük az ellenőrző-figyelmeztető kódot:
Sub check_date()
For Each a In Columns(1).Cells
If VarType(a) = vbDate Then
If a <= Now() Then
MsgBox ("Figyelmeztetés!")
Exit For
End If
End If
Next a
Application.OnTime Now + TimeSerial(0, 10, 0), "check_date", , True
End Sub(Ez most az 1 oszlopot nézi és 10 percenként ellenőriz, azt nézi, hogy az adott oszlopban szereplő dátumok mindegyike magasabb-e a mostaninál.)
-
Fehér Mancs
tag
A kód tökéletesen működik, csak a replace-elt konverzió magyar excelben hibára fut, azt ki kell irtani belőle (valószínűleg máshol meg az előző a jó)
Function SumNum(ByVal txt As String) As double
With CreateObject("VBScript.RegExp")
.Pattern = "\d+(,\d+)?"
.Global = True
For Each m In .execute(txt)
SumNum = SumNum + CDbl(m.Value)
Next
End With
'SumNum = Replace(CStr(SumNum), ".",",")
End Function -
Fehér Mancs
tag
-
-
Fehér Mancs
tag
-
Fehér Mancs
tag
Ha nincs a listában fejléc, akkor egy kicsit lehet ezen finomítani:
=HA(HIBÁS(FKERES(A1;$C$1:$D$10;2;0));OFSZET($C$1;HOL.VAN(A1;$C$1:$C$10;1);1);FKERES(A1;$C$2:$D$10;2;0))
(C1
10-ig vannak adatok)Amúgy rendezett a lista? Ha nem, akkor hibaüzenetet kaphatsz vissza.
Ha így sem megy, küldd át az excelt.
-
Fehér Mancs
tag
A $C$1 a fejlécet jelentené, a következő sorban kezdődne az adat. Ennek a sorához adjuk hozzá az ofszet második paraméterében azt a sorszámot, amit a hol.van függvénnyel találunk meg (a keresett értéknél nem nagyobb legnagyobb szám) +1-et, hogy az azt követő sorra álljunk rá.
Az FKERES-ben pontos értékre keresünk (utolsó paraméter 0 / HAMIS), a HOL.VAN esetén pedig intervallumra (ott az utolsó paraméter 1-es).
-
Fehér Mancs
tag
Az nem derült ki, hogy hova tegyük a köztes értékeket, de ez is megoldható képletekkel:
1. Ha van pontos találat, akkor FKERES-sel megkereshető.
2. ha nem, akkor meg kell keresni a következő nagyobb szám pozícióját (HOL.VAN)
3. majd OFSZET-tel rá lehet állni.Vagyis:
=HA(HIBÁS(FKERES(A1;$C$2:$D$10;2;0));OFSZET($C$1;HOL.VAN(A1;$C$2:$C$10;1)+1;1);FKERES(A1;$C$2:$D$10;2;0))
A1 a keresett érték,
$C$2:$D$10-ig pedig a lista -
Fehér Mancs
tag
Az FKERES függvény intervallum keresésre is alkalmas, az utolsó paramétere mondaná meg ezt (ha 1 vagy IGAZ, akkor lehet így használni). A függvényhez persze hozzá kell még adni 150-et.
pl.:
Tábla:
0 15
10 20
20 50fkeres(0;tábla;2;IGAZ) = 15
fkeres(3;tábla;2;IGAZ) = 15
fkeres(12;tábla;2;IGAZ) = 20
fkeres(2000;tábla;2;IGAZ) = 50és
fkeres(0;tábla;2;IGAZ)+150 = 165 ...
-
Fehér Mancs
tag
válasz
Delila_1
#4668
üzenetére
Lehet rá függvényt is írni:
Function ElsőNemÜres(Tartomany As Range, TermIrany As Boolean)
Dim i As Integer
For i = 1 To Tartomany.Cells.Count
If TermIrany Then
If Not (IsEmpty(Tartomany(i))) Then
ElsőNemÜres = Tartomany(i).Value
Exit Function
End If
Else
If Not (IsEmpty(Tartomany(Tartomany.Cells.Count - i + 1))) Then
ElsőNemÜres = Tartomany(Tartomany.Cells.Count - i + 1).Value
Exit Function
End If
End If
Next i
ElsőNemÜres = CVErr(xlErrNA)
End FunctionMűködése a kövektező: kijelölsz egy tartományt, és a TermIrany alapján megkeresi benne az első nem üres cellát, és azt adja vissza. Amennyiben változnak az értékek, ez frissül.
(TermIrany -> ha IGAZ/TRUE, akkor balról jobbra, majd fentről lefelé keres, ha HAMIS/FALSE, akkor jbbról balra majs lentről felfelé. Amennyiben nem talált semmit, akkor a #HIÁNYZIK! üzenetet adja).
-
Fehér Mancs
tag
Ha valami ciklust használsz, akkor bizonyos ciklusnál (minden 1000-dik esetben) be lehet iktatni a ActiveWorkbook.Save -et.
Másik lehetőség, ha bizonyos időközönként akasz menteni, a Timer használata (bár ehhez is folyton vissza kell térni -> cilus kell hozzá):
Start = Timer
SaveSecond= 60*60 ' óránkénti mentés
cilus kezdete
if Start > Timer+SaveSecond then
ActiveWorkbook.Save
Start = Timer
endif
cilus vége -
Fehér Mancs
tag
válasz
balage02
#4640
üzenetére
Tömbfüggvénnyel is meglehet adni, de egy kicsit bonyolult. Bár, legalább nem kell makró.
A lényeg, hogy az adott cellától (jelen esetben az A1) kell offszet-elni a tőle jobbra lévő első nem üres celláig:
=OFSZET(A1;0;MIN(HA(ÜRES(B1:$IV1);500;OSZLOP(B1:$IV1)))-OSZLOP(A1)) és tömbképlet, vagyis Ctrl+Shift+Enter-rel kell leokézni.
Ha nincs tőle jobbra kitöltött cella, akkor #HIV!-et ír ki.
-
Fehér Mancs
tag
Több megoldás is van, az egyik, angolosan:
=NOT(ISERROR(MATCH(A1;$E$1:$E$5;0)))
A1 a vizsgált cella, E1:E5 amiben meg kell keresnie. A lényeg, hogy ráfuttat egy keresést (magyarban azt hiszem, hogy hol.van függvény), majd megnézi, hogy megtalálta-e (ha nem, akkor hibát ír vissza, ezt az ISERROR/HIBÁS függvénnyel meg lehet fogni). Mivel, ha nincs megfelelő, akkor ad IGAZ értéket, a NOT/NEM függvénnyel megfordítjuk ennek az "előjelét".
A MATCH/HOL.VAN függvény helyett a VLOOKUP/FKERES is ugyanazt az eredményt adja ( =NOT(ISERROR(VLOOKUP(A1;$E$1:$E$5;1;0))) )
-
Fehér Mancs
tag
válasz
Panthera
#4540
üzenetére
Az Érvényesítés funkciót lehetne erre használni (Adat -> Érvényesítés menűpont/Data->Validation).
Rá kell állni a cellára, majd meghívni ezt a menűpontot. A listából ki kell választani pl. az egész számot, és utánna meg lehet adni feltételként, hogy legyen kisebb a hivatkozottnál. Itt is él az abszolút/relatív hivatkozás, ha másolni akarod (speciális másolás -> érvényesítések másolása), akkor érdekes lehet ez is.
-
Fehér Mancs
tag
Azt hittem, hogy ez már megoldódott... A lényeg, hogy amikor macro-val cserélsz, akkor az excel angol formátumú számokban gondolkodik, neki a pont a tizedesvessző és a vessző az ezres elválasztó, ilyen formáumra kell hozni a cserével a szöveget. Csere után, ha általános formátumú a cella, mindig megvizsgálja a progi, hogy számmá vissza lehet-e e formában írni.
Vagyis, ha a 1.800,12-ben kicseréled a pontot macroval, akkor 1800,12-t akar visszaírni, ami számára nem szám/vagy pedig, ami még rosszabb, ezres elválasztónak érzékeli a vesszőt. Ha ilyenkor a pontot pontra cseréljük (mintha nem is csinálnánk semmit), akkor az angol számformátum alapján felismeri, hogy mi a valódi ezres elválasztó és a pont, és azt írja vissza.
Amúgy adatok importjánál nem lehet ezt már lekezelni? Ha előtte beállítod az ezres elválasztót és a pont formátumot, az excel rögtön felismeri, hogy szám (options->International menűpont).
-
Fehér Mancs
tag
válasz
Gabcsika
#4442
üzenetére
Még egy észrevétel, ha macroval számoltatjuk ki ezt, akkor saját függvényt érdemes használni, mivel az nem módosítja az adataidat, változásnál újra is számol, másolható, stb.
Erre egy megoldás:
Function CountDistinct(Ertekek As range, Tartomany As range, Vizsg_ertek) As Variant
Dim Taroltak()
Dim i, j, Talalat
Dim VanMar As Boolean
Talalat = 0
For i = 1 To Ertekek.Rows.Count
If Ertekek(i) = Vizsg_ertek Then
If Talalat = 0 Then
ReDim Taroltak(1)
Taroltak(1) = Tartomany(i)
Talalat = 1
Else
VanMar = False
For j = 1 To Talalat
If Taroltak(j) = Tartomany(i) Then
VanMar = True
Exit For
End If
Next j
If Not (VanMar) Then
ReDim Preserve Taroltak(Talalat + 1)
Taroltak(Talalat + 1) = Tartomany(i)
Talalat = Talalat + 1
End If
End If
End If
Next i
CountDistinct = Talalat
End Function -
Fehér Mancs
tag
válasz
Gabcsika
#4442
üzenetére
Az excel 2007-es verziójában képlettel is ki lehet ezt számolni ezt:
=SZUM(HA(értékek=vizsg_érték;HA(tartomány<>"";1/DARABHATÖBB(értékek;vizsg_érték;tartomány;tartomány);0);0))
(Tömbképlet, vagyis shift+ctrl+enter-et kell használni)Az értékekben keressük meg a vizsg_értéket, és csak ezeket vesszük figyelembe a darabszámlálásnál (tartományban a különbözők kiszedése).
Ha nem lehet érteni, ne aggódj, én sem igazán értem, de működik

-
Fehér Mancs
tag
válasz
Fehér Mancs
#4383
üzenetére
Most látom, hogy az is működik, ha a pontot kicseréljük pontra

Sub Macro6()
Selection.Replace What:=".", Replacement:="."
End SubEzt add össze!

-
Fehér Mancs
tag
A probléma az, hogy a macro a számokat angolosan látja, vagyis tizedesvesszőként pont szerepel; ha azt kicseréled, akkor elvész a nagyságrend. (A visszaírásnál is így kell megadni).
Két megoldást látok:
- egyik, hogy az excelbe való betöltésnél kezeljük ezt le (Tools->Options->International menüpontban be kell állítani a konvertálás idejére a ","-ős ezresválasztót és "."-os tizedesvesszőt.- másik, hogy a macro csak a szöveges mezőket alakítja át, angolos lelkületűre (futtatás előtt ki kell választani az átalakítandó cellákat):
Sub Macro6()
Dim rngCell As Range
For Each rngCell In ActiveWindow.RangeSelection
If VarType(rngCell.Value) = vbString Then
rngCell.Replace What:=".", Replacement:=""
rngCell.Replace What:=",", Replacement:="."
End If
Next rngCell
End SubReméljük ez megoldja a problémát.
-
Fehér Mancs
tag
válasz
Gabcsika
#4318
üzenetére
Képlettel is ki lehet hámozni a zárójeles részt (A1-ben van az adott szöveg):
=MID(A1;FIND("(";A1);FIND(")";A1)-FIND("(";A1)+1)1. paraméter, az adott cella
2. paraméter megkeresi, hogy honnan kezdődik, vagyis a nyitó zárójel pozíciója
3. paraméter, hogy milyen hosszú részt kell kiemelni -> záró zárójel pozíciója minusz a nyitó zárójel pozija +1 -
Fehér Mancs
tag
A színes kérdést is lehet dinamizálni úgy, hogy a második paramétert opcionálissá tesszük, és ha nem adunk meg értéket, akkor az "értékes tartományban" keres. Az eredeti makró egy kicsit megspékelve:
Function CountCCC(Mintacella As Range, Optional Tartomany)
Dim rngCell As Range
If IsMissing(Tartomany) Then
Set Tartomany = ActiveSheet.UsedRange
End If
nColor = Mintacella.Interior.Color
nResult = 0
For Each rngCell In Tartomany
If rngCell.Interior.Color = nColor Then
nResult = nResult + 1
End If
Next rngCell
CountCCC = nResult
End FunctionA képletek újraszámoláról pedig úgy tudom, hogy akkor kalkulálódnak újra, ha bármelyik hivatkozott mező értéke változik (egyéb tulajdonság pl. szín nem számít). Pl. ha a fenti függvénynél nem adjuk meg a második paramétert, akkor nem fog frissülni az érték a változásokra, hiszen csak átételesen hivatkozunk a tartományra.
-
Fehér Mancs
tag
[IMG:c:%5Cuntitled.JPG][/IMG]
-
Fehér Mancs
tag
válasz
bagyulajuve
#4217
üzenetére
Ezt a formázást csak makróval lehet megoldani. Először 3 oszlopba fel kell vinni az adatokat, majd készíteni rá egy egyszerű oszlopos diagrammot, és utána a lenti makró megformázza azt.
Sub Macro8()
' 2. adatsor
With ActiveChart.SeriesCollection(2)
.ChartType = xlLineMarkers
.AxisGroup = 2
.MarkerForegroundColorIndex = 3
.MarkerStyle = xlDash
.MarkerSize = 10
.Border.LineStyle = xlNone
End With
' 3. adatsor
With ActiveChart.SeriesCollection(3)
.ChartType = xlLineMarkers
.AxisGroup = 2
.MarkerForegroundColorIndex = 3
.MarkerStyle = xlDash
.MarkerSize = 10
.Border.LineStyle = xlNone
End With
' Dropdown lines
With ActiveChart.ChartGroups(2)
.HasDropLines = False
.HasHiLoLines = True
.HasUpDownBars = False
End With
' Minimum és maximum tengelyértékek megadása
If ActiveChart.Axes(xlValue).MinimumScale < ActiveChart.Axes(xlValue, xlSecondary).MinimumScale Then
ActiveChart.Axes(xlValue, xlSecondary).MinimumScale = ActiveChart.Axes(xlValue).MinimumScale
Else
ActiveChart.Axes(xlValue).MinimumScale = ActiveChart.Axes(xlValue, xlSecondary).MinimumScale
End If
If ActiveChart.Axes(xlValue).MaximumScale > ActiveChart.Axes(xlValue, xlSecondary).MaximumScale Then
ActiveChart.Axes(xlValue, xlSecondary).MaximumScale = ActiveChart.Axes(xlValue).MaximumScale
Else
ActiveChart.Axes(xlValue).MaximumScale = ActiveChart.Axes(xlValue, xlSecondary).MaximumScale
End If
End Sub -
Fehér Mancs
tag
válasz
Delila_1
#4205
üzenetére
Egy apró hiba van a képletben, az, hogy szöveget hasonlítasz össze egymással, így pl.: "9" nagyobb "30"-nál, "1000" pedig kisebb nála. A feltételbe is bele kell tenni a számmá való átalakítást (eggyel való szorzást):
=HA(KÖZÉP(F1;SZÖVEG.KERES("/";F1)+1;20)*1>30;"";30-KÖZÉP(F1;SZÖVEG.KERES("/";F1)+1;20)*1)
B1-be (30 mínusz F1 számlálója):
=HA(BAL(F1;SZÖVEG.KERES("/";F1)-1)*1>30;"";30-BAL(F1;SZÖVEG.KERES("/";F1)-1)*1) -
Fehér Mancs
tag
válasz
mimi_bacsi
#4182
üzenetére
Szia,
Ha nem akarsz makrós megoldást, képletekkel is meg lehet oldani, ráadásul ez másolható is.
(A1 a hivatkozott cella)
Első szám képlete (pl. B1-be) : =LEFT(A1;FIND("/";A1)-1)*1
Második szám képlete (pl. C1-be) : =MID(A1;FIND("/";A1)+1;999)*1Magyarban azt hiszem, ezek a BAL, SZÖVEG.TALÁL, és KÖZÉP függvények.
-
Fehér Mancs
tag
válasz
cortez25
#4114
üzenetére
Feltételes formázással 3-nál több érték esetén is megoldható a a színezés, a feltételbe ezt kell beírni:
=NOT(ISERROR(HLOOKUP(A2;$T$1:$T$20;1;0)))A2 helyére az aktuális cellát kell beírni, ami kikeresi a T1:T20 cellákból az értékekekt, és ha megtalálta (nem hibás a képlet->van adat), akkor élhet a feltételes formázás. sajnos a függvények magyar neveit nem tudom, de könnyen ki lehet találni.
-
Fehér Mancs
tag
válasz
RoyalFlush
#3846
üzenetére
Sziasztok,
Ilyen jellegű problémára ad megoldást az FKERES/VLOOKUP függvény is, ráadásul sokkal átláthatóbban, a kezelése/karbantartása is sokkal egyszerűbb. A lényeg, hogy előzetesen le kell gyártani a paramétertáblát, a függvény utolsó értéke pedig 1 kell, hogy legyen, így intervallumokban keres.
-
Fehér Mancs
tag
Szia,
A Feltételes formázást próbáltad már? Lehet, hogy ez a megoldás a problémádra.
Pl.: feltételes formázás formulájaként meg lehet adni, hogy ha ''=A1=$C$1'' (aktív cella megegyezik a vizsgált cellával), akkor legyen piros színű a cella. Ezután a formázást lehet másolni a többi cellára is. -
Fehér Mancs
tag
Szia,
Nem akarok kontárkodni, a másik megoldás is biztosan helyes, de van egy egyszerűbb és könnyebben érthető is.
A legelső cella képlete: (C1) =LARGE($a$1:$a$30;1) ->A legnagyobb számot adja meg
Az alatta lévő cellába: (C2) =LARGE($A$1:$A$30;COUNTIF($A$1:$A$30;''>=''&C1)+1) ->megnézi, hogy mennyi, az előző számtól nemkisebb szám van, és ez+1-edik legnagyobb számot keresi meg. Ezt pedig le lehet már húzni.
Ha a sor végét is le szeretnénk kezelni, akkor a futó cellákba a (C2) =IF(OR(SMALL($A$1:$A$13;1)=C1;C1='''');'''';LARGE($A$1:$A$13;COUNTIF($A$1:$A$13;''>=''&C1)+1)) kell beérni (ha az előző a legutolsó, vagy már ott sem volt semmi kitöltve, akkor nem tölti ki, amúgy pedig az előző képletet használja).
Üdv -
Fehér Mancs
tag
A probléma az, hogy az FKERES mindig az első találatból indul ki.
Két megoldást tudok javasolni.
Egyik, ha tudsz saját függvényt írni a macronál, akkor azzal lehetne szabályozni, hogy a korrigált FKERES az általad sorszámként megadott egyezőséghez keresse ki az értéket.
Másik az lehet, hogy azt az FKERES keresési listáját hekkeled meg:
Az első függvény marad az eredeti H5=FKERES($K$2;$B$6:$D$10;3;0)
a többi függyvények pedig az előző találatokra hivatkoznak: H6=FKERES($K$2;OFSZET($B$5;HOL.VAN(H5;$D$6:$D$10;0)+1;0;1000;1);3;0), ezt lehúzva az általa várt eredmény születik. A probléma csak ott lehet, ha egy érték többször is szerepel a listádban, ilyenkor egy ciklusba kerül a függyvény.
A lényege ennek, hogy az OFSZET egy cellatartományt ad vissza (mintha manuálisan jelölnéd ki), ami a B5 mezőtől lefelé csúsztatva annyi sorral kezdődik, mint amelyikben megtalálta (HOL.VAN függvény) az FKERES előző eredményét. Figyelni kell arra is, hogy az OFSZET függvény utolsó előtti paramétere (jelen esetben 1000) azt határozza meg, hogy hány sor magas oszlopba keresse az adott értéket, így azt megéri akkorára állítani, hogy mindenképpen beleférjen az összes (de vigyázni arra, hogy az excel sorkorlátját ne lépje túl). Az OFSZET utolsó paramétere pedig az oszlopszámot határozza meg, így annak meg kell egyeznie az FKERES-ben használt oszlopszámmal.
(Ha a lehúzás után keletkező hibákat (#N/A) el akarod rejteni, akkor a =HA(HIBÁS(függvény);'''';függvény) függvénnyel meg lehet ezt oldani.) -
Fehér Mancs
tag
Én is a Kimutatásvarázslót/Pivot Table-t javasolnám neked, azzal pillanatok el lehet ezt készíteni.
A lényege, hogy először kijelölöd, hogy milyen adatokat kell megadni, majd megadod a megjelenítését/Layout-ot -> Sorok közé bedobálod, ami alapján kell összegezni (ezetleg átlagot, darabszámot, stb.-t számolni), az adatmezőre pedig berakod az összegezendőt.
Nem túl bonyolult, viszont nagyon megéri megtanulni. -
Fehér Mancs
tag
válasz
Illusion1010
#2301
üzenetére
Közvetlen függvény nincs, de macro-ként lehet írni saját függvényt, ami megadja az infót az adott cellára egy új oszlopban, arra pedig már lehet szűrni.
A macro pl.:
Function Boldolt(Cella As Range) As Boolean
If Cella.Font.Bold = True Then
Boldolt = True
Else
Boldolt = False
End If
End Function
Ezután a függvényre lehet hivatkozni, pl ''=Boldolt(A1)'' megadja azt.
(Lehet, hogy magyar nyelvezetű excelnél néhány kifejezéset máshogy kell írni.) -
Fehér Mancs
tag
válasz
benczeb
#2285
üzenetére
A kijelölt tartománynál a cellaformátumra (Format -> Cells vagy ctrl+1) ki kell választani a Szám/Number fül alatt az utolsó kategóriát (angolban Custom). A formátum beadásánál be kell gépelni: XXX;WWW;ZZZ -> az első rész fog állni a pozitív, a mázodik a negatív számok, a harmadik pedig a 0 helett. (Ha csak XXX-et írsz be, akkor a negatívnál -XXX jelenik meg).
-
Fehér Mancs
tag
Új hozzászólás Aktív témák
- Játékkulcsok ! : PC Steam, EA App, Ubisoft, Windows és egyéb játékok : (12.20.)
- PC Game Pass előfizetés
- Kaspersky, BitDefender, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- iPhone 13 mini 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3086
- Eladó XFX Radeon 7700 2GB videokártya
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
- GYÖNYÖRŰ iPhone 15 Pro Max 512GB Blue Titanium -1 ÉV GARANCIA - Kártyafüggetlen, MS4089
- GYÖNYÖRŰ iPhone 13 Pro 128GB Sierra Blue -1 ÉV GARANCIA -Kártyafüggetlen, MS3965
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


(az üresek helyére 0-t tesz - Negatív számoknál problémát okozhat!!!)
10-ig vannak adatok)



Fferi50

