- iPhone 16e - ellenvetésem lenne
- Xiaomi 15 - kicsi telefon nagy energiával
- Mobil flották
- Prohardver app (nem hivatalos)
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Poco F6 5G - Turbó Rudi
- Magisk
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Fotók, videók mobillal
- Azonnali mobilos kérdések órája
-
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
-
Mutt
senior tag
válasz
Expendable #19353 üzenetére
Hali,
...ha ez az eredmény eléri vagy meghaladja a 100%-ot, akkor 100% legyen odaírva és ha nem éri el a 100-at, akkor maradjon a cella eredeti tartalma...
=Min(SUM(B38:S38)*(20/((T10-R10)+(U10/8)));100%)
üdv
-
Mutt
senior tag
válasz
dudikpal #19342 üzenetére
Hello,
Ez tömbösítés nélkül nem működik?
Nem, alternatív megoldás lehet egy UDF használata...mentés-kilépés kb 20 percig tartott, addig 100%-on pörgött a gép...
Ha tudsz akkor ne az egész oszlopra hivatkozz a képletekben, pl. a D:E hivatkozás helyett ha tudod hogy 500-nál nincs több mértékegységed, akkor D1:E500 sokkal gyorsabban fog lefutni.
Vagy dinamikus tartományokat is használhatsz.üdv.
-
Mutt
senior tag
-
Mutt
senior tag
válasz
morgusz #19331 üzenetére
Hello,
1. Szeretnék megoldást találni arra, hogy a makró által átalakított, új néven mentendő file nevében benne legyen az aktuális dátum.
vegsonev = filenev & "_" & Format(Date, "yyyy_mm_dd")
Ahogy látod Date függvény kell neked, esetleg formázhatod is a kedvedre.2. Nem értem, hogy a makró rögzítésekor CSV-ként mentett XLS fájl, miért más formátumú a makró későbbi futtatásakor mint a rögzítéskor.
A kód nélkül nem tudunk erre választ adni.3. Hogy lehet megoldani makróval, azonos oszlopkból és naponta változó számú sorból álló, adatokat tartalmazó cellatartomány másolását
Range("A1").CurrentRegion.Copy Destination:=cel
Adj meg egy cellát (pl. A1) a tartományban (üres sorok és oszlopok közötti összefüggő nem-üres cellák halmaza) és CurrentRegion-nal tudod kezelni egyben.Ha van üres sor/oszlop, akkor más technika kell (pl. Range("A"&Rows.Count).End(xlUp).Row)
üdv.
-
Mutt
senior tag
válasz
nimmy001 #19311 üzenetére
Hello,
...mindenkinek látni kell a többiek által felvitt adatokat, de több excelben dolgozunk párhuzamosan, a többinél nincs szükség ilyen gyakori mentésre, mint ennél az egynél.
Szerintem a hagyományos Exceltől ilyet ne várj el; sem a csoportmunka, sem az adatbiztonság nem az erőssége. Mindegyiket alapszinten támogatja.
A felvetésedre vagy Office365-öt javasolnék (nem használtam, de illene tudnia) vagy vmi hasonlót (itt egy lista), esetleg ha adatrögzítés a tipikus feladat akkor Access-t.
üdv.
-
Mutt
senior tag
válasz
the radish #19327 üzenetére
Hello,
Én ritkán szoktam megszakítani egy programot, de a lenti példában láthatod hogy a Msgbox-ra adott választ egy változóba lehet tenni, és ez alapján tudsz elágaztatni.
Sub KilepDemo()
Dim lngOsszeg As Long
Dim blnVege As Boolean
Dim vResponse
lngOsszeg = 0
blnVege = False
Do
'bekérünk egy számot
vResponse = Application.InputBox("Adj meg egy egyjegyű számot:", "Összegzés (eddig " & lngOsszeg & ")", , , , , , 1)
'ha egynél többet adtak meg, akkor rákérdezünk a kilépésre
If Len(vResponse) > 1 Then
vResponse = MsgBox("Hé nem figyeltél!", vbOKCancel, "Irgum-burgum")
'ha okét nyom akkor kilépünk a ciklus végén
If vResponse = vbOK Then blnVege = True
Else
'ha egy számot adott meg akkor számolunk vele
lngOsszeg = lngOsszeg + vResponse
End If
'addig maradunk a ciklusban míg ki nem léphetünk
Loop Until blnVege
End Subüdv.
-
-
Mutt
senior tag
válasz
fresa01 #19294 üzenetére
Hello,
A feladat valójában, hogy 100 db véletlen, nem ismétlődéses számot kell előállítani.
Ha engedélyezett nem beépített függvények használata, akkor a Morefunc ingyenes kiegészítő tud segíteni, az MRAND függvény képes véletlenszerű eltérő számokat visszaadni.
A fenti képen I:K oszlopokban van egy játékos azonosító (1-100-ig számok), név és poszt.
A-oszlopban MRAND segítségével az egyedi számok, mellettük pedig FKERES-sel ki van írva a poszt és név.
Ha csak beépített függvény használható, akkor az I:K oszlopokban az azonosító egy véletlenszám a VÉL függvénnyel. Az A-oszlopban pedig a KICSI függvénnyel keressük ki a már generált véletlenszámokat.
A többi része ugyanúgy működik mint az első változatban.üdv
-
Mutt
senior tag
Hello,
Tehát ne külön-külön, három szám az oszlopra mindegyik színhez (értékhez), hanem X Y és Z összege?
2 megoldást mondanék:
Mindkét esetben legyen egy plusz adatsorod, ahol az összegek vannak, ez nálam az E-oszlopban van.
1. Hasznos program az XY Chart Label-er, letölthető innen: http://www.appspro.com/Utilities/ChartLabeler.htm
Itt már csak meg kell adnod, hogy az E-oszlopban található adatokkal iratozzon fel.Az eredmény változó, de egy próbát megér, mivel gyors az egész.
2. Az összesítő oszlopot tedd másodlagos tengelyre, formázd meg a másodlagos tengelyt és az adatsort hogy ne látszódjon, végül vedd fel az adatsor megjelenítését.
A mintán kijelöltem az összesítő adatsort, hogy lásd hogy valójában arra írjuk rá az értékeket.
üdv.
-
Mutt
senior tag
válasz
the radish #19290 üzenetére
Hello,
Ha jól értem, akkor a sSheetsToPrint = "Export,Import" részben interaktívan szeretnéd a lapok nevét.
Ez a kódrészlet megoldja ezt:sSheetsToPrint = ""
For Each cell In Range("A1:Z1")
If cell <> "" Then
sSheetsToPrint = sSheetsToPrint & cell & ","
End If
Next
sSheetsToPrint = Left(sSheetsToPrint, Len(sSheetsToPrint) - 1)Az első mondatodból kiindulva van alternatív megoldás is?
Én csak akkor tenném külön szubrutinba őket, ha teljes más eredményt/feldolgozást kell elvégezni 0 és 1 esetén. Ha van átfedés, akkor egyben hagynám mert ekkor csak 1x kell a közös részt megírni és csak a megfelelő részeken ágaznék el.üdv.
-
Mutt
senior tag
válasz
the radish #19287 üzenetére
Hello,
Lehet az általad megírt módon is megcsinálni.
pl.
Sub Indit()
Select Case ActiveSheet.Range("A1")
Case 0
makro0
Case 1
makro1
End Select
End Sub
Sub makro0()
MsgBox "Első ág"
End Sub
Sub makro1()
MsgBox "Másik ág"
End Subüdv
-
Mutt
senior tag
válasz
the radish #19283 üzenetére
Hello,
Az ÖSSZEFŰZ függvény szöveges eredményt ad, ezért hiába állítasz be számformátumot, nem fogja használni.
Az én javaslatom a SOKSZOR függvény.
pl. =SOKSZOR(0;3-HOSSZ(HÓNAP(MA())))&HÓNAP(MA())A fenti példa mindig 3 karakter hosszan fogja megjeleníteni az aktuális hónap sorszámát; annyiszor ismétli a 0-t, hogy 3 karakteres legyen a végeredmény.
üdv.
-
Mutt
senior tag
válasz
lomajpure #19262 üzenetére
Hello,
És fájl megnyitásnál kapok egy 438-as hibakódot.. Debug módban a "range" sorra hivatkozik, de nem értem a hibát.....
wb1.Range("Z2").Copy wb.Range("F6")
Workbook objektumnak nincsen Range nevű tulajdonsága, mert ilyen a Worksheet objektumnak van.
Vagyis hivatkoznod kell hogy melyik lapon akarod a füzeten belül a műveletet végrehajtani.pl. wb1.Sheets(1).Range("Z2").Copy wb.Sheets(1).Range("F6")
üdv
-
Mutt
senior tag
válasz
the radish #19277 üzenetére
Hello,
Ha D-oszlopban vannak a sor azonosítók, akkor az INDIREKT függvény segít:
=HA(INDIREKT("Q"&D3)<CD$1;0;INDIREKT("M"&D3))üdv
-
Mutt
senior tag
válasz
alfa20 #19266 üzenetére
Hello,
olyat tudok, hogy van egy szövegem amiben van két szám amire szükségem lenne számoláshoz?
A1: rendelhető 10-10 kg, ill. dinnye, kókusz, 3-3 db-ot.
B1: 10
C1: 3Előre szólok, hogy csúnya lesz a képlet és csak 2007-es vagy újabban működik!
Kell segédoszlop, ez D és E nálam.
D-be ez a CSE képlet kell:
{=ÖSSZESÍT(15;6;HOL.VAN(SOR($A$1:$A$10)-1;--(KÖZÉP(A1;SOR(INDIREKT("A$1:A"&HOSSZ(A1)));1));0);1)}
E-be pedig ez:
{=ÖSSZESÍT(15;6;HOL.VAN(SOR($A$1:$A$10)-1;--(KÖZÉP(A1;SOR(INDIREKT("A"&SZÖVEG.KERES(",";A1)&":A"&HOSSZ(A1)));1));0);1)}A segéd képletek megadják, hogy honnan kezdődik a keresett szám első számjegye.
A második számnál valójában az első vessző utáni pozícíót kapjuk meg.Hogy meddig tart a szám az pedig a kötőjelekből tudható meg.
B1-be ez a képlet menjen:
=KÖZÉP(A1;D1;SZÖVEG.KERES("-";A1)-D1)
C1-be pedig ez:
=KÖZÉP(A1;E1+SZÖVEG.KERES(",";A1)-1;SZÖVEG.KERES("-";KÖZÉP(A1;E1+SZÖVEG.KERES(",";A1)-1;HOSSZ(A1)))-1)Ha kell elmagyarázom, hogyan működik azonban itt inkább javaslok egy UDF-et, amely átláthatóbban adja vissza a kért számokat.
A függvény végigmegy a cella tartalmán és a nem-összefüggő számokat megjegyzi, és a kért számot kiírja.
B1-be ez mehet:
=SzamokSzovegben(A1;1)
C1-be ez:
=SzamokSzovegben(A1;3)A függvény kódja pedig:
Function SzamokSzovegben(be As Range, ki As Integer)
Dim c As Long, i As Long 'általános változók számláláshoz
Dim arrySzamok() 'átmeneti tömb az eredmények tárolására
Dim blnSzam As Boolean 'logikai változó hogy tudjuk mikor váltunk szám és betű között
i = 1
blnSzam = False
'elkezdjük karakterenként feldolgozni a szöveget
For c = 1 To Len(be)
Select Case Mid(be, c, 1)
Case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
'ha számot találunk, akkor megjegyezzük és a tömbhöz hozzáfűzzük
blnSzam = True
ReDim Preserve arrySzamok(1 to i)
arrySzamok(i) = arrySzamok(i) + Mid(be, c, 1)
Case Else
'ha eddig szám volt és most nem számot látunk, akkor növeljük a tömböt
'hogy egy újabb számot külön rögzítsünk
If blnSzam Then
i = i + 1
blnSzam = False
End If
End Select
Next c
'kiírjuk a kért értéket
SzamokSzovegben = arrySzamok(ki) * 1
End Functionüdv
-
Mutt
senior tag
Kicsit elgépeltem: >100 helyett >1000 kell. És a magyar változat pedig:
{=INDEX(A:A;HOL.VAN(1;((A:A>1000)*(A:A<10000));0))}
Illetve, egy kis magyarázat is hozzá:
1. A kulcs a képletben a (A:A>1000)*(A:A<10000) rész, amely attól függően, hogy van találat 0-t és 1-est fog visszaadni.{0;0;0;1;1;0;1;0...}.
2. Ebből már csak ki kell keresni az első helyet ahol 1-es (vagyis egyezés van). Erre a HOL.VAN függvény a megoldás; ez vissza is adja hogy hanyadik helyen van 1-es.
3. INDEX segítségével már csak a megkapott helyre kell menni és kiírani az értéket. -
Mutt
senior tag
válasz
the radish #19259 üzenetére
Hello,
Szóval van egy számhalmaz pl. 100-10000 között. Kéne belőle az első, ami 1000-nél nagyobb...
CSE-képlet:
{=INDEX(A:A;MATCH(1;((A:A>100)*(A:A<10000));0))}üdv.
-
Mutt
senior tag
válasz
autox3c #19242 üzenetére
Hello,
Erre van a SZORZATÖSSZEG függvény, előny hogy még kritériumokat is tud kezelni.
=SZORZATÖSSZEG(--(eszközök ára<25000);eszközök költsége;darabszám)Ez megadja 25k alatti készülékek teljes árát. Ezt alapul véve lehet a 25k felettieket is számolni.
=SZORZATÖSSZEG(--(eszközök ára>25000);eszközök ára;darabszám)
A kettő összege a végeredmény.
üdv.
-
Mutt
senior tag
Sziasztok,
Máshol jelent meg az alábbi kérdés:
Van egy Mf ahol 2013.01.01-től 2013.12.31-ig fel vannak sorolva a dátumok. Azt a dátumot szeretném meghatározni amelyik utoljára még aktív. F-oszlopban Aktív és Inaktív, A-ban a dátumok.Tömbképlettel az alábbi működik:
{=MAX((F1:F366="Aktív")*(A1:A366))}Kacifántosabban:
{=INDEX(A1:A366;NAGY((F1:F366="Aktív")*SOR(F1:F366);1))}Az első SZORZATÖSSZEG-es változata:
=SZORZATÖSSZEG(MAX((F1:F366="Aktív")*(A1:A366)))Az első és harmadik megoldásnak az alapja, hogy a dátumok is számok, tehát műveletet (itt egy szorzást) is lehet rajtuk végezni.
Az F1="Aktív" képlet rész egy cellára megnézi, hogy az értéke "Aktív"-val egyenlő vagy sem. IGAZ vagy HAMIS eredményt fog visszaadni, képletben használva ezek pedig 1 vagy 0-ként fognak viselkedni. Az (F1:F366="Aktív") értéke már egy tömb eredményt add vissza pl {HAMIS;HAMIS;IGAZ;...}.
Ezt megszorozva a mellette található dátummal már ezt fogjuk kapni {0;0;41277;...}
Innen már csak a maximum értéket kell kikeresni a végeredményhez.Az első esetekben azért kell tömbképlet mivel az (F1:F366="Aktív") összehasonlítást sima képletként nem tudja kiértékelni az Excel. Az utolsó esetben a SZORZATÖSSZEG viszont ezt a problémát le tudja kezelni.
A középső megoldás, akkor használható ha az A-oszlopban nem számok/dátumok vannak, itt a cellák aktuális sorszámával szorozzuk össze az összehasonlítás eredményét, ezzel megkapjuk a pozicíóját az "Aktív" soroknak. Ebből a maximumot véve az INDEX-el már ki tudjuk választani a kívánt elemet.
üdv.
-
Mutt
senior tag
válasz
the radish #19232 üzenetére
Hello,
Megnéztem 2003-asban és a #Szám# hiba azért van mert a teljes oszlopra hivatkozva túlcsordul a számítás; de egy sorral kevesebbre már jó. Szóval A:A hivatkozás helyett A1:A65535 -el működik. Természetesen ha van sejtésed, hogy az adatsor maximum mennyi elemet tartalmazhat, akkor inkább azt add meg a gyorsabb működés érdekében.
Az első képlet pedig egy tömbképlet, vagyis kapcsos zárójelek nélkül kell bevinni, majd a végén Ctrl+Shift+Entert nyomni. Ez is jól működik ha nem teljes oszlopra hivatkozol.
üdv
-
Mutt
senior tag
válasz
the radish #19225 üzenetére
Hello,
A listából az a szám kell, melyek a kritériumnál kisebb...
CSE képlettel (C1-ben van a határérték, A oszlopban a számok):
{=MAX((A:A<C1)*(A:A))}Szorzatösszeggel pedig:
=SZORZATÖSSZEG(MAX((A:A<C1)*(A:A)))Ha két szám (C1,C2) közötti legnagyobb kell akkor:
{=MAX((A:A<C1)*(A:A>C2)*(A:A))}
=SZORZATÖSSZEG(MAX((A:A<C1)*(A:A>C2)*(A:A)))A képletek 0-t adnak vissza ha nincs megfelelő szám!
üdv.
-
Mutt
senior tag
Hello,
A [<117642]0;[=117642] "szöveg" részben a 0 azt jelenti, hogy szám formátumot írjon ki ha a cella értéke 117642-nél (2222. február 2-ánál) kisebb. A 0 helyett éééé.hh.nn -ot adj meg.
2222. február 2-ára pedig csak azt írja ki, hogy "szöveg"A formátum képlet 4 részből áll, a részeket pontos vesszővel tudod elválasztani. Ezek az alábbiak:
1. pozitív számok megjelenítésének beállítása
2. negatív számok beállítása
3. 0 esetén megjelenítés
4. szöveges cellák megjelenítéseA négy részben lehet használni pár feltételt is ahogy a példádban is van szögletes zárójelek között kisebb, nagyobb vagy egyenlő műkődik.
Ezek alapján vmi ilyenre lenne célszerű bővíteni a formátumot : [<117642]éééé.hh.nn;[=117642] "szöveg";Normál;"Nem szám"
Ekkor dátum lesz minden 117642-nél kisebb szám (a negítvokra hülyeséget ír ki majd), 117642-re "szöveg",
szöveg esetén pedig "Nem szám"-ot ír ki.üdv.
-
Mutt
senior tag
válasz
81lendo$ #19190 üzenetére
Hello,
Pár hasznosabb XlPasteType értékek:
1. xlPasteAll - mindent fog másolni, tehát képletek, számformátumok, egyéb cella formátumok, keretek, kommentek
2. xlPasteValuesAndNumberFormats - a cellákat értékként fogja másolni számformátummal együtt
3. xlPasteValues - a cellákat értékként másolja, minden mást kihagy
4. xlPasteFormulas - képleteket másol, minden mást kihagy
5. xlPasteFormats - formátum másolás, se értéket se képletet nem másolüdv.
-
Mutt
senior tag
válasz
81lendo$ #19166 üzenetére
Szia,
A makró és a VBA ugyanaz, esetleg ha megosztod a rögzített makrót, akkor tudunk rajta csiszolni.
- az osztály névből egy új munkafüzetet készít, hasonló névvel
Új füzetet a Workbooks.Add paranccsal tudsz nyitni, mentéskor tudod megadni a nevet neki.
Ha lapról lenne szó, akkor Worksheets.Add a parancs, és a Worksheet.Name = Cstr(Range("C3")) műxik.- az egész táblázatot bemásolja oda
Adat másolása a Copy Destination:=<cél> paranccsal megy. Ha formátumot is kell másolni, akkor pedig a PasteSpecial használandó.
A táblázatot pedig egyben ki tudod jelölteni, ha benne állsz a CurrentRegion-al.- és tölődjön az első oldalról a már kész osztály.
Törléshez pedig a Delete parancs kell.Itt egy minimalista megoldás:
Sub CopyClass()
Dim wb As Workbook
Dim fajlnev As String
If Range("C3") <> "" Then
'megjegyezzük hogy milyen névvel kell menteni, egy kicsit tisztítunk rajta
fajlnev = CStr(Trim(Range("C3")))
'másoljuk a táblázatot E5-től kezdve
Range("E5").CurrentRegion.Copy
'nyitunk egy fájlt
Set wb = Workbooks.Add
'első fülére első cellájába berakjuk formázva képletek nélkül
wb.Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
'mentjük a fájlt
wb.SaveAs fajlnev
'bezárjuk a fájl
wb.Close
'töröljük az eredeti táblázatot
Range("E5").CurrentRegion.Delete xlShiftUp
'töröljük az osztály nevét
Range("C3").ClearContents
End If
End Subüdv.
-
Mutt
senior tag
válasz
róland #19135 üzenetére
Hello,
..hogyan lehet rögzíteni a nyomtatási területet?..
Lap rendezése csoport-on belül nyisd meg az Oldalbeállítás párbeszédablakot és annak a Lap fülén lehet állítani a területet.
Ha dinamikusan változik, akkor pedig makróval:
Sheets("minta").PageSetup.PrintArea = "$A$1:$F$100"üdv.
-
Mutt
senior tag
Hello,
INDIREKT nélkül próbáld ki. Tehát:
=HIPERHIVATKOZÁS("[Excel fájl neve]"&B2&"!A1";B2&" megnyitasa")A fájlnevet pedig így tudod függvénnyel kinyerni:
=KÖZÉP(CELLA("filenév");SZÖVEG.KERES("[";CELLA("filenév"));SZÖVEG.KERES("]";CELLA("filenév"))-SZÖVEG.KERES("[";CELLA("filenév"))+1)üdv
-
Mutt
senior tag
válasz
Delila_1 #19122 üzenetére
Hello,
Nem kell ChDir-el váltatni, azonban szerintem fontos lenne előbb ellenőrízni, hogy a megadott útvonal létezik-e egyáltalán.
Sub direktor()
Dim utvonal$
utvonal$ = Range("B1")
'ha nincs a végén \ akkor hozzáadjuk
If Right(utvonal$, 1) <> "\" Then utvonal$ = utvonal$ & "\"
'ellenőrízzük hogy a mappa létezik-e
If Dir(utvonal$, vbDirectory) <> "" Then
ActiveWorkbook.SaveAs Filename:=utvonal$ & "proba.xls"
Else
MsgBox "Hiba az útvonal nem létezik"
End If
End SubÉs talán esetleg ellenőrízni is célszerű, hogy a mappa írható-e:
Sub direktor()
Dim utvonal$
utvonal$ = Range("B1")
'ha nincs a végén \ akkor hozzáadjuk
If Right(utvonal$, 1) <> "\" Then utvonal$ = utvonal$ & "\"
'ellenőrízzük hogy a mappa létezik-e
If Dir(utvonal$, vbDirectory) <> "" Then
'ellenőrizzük, hogy a könyvtár írható-e
If GetAttr(utvonal$) And vbReadOnly = 0 Then
ActiveWorkbook.SaveAs Filename:=utvonal$ & "proba.xls"
Else
MsgBox "A megadott könyvtár nem írható"
End If
Else
MsgBox "Hiba az útvonal nem létezik"
End If
End Subüdv.
-
Mutt
senior tag
válasz
nesh20 #19111 üzenetére
Hello,
Olyan szűrőre lenne szükségem egy listához amiben ha elkezdem írni a kezdőbetűt kidobja azt amit én keresek! Megoldható ez valahogy?
A szűrővel vmit meg szeretnél jeleníteni? Egy vagy több találatod lehet?
Igazából csak ActiveX vezérlővel tudod elérni, hogy gépeléskor mutassa a találatokat. Ilyet a Fejlesztőeszközök fülön keresztül tudsz beszúrni, Combobox kell neked, amelynek a ListFillRange részébe kell beírnod a keresendő tartományt.
Ha LinkedCell-be írsz egy cella azonosítót, akkor ott megjelenik a kiválasztott érték, amelynek segítségével ki tudsz íratni más értéket is.
üdv.
-
Mutt
senior tag
válasz
pirit28 #19100 üzenetére
Hello,
..Szeretném ebből a táblából egy másik táblába kigyűjteni a neveket akik A műszakosak.
Kiindulni az if függvényből indultam el ,úgy hogy megnéztem az illető A műszakos-e vagy B.ezt az R és S oszlopban rögzítettem...
A problémám az az hogyha elfogynak a nevek akkor #num hibaüzenet fogad,amit szeretnél eltüntetni valahogyan, de nem tudom hogyan.
Ezt úgy tudod megoldani, hogy megszámolod hány értéket lehet kiírni, és ha annyit már kiírtál, akkor a semmit iratod ki.A COUNTIF(C:C;"A") megmondja hogy hány értéked van, hogy hányadik írod ki az pedig a SMALL-nál vhogy megadod. Vagyis a képlet vmi ilyen lehet:
=IF(COUNTIF(C:C;"A")<=small-ban a k értéke;eredeti képleted;"")Azonban hadd javasoljak egy másik megoldást is.
Ha nem akarod ABC sorrendben, akkor nem is kell az R és az S segédoszlop, mivel egy képletben meg lehet oldani. Én az alábbi mintával dolgoztam.
Ekkor az E3-ba ez a képlet kell:
=IF(ROWS(E$3:E3)<=COUNTIF($C:$C;E$2);INDEX($B:$B;AGGREGATE(15;6;ROW($C:$C)/($C:$C=E$2);ROWS(E$3:E3)));"")Ezt másolhatod lefele és jobbra is hogy a B műszakosok is meglegyenek.
Ha ABC sorrend is jó lenne, akkor kell egy segédtábla. A mintámban a G és H-oszlopok ezek.
G3-ban ez a képlet:
=IF(COUNTIF($B:$B;"<="&$B3)*($C:$C=G$2)>0;COUNTIF($B:$B;"<="&$B3)*($C:$C=G$2);"")Ez kihasználja azt, hogy a COUNTIF (DARABTELI) függvényben lehet kisebb v. nagyobb operátort is használni, és ezzel sorrendet meghatározni. pl. COUNTF(B:B;"<Dénes") megszámolja hogy Dénes előtt hányan vannak a listában. Szóval a képlet vagy visszaadja az ABC sorrend szerinti helyezést, vagy egy üres mezőt ad.
Ezek után már csak a SMALL segítségével a sorszámokat növekvő sorrendben ki kell olvasni, majd egy MATCH (HOL.VAN) függvénnyel megkeresni, hogy ez hol van és az ahhoz tartozó nevet INDEX-el kiíratni.
A képlet az I3-ban ez:
=IF(ROWS(I$3:I3)<=COUNTIF($C:$C;I$2);INDEX($B:$B;MATCH(SMALL(G:G;ROWS(I$3:I3));G:G;0));"")üdv.
-
Mutt
senior tag
válasz
Agostino #19085 üzenetére
Hello,
FKERES-hez a többiek mellett még az alábbi javaslatom lehet.
Amit fontos tudni, hogy a táblában (amelyből vissza akarod kapni a keresett értéket) az első oszlopban milyen módon vannak az értékek. A számok lehetnek számként (alapból jobbra rendezi a cella tartalmát az Excel) tárolva vagy szövegként (ezek balra vannak igazítva).Ha ezt tudjuk, akkor az FKERES-ben a keresési értéket fel lehet készíteni, hogy a táblának megegyező formátumba tegye azt minden esetben:
1. A táblában szám van, ekkor használható ez:
=FKERES(--D13;$K$13:$L$3766;2;0)
2. A táblázatban szöveg van, ekkor pedig ez:
=FKERES(D13&"";$K$13:$L$3766;2;0)Az első esetben megszorozzuk a cella értékét 1-el, ekkor a számként értelmezhető, de nem számként tárolt értékek is számok lesznek. A második esetben pedig egy üres szöveget fűzünk az értékhez, aminek eredménye egy szöveg lesz minden esetben.
Az FEKERES helyett használható a HOL.VAN függvény is, amely nem csak a fenti formátum problémára érzéketlen, hanem megoldható vele hogy az első oszloptól balra is tud értéket visszaadni. Az INDEX függvénnyel kell együtt használni.
Alább a logika, hogy ezek a függvények hogyan képezhetők le egymásra:FKERES(keres;tábla;hanyadik oszlop;egyezés típusa) -> INDEX(tábla;HOL.VAN(keres;tábla;egyezés típusa);hanyadik oszlop)
Továbbá meglepő módon a KERES függvény sem finnyás (itt viszont pontos egyezést nem lehet beállítani):
KERES(keres;tábla első oszlopa;tábla visszatérési oszlopa)
pl. KERES(D13;K:K;L:L)üdv.
-
Mutt
senior tag
válasz
81lendo$ #19113 üzenetére
Hello,
Itt megtalálod a módosított változatot. Nem csak a formátum másolás, de a munkalapra helyezett ActiveX vezérlőt változat is benne van.
A formátum másolása pedig általánosságban így oldható meg:
Range(masolando).Copy
Range(cel).PasteSpecial Paste:=<beillesztéstípusa>A beillesztés típusáról itt súgóban vagy itt lehet olvasni.
Tipikus példák:
xlPasteAll - minden formátumot másol (függvény, szám formátum, cella formátum, keret, komment stb).
xlPasteValuesAndNumberFormats - értéket és számformátumot másol, de mást nem
xlPasteValues - értékként fogja másolni a cella tartalmát, de mást nem hoz átüdv.
-
Mutt
senior tag
válasz
81lendo$ #19077 üzenetére
Szia,
...El tudnád küldeni, a kódját, az "ExportList" gombnak?
Nincs jelszavazva, Alt+F11-el te is megtudod nézni alaposan, a kód részlet pedig ez:Private Sub bExportList_Click()
Dim i As Integer
Dim vHits As Integer
Dim arryHits()
Dim wsCel As Workbook
'találatok száma
vHits = 0
'végigmegyünk a lista elemein
For i = 0 To lbList.ListCount - 1
'amely ki van jelölve azt egy találati tömbbe tesszük
If lbList.Selected(i) Then
'találatok számát növeljük
vHits = vHits + 1
'a találati tömböt átméretezzük hogy fogadja az új elemet
ReDim Preserve arryHits(1 To vHits)
'betöltjük az új elemet
arryHits(vHits) = lbList.List(i)
End If
Next i
If vHits Then
'új fájl létrehozása
Set wsCel = Workbooks.Add
wsCel.Sheets(1).Range("A1") = "Munkalap neve"
For i = 1 To vHits
'kért adatok kiiratása
wsCel.Sheets(1).Cells(i + 1, "A") = arryHits(i)
wsCel.Sheets(1).Cells(i + 1, "B") = ThisWorkbook.Sheets(arryHits(i)).Range("E2")
wsCel.Sheets(1).Cells(i + 1, "C") = ThisWorkbook.Sheets(arryHits(i)).Range("K27")
wsCel.Sheets(1).Cells(i + 1, "D") = ThisWorkbook.Sheets(arryHits(i)).Range("K28")
Next i
End If
'form bezárása
Unload Me
End Sub...- Ilyenkor amikor konkrét cellát viszel át egy másik fájlba, akkor fomátuma is átmegy. (pl.: pénznem [Forint], [Euro])?
A sima Copy nem viszi át VBA-ban, így nekem sem fogja a formázást másolni, de természetesen meg lehet csinálni (PasteSpecial).
...- Ugye én nem formon, hanem Munkalapon csináltam, de elvileg ott is működik ez a megoldás?
Ha ActiveX vezérlőket használsz a lapon, akkor műkődhet. A gond azonban, hogy ezek a vezérlők egymástől függetlenül fognak létezni, ezért globális változók kellenek az adatok cseréjéhez.üdv.
-
Mutt
senior tag
válasz
Sprite75 #19074 üzenetére
Hello,
Nem egyszerű a képlet, így nem kell érteni azonnal, ezért próbáltam meg levezetni. A lényeg, hogy lásd máshogy is el lehet érni, és hogy lehessen ötletet meríteni belőle.
1 hiba van benne: fixen $G$2:$G$19-re hivatkozom, mert ennyi adat volt, helyette G:G hivatkozás kell, de mivel van már más megoldás nem kell ezzel foglalkoznod..
Márciusra azért nem ad értéket, mert február hónapban nem volt kilóméteróra-állás rögzítve.Így nem tudja mihez viszonyítson. Ezért van a levezetésemben a 7 és 8-as pont, ilyenkor 0-t ad vissza.
A lényeg, hogy neked működő képletet tudott a közösség adni.
üdv.
-
Mutt
senior tag
válasz
Sprite75 #19062 üzenetére
Hello,
...a hónapok száma alapján kellene az adott hónap utolsó tankolási Km-ét kivonni az előző hónap utolsó tankolási Km-éből....
Ez az én képletem az M8-as cellába:
=(HAHIBA(INDEX(D:D;ÖSSZESÍT(14;6;SOR($G$2:$G$19)/($G$2:$G$19=J8);1));0)-HA(J8=1;$K$2;HAHIBA(INDEX(D:D;ÖSSZESÍT(14;6;SOR($G$2:$G$19)/($G$2:$G$19=J8-1);1));0)))*SZÁM(HOL.VAN(J8;G:G;0))*SZÁM(HA(J8=1;1;HOL.VAN(J8-1;G:G;0)))A működése:
1. ÖSSZESÍT(14;6;SOR($G$2:$G$19)/($G$2:$G$19=J8);1)) kikeresi a hónap utolsó km sorának számát. pl. Április hónapnál 9-es sor.
Az ÖSSZESÍT ezen felhasználását itt mutattam be, de ugyanerre juthatunk ezen képletekkel is,:
=SZORZATÖSSZEG(MAX(($G:$G=J8)*SOR($G:$G)))
{=MAX(HA((G:G=J8);SOR(G:G);0))}2. Ezt a sorszámot felhasználva INDEX függvénnyel kiolvassuk a D-oszlopból az értéket. Áprilisban ez 45205 lesz.
3. Az egészet becsomagoljuk egy HAHIBA-ba, ahol hiba esetén 0-t kérünk vissza.
4. Az első három lépést ugyanúgy lejátszuk, de eggyel korábbi hónappal (ugyanaz a képlet csak J8 helyett J8-1 -et használunk). pl. Március esetén az érték 43444 lesz.
5. Itt még figyelembevesszük, hogy január esetén az előző évi óraállás kell K2-ből; ezt a HA(J8=1;K2;....) rész csinálja.
6. A két számot kivonjuk egymásból. pl. 45205-43444=1761Kész is lennénk, ha minden hónapban és megelőző hónapban lenne érték, de ez nem garantált.
7. Megnézzük, hogy a vizsgált hónap száma G oszlopban megtalálható-e a HOL.VAN függvénnyel. Ez egy számot add vissza ha ott van a keresett hónap. A SZÁM függvény tehát vagy IGAZ vagy HAMIS-ra fordítja le az eredményt.
8. Ugyanezt megcsináljuk a megelőző hónapra, de itt még figyelünk arra hogy január előtti hónap is kezelve legyen.
9. A 6-os lépésben kapott számot megszorozzuk a 7 és 8-as eredménnyel. pl. 1761*1*1=1761Március esetén a számok így jönnek ki:
Március végi eredmény: 43444
Február végi eredmény: 0 (mivel hibára fut a függvény és ekkor 0-t kapunk vissza).
Március bent van a G oszlopban: IGAZ (1)
Február bent van a G oszlopban: HAMIS (0)
Az eredmény: (43444-0)*1*0 = 0üdv.
-
Mutt
senior tag
válasz
dudikpal #19057 üzenetére
Hello,
Én néztem be, mivel jól írtad le a kérést.
Az eredeti probléma megoldásához az INDEX függvény kell, amelynek a képlete INDEX(tartomány;kívánt sor száma).
Röviden ezek a képletek működnek 2007 vagy újabb Excelben:
A1-be:
=HAHIBA(INDEX(VÁLASZT(ELŐJEL(INT((SOR()-1)/DARAB($E:$E)))+ELŐJEL(INT((SOR()-1)/DARAB($E:$F)))+ELŐJEL(INT((SOR()-1)/DARAB($E:$G)))+1;E:E;F:F;G:G);DARABHATÖBB(B$1:B1;B1;C$1:C1;C1)+2);"")B1-be:
=HAHIBA(INDEX($E$1:$G$1;ELŐJEL(INT((SOR()-1)/DARAB($E:$E)))+ELŐJEL(INT((SOR()-1)/DARAB($E:$F)))+ELŐJEL(INT((SOR()-1)/DARAB($E:$G)))+1);"")C1-be:
=HAHIBA(INDEX($E$2:$G$2;ELŐJEL(INT((SOR()-1)/DARAB($E:$E)))+ELŐJEL(INT((SOR()-1)/DARAB($E:$F)))+ELŐJEL(INT((SOR()-1)/DARAB($E:$G)))+1);"")Felraktam mindkét változtatot ide.
Hosszabban:
Az INDEX-nél nem a tartománnyal van gond igazán, hanem hogy mindig a szükséges sort adja vissza a tartományból. Itt tehát ennek a képlete a kulcs, hiszen a példádon is látható hogy először 1-től 6-ig kell egy sorszámot visszadni, majd után 1 és 3 és végül 1 és 5 között kell nekünk egy szám.Na erre a problémára ezt a képletet alkottam:
ELŐJEL(INT((SOR()-1)/DARAB($E:$E)))+ELŐJEL(INT((SOR()-1)/DARAB($E:$F)))+ELŐJEL(INT((SOR()-1)/DARAB($E:$G)))Hozzáteszem, hogy természetesen van egyszerűbb változat is (HA függvények egymásba ágyazása), de annak bővíthetősége nehézkes.
A fenti képlet valójában 3x ugyanaz, nézzük egy példán:
ELŐJEL(INT((SOR()-1)/DARAB($E:$F)))A függvény 3 értéket adhat vissza (-1;0;1) attól függően, hogy az éppen vizsgált sor száma (SOR függvény) az E:F tartományban lévő számokat tartalmazó cellák számánál több-e vagy kevesebb vagy egyenlő.
Konkrétan: ha az 5-ös sorban vagyunk, akkor 0-t fogunk kapni (=(5-1)/9), ami azt jelenti hogy az E:F oszlopokból elég választanunk cellát, mivel abban 9 van de nekünk ebből a 9-ből csak az 5 kell.
Ha a 14-es sorban vagyunk akkor pedig 1 lesz, az érték ami azt jelenti hogy nem az E:F oszlopokban van a keresett cella.A 3 db előjeles képlet csak a DARAB függvény paraméterében változik, az elsőben csak az E-oszlopokat nézzük, a másodikban már az E:F oszlopokat és a harmadikban már az E:G oszlopokat. Mindegyik rész 0-t vagy 1-et fog visszadni a fentiek szerint, de példánál maradva az első 6 sorra 0-t kapunk, 7-9-es sorokra 1-et, 10-14-es sorokra 2-öt, felette pedig 3-at.
Ezzel a függvénnyel a neheze már meg is van, de nézzük meg a többit.
Kezdem a B-oszlophoz tartozóval, mert ez az egyszerűbb.
Itt semmi más nem kell mint az E1:G1 tartományból kiírni vagy az első vagy a második vagy a harmadik értéket. A kulcs függvényünk pont erre lett kifejlesztve, így a képlet gyorsan meg is van:=INDEX($E$1:$G$1;ELŐJEL(INT((SOR()-1)/DARAB($E:$E)))+ELŐJEL(INT((SOR()-1)/DARAB($E:$F)))+ELŐJEL(INT((SOR()-1)/DARAB($E:$G)))+1)
A C-oszlophoz ugyanez a logika kell csak ott E2:G2 tartományból kell kivenni az értéket, a képlet csak ebben változik.
Az A-oszlop ezek után már könnyedebb dolog lesz, de itt az a gond hogy eleinte E-oszlopból kell érték, majd F-ből és később G-ből. Itt az a megoldásom, hogy a VÁLASZT függvényt használjuk. Amelynek a szintaxisa: VÁLASZT(index szám;érték1;érték2.....).
Egy példán keresztül: VÁLASZT(2;"Férfi";"Nő";"Ismeretlen") eredménye "Nő" lesz mivel a második értéket kértük vissza a függvénytől.
A kulcs függvényünk pont egy sorszámot ad vissza - valójában egyet hozzá kell adnom, mert a tömb nem a nulladik hanem az első elemmel indul -, vagyis először E:E oszlop kell nekünk, majd Fés végül G:G. Ezek alapján a
VÁLASZT(ELŐJEL(INT((SOR()-1)/DARAB($E:$E)))+ELŐJEL(INT((SOR()-1)/DARAB($E:$F)))+ELŐJEL(INT((SOR()-1)/DARAB($E:$G)))+1;E:E;F:F;G:G)
attól függően, hogy melyik sorban vagyunk E:E; Fvagy G:G-t fog visszadni, amit az INDEX függvényben azonnal fel is tudunk használni.
Az INDEX-nek azonban kell egy sorszám hogy hanyadik értéket kell a bemeneti tartományból visszadni. Erre kell egy újabb képlet. Itt a DARABHATÖBB-et használtam (Excel 2007 alatt SZORZATÖSSZEG segít).
Egyszerűen megszámolom az aktuális sorban hogy mellette a B és C-oszlopban szereplő értékek hányszor szerepeltek. A példára visszatérve pl. az első sorban az "a" és a "b" először szerepel, így E-oszlopból az első szám kell, a 4-ik sorban pedig már 4x szerepel így 4. szám kell az E-oszlopból.
A képlet így néz ki: DARABHATÖBB(B$1:B1;B1;C$1:C1;C1)
Itt fontos, hogy mindegyik esetben a tartomány első fele fixen van rögzítve a második pedig fut!Megis vagyunk mert tudjuk a tartományt és hogy hanyadikelem - itt kettőt hozzáadtam mert az első kettőt figyelmen kívül kell hagynunk - kell belőle. A képlet vagyis ez lesz:
INDEX(VÁLASZT(ELŐJEL(INT((SOR()-1)/DARAB($E:$E)))+ELŐJEL(INT((SOR()-1)/DARAB($E:$F)))+ELŐJEL(INT((SOR()-1)/DARAB($E:$G)))+1;E:E;F:F;G:G);DARABHATÖBB(B$1:B1;B1;C$1:C1;C1)+2)Ezzel vége is, persze egy kis HAHIBA függvénnyel kozmetikáztam.
üdv.
-
Mutt
senior tag
válasz
alfa20 #19053 üzenetére
Szia,
Nem jó képletet használsz, FKERES-el nem fog menni.
H3-ban ez a képlet legyen (csak 100 sort néz a képlet):
=SZORZATÖSSZEG(--($B$3:$B$100=F3);--($C$3:$C$100=G3);$D$3:$D$100)Vagy ez a CSE függvény:
{=INDEX($D$3:$D$100;HOL.VAN(F3&G3;$B$3:$B$100&$C$3:$C$100;0))}Vagy simán KERES-el:
=KERES(2;1/($B$3:$B$100=F3)/($C$3:$C$100=G3);$D$3:$D$100)üdv.
-
Mutt
senior tag
válasz
dudikpal #19052 üzenetére
Hello,
A lenti példára ezt a képletet tudom javasolni:
=HAHIBA(INDEX($A$1:$A$14;ÖSSZESÍT(15;6;SOR($B$1:$B$14)/(($B$1:$B$14=E$1)*($C$1:$C$14=E$2));SOROK($E$3:$E3)));"")Az alábbi elven megy:
A képlet magja a ($B$1:$B$14=E$1)*($C$1:$C$14=E$2) rész, amely a B és C-oszlopokban lévő értékeket hasonlítja össze E1 és E2-ben lévő fix értékkel, és IGAZ vagy HAMIS értékeket add vissza ott ahol vagy van vagy nincs találat. Ha logikai változókat szorzunk össze, akkor pedig 1 és 0 lesz az érték Excelben. "a" és "b" értékre keresve tehát ezt kapjuk vissza: {1;1;1;1;1;1;0;0;0;0;0;0;0;0}
Ezek alapján tudjuk hogy mely esetekben vannak találatok, most már csak a helyük kérdéses. Ehhez jön a képbe a SOR($B$1:$B$14) rész, ez ugye ilyet ad vissza alapból: {1;2;3;4;5;6;7;8;9;10;11;12;13;14}
Ha ezt elosztjuk azzal az eredménnyel, amellyet korábban megkaptunk - amely megmondja hogy hol van a feltételeknek megfelelő egyezés - akkor kapunk egy olyan halmazt amelyben számok (1-el való osztás eredményeként) és hibák (0-val való osztás) lesznek. A SOR($B$1:$B$14)/(($B$1:$B$14=E$1)*($C$1:$C$14=E$2)) eredménye ez lesz: {1;2;3;4;5;6;#ZÉRÓOSZTÓ!;#ZÉRÓOSZTÓ!;#ZÉRÓOSZTÓ!;#ZÉRÓOSZTÓ!;#ZÉRÓOSZTÓ!;#ZÉRÓOSZTÓ!;#ZÉRÓOSZTÓ!;#ZÉRÓOSZTÓ!}Most már tudjuk, hogy melyik sorban vannak a nekünk szükséges értékek már csak sorban ki kell venni őket. Erre a KICSI(halmaz;hanyadik elem) függvény az ideális, de az csak akkor műkődik ha a halmaz nem tartalmaz hibát, nekünk pedig van egy csomó #ZÉRŐOSZTÓ! hibánk benne így ez nem járható (CSE-vel megoldható lenne). Az ÖSSZESÍT egy olyan függvény, amely képes "meghívni" egyéb függvényeket és kezeli a hibákat is. Az ÖSSZESÍT(15;6;halmaz;hanyadik elem) ugyanaz mint a KICSI(halmaz; hanyadik elem) és közben kezeli a hibákat (az első paraméter a 15-ös jelenti a KICSI-t, a második pedig hibakezelést).
Már csak azt kell megadnunk, hogy sorban az első, második, harmadik stb. elemet adja vissza a képlet.
Ilyet sokféleképpen lehet előállítani, én gyakran ezt használom: SOROK(induló cella fixen;futó cella).
Példánkban: SOROK($E$3:$E3), ez 1-et fog visszaadni, de ha lemásoljuk akkor már SOROK($E$3:$E4) lesz belőle és 2-es lesz az értéke.Ezek alapján az ÖSSZESÍT képlet teljesen így néz ki: ÖSSZESÍT(15;6;SOR($B$1:$B$14)/(($B$1:$B$14=E$1)*($C$1:$C$14=E$2));SOROK($E$3:$E3))) és az eredménye 1-es lesz mivel pont az első találat kell nekünk, amely az első sorban van.
Meg van a sorszám már csak ki kell iratni, ehhez az INDEX(tömb;sorszám) képletet lehet használni.
A végén egy HAHIBA függvénybe zárva az egészet eltüntethetűk az esetleges hibák.üdv.
-
Mutt
senior tag
válasz
alfa20 #19042 üzenetére
Hello,
Több feltételes keresésre az alábbi megoldások műkődnek (A és B-oszlopokban a kulcsmezők, C-ben pedig a visszatérési érték:
1. SZORZATÖSSZEG (SUMPRODUCT).
Ha számot akarsz visszakapni, akkor az alábbi formátumban tudod használni.
=SZORZATÖSSZEG(--(A:A=feltetel1);--(B:B=feltétel2);C:C)Ha szöveget, akkor pedig használd így:
=INDEX(C:C;SZORZATÖSSZEG((A:A=feltetel1)*(B:B=feltetel2)*SOR(C:C)))2. KERES (LOOKUP)
=KERES(2;1/(A:A=feltetel1)/(B:B=feltetel2);C:C)3. HOL.VAN (MATCH)
Ez egy tömb függvény, vagyis kapcsos zárójelek nélkül kell bevinni és a bevitel végén Ctrl+Shift+Enter-t kell nyomni.
{=INDEX(C:C;HOL.VAN(feltetel1&feltetel2;A:A&B:B;0))}üdv.
-
Mutt
senior tag
válasz
moklys1 #19023 üzenetére
Hello,
Irányított kijelölés -> Csak a látható cellák opció kell neked, majd Ctrl-C és az új helyen Ctrl-V.
Az irányított kijelölés ablak elérhető így:
- F5 majd bal alul kattints az Irányított gombra
- Excel 2007/2010-ben Kezdőlap -> Keresés és Kijelölés gomb -> Irányított kijelőlés
- Gyorsbillentyű: Alt, Ő, FR, Nüdv
-
Mutt
senior tag
válasz
Pityke78 #19013 üzenetére
Hello,
Ha a számok csak 1000 és 1 millió közötiek, akkor ez a számformátum megteszi:
[$$-409]#\,##0Viszont ha más számokkal is kell dolgozni, akkor ez nem lesz jó.
Megoldás lehet a Windows területi beállításának módosítása vagy Excelben a File->Beállítások->Speciális részben átállítani a tizedes és ezres elválasztókat.Ezek után a pénzügyi formátumot kell használnod.
üdv
-
Mutt
senior tag
válasz
Pityke78 #19009 üzenetére
Hello,
A 2013-as verzióban hogy tudom ezt bekapcsolni, illetve megfelelő függvényt beírni?
Amikor a kimutatást készíted, akkor tudod bekapcsolni. A lenti videon 2:18-nál látszik az opció és után mutatja be a használatát.
http://www.youtube.com/watch?v=vxYF9lT3inwA másik megoldásnál ha a városok nincsenek sorba rendezve, hanem mondjuk többször előjön egy-egy város név, akkor nem fogja újra újként értelmezni és 1-est írni a cellába?
Nem fog bezavarni ha nincs sorba rendezve, a megoldás használható rendezett és rendezetlen listán is.
A lényeg, hogy a függvényben hogy mindig csak az aktuális sorig nézi meg, hogy többször van-e a vizsgált érték. Gyakori hiba hogy csipőből az egész tartomány megadják, de itt fontos hogy csak az épen vizsgált sorig menjen a tartomány.üdv.
-
Mutt
senior tag
válasz
Pityke78 #19007 üzenetére
Hello,
A 4/18/2013 formátumból hogy tudok 2013.04.18-at csinálni?
Ha szövegként van, akkor szövegfüggvényekkel tudod kiszedni.
Az év a szöveg utolsó 4 karaktere: =JOBB(A1;4)
A hónap a szöveg elején az első perjelig van: =BAL(A1;SZÖVEG.KERES("/";A1)-1)
A napok pedig a szövegben a két perjel között van: =KÖZÉP(A1;SZÖVEG.KERES("/";A1)+1;HOSSZ(A1)-SZÖVEG.KERES("/";A1)-5)Ezt a három értéket a DÁTUM függvénnyel tudod összerakni:
=DÁTUM(JOBB(A1;4);BAL(A1;SZÖVEG.KERES("/";A1)-1);KÖZÉP(A1;SZÖVEG.KERES("/";A1)+1;HOSSZ(A1)-SZÖVEG.KERES("/";A1)-5))üdv.
-
Mutt
senior tag
válasz
Pityke78 #19004 üzenetére
Hello,
...kimutatásban hogy tudom azt kiíratni, hogy az adott oszlopban, hány különböző érték van?...
Excel 2013-ban a Kimutatásban ha be van kapcsolva az Adatmodel opció, akkor lehet egyedi értékeket számoltatni (count unique records).
Korábbi verziókban pedig a táblázatba kell felvenned egy új oszlopot és benne a DARABTELI függvényt használni.
Mutatom egy példán:Itt a városok ismétlődnek, de ha tudni akarom hogy hány van, akkor D2-be kell ez:
=HA(DARABTELI($A$2:A2;A2)=1;1;"")Ha lehúzod, akkor amikor először találja meg a várost akkor egy 1-est ír ki, minden más esetben üresen hagyja a mezőt. A függvény azt nézi, hogy addig a sorig hányszor szerepel a kérdéses város.
A második sorig (fejléccel együtt számolom) még csak egyszer lesz Budapest, de a harmadik sorban már 2x így ott már mivel duplikáció nem ír ki egyest a függvény.A végén pedig már csak az egyeseket kell összeadni a kimutatásban.
üdv.
-
Mutt
senior tag
válasz
Pityke78 #19003 üzenetére
Hello,
...év.hó.nap formátumban van, azt hogyan tudom úgy átalakítani, hogy csak év.negyedév formátum legyen?
Több megoldás is van (A1-ben van az eredeti dátum):
=ÉV(A1)&VÁLASZT(HÓNAP(A1);"Q1";"Q1";"Q1";"Q2";"Q2";"Q2";"Q3";"Q3";"Q3";"Q4";"Q4";"Q4").Itt a VÁLASZT függvény a hónap sorszámának megfelelő pozicíóban lévő eredményt (Q1 v. Q2 v. Q3-at) adja vissza.
Vagy máshogy::
=ÉV(A1)&"Q"&INT((HÓNAP(A1)-1)/3)+1üdv.
-
Mutt
senior tag
Hello,
...én csak a számot írom be, de mögé íródik hogy "perc" "mm" stb?A cella formátum beállító ablakban (gyorsbillentyű Ctrl+1) Egyéni formátumot kell megadnod.
Általánosságban ez a formátum műkődhet: Normál "perc"Ami fontos, hogy Excelben az idő valójában egy 1-nél kisebb szám (pl. 0,25 az 6 óra 0 percet jelent), 1-nél nagyobb szám napként viselkedik. A 36-ot dátumfüggvényekben napként fogja értelmezni ezért osztani kell 1440-el ha percként kell számolni vele, vagy 86400-as ha másodpercként.
üdv.
-
Mutt
senior tag
válasz
nova001 #18973 üzenetére
Hello,
...akarok egy lenyiló listát amibe abc sorrendbe vannak a nevek és ha elkezdek gépelni kidobja a javaslatot ?? vagy valami ehhez hasonlo...
Ha fontos, hogy gépeléskor már feljöjjön a javaslat, akkor csakis ActiveX combobox-al oldható meg a feladat.
VBA-val megoldható, hogy dinamikus tartományból ABC sorrendben legyen feltöltve a combobox.Ha elég hogy egy legördülő listából válasszon a felhasználó, akkor viszont az Adatérvényesítés is működik.
Ehhez az eredményhez kell pár előkészület:
1. Javasolt dinamikus tartományokat létrehozni, hogy a képletek rövidebbek legyen és kezeljék az újonnan bevitt adatokat.
A példámban 3 db dinamikus tartományt definiáltam.
Az első a bementi listát adja vissza, neve EredetiLista.
Képlete: =ELTOLÁS(Munka1!$B$2;0;0;DARAB2(Munka1!$B:$B)-1)
A második a bemeneti lista ABC sorrendjét adja vissza, neve ABCSorrend.
Képlete: =ELTOLÁS(Munka1!$C$2;0;0;DARAB2(Munka1!$B:$B)-1)
A harmadik pedig a végeredményt, ABC sorrendben az egyedi értékeket mutatja, neve: ABCLista
Képlete: =ELTOLÁS(Munka1!$D$2;0;0;DARABTELI(Munka1!$D:$D;">""")-1)2. Ezek után kezdhetjük az ABC sorba rendezést, ehhez a DARABTELI függvény használható.
A képlet ennyi: DARABTELI(bemeneti tartomany;"<"&vizsgált cella).
Ez megmondja hogy a vizsgált cella hanyadik a tartományban ABC sorrend szerint. pl. 2 azt fogja jelenti, hogy van előtte 2 találat.
A C2-es cellába ez a képlet menjen: =MAX(DARABTELI(EredetiLista;"<"&EredetiLista))
Ezt a képletet jó sokszor le kell másolni, hogy minden elem biztosan le legyen ellenőrzíve.3. A C-oszlopban tehát visszakapjuk a sorrendet, de mivel az eredeti listában is lehet ismétlődés ezért a sorrendben is lesznek azonos értékek. Ezért mielőtt megkeressük a legkisebb sorszámot ezt a listát ismétlődés mentessé kell tenni. Ehhez a Gyakoriság függvény használható fel többek között, a megoldásban a ABCSorrend/(GYAKORISÁG(ABCSorrend;ABCSorrend)>0) állítja elő a kívánt eredményt.
Megvan az egyedi sorrend, így már csak sorban ki kell olvasni növekvő értékben a számokat, Ez tipikusan a KICSI függvénnyel oldható meg. A megoldásomban az ÖSSZESÍT függvény paraméterezésével hívtam meg a KICSI függvényt, ennek az az előnye, hogy a hibás adatokat az ÖSSZESÍT függvény ki tudja automatikusan hagyni nem kell plusz képleteket beírnom.
Végre tehát megvan a sorrend, vagyis {0;1;2;3;4;5}. Innen már könnyen csak ki kell iratnom azt a cégnevet amely a 0 mellett található a B oszlopban. Ehhez az INDEX függvényt és a HOL.VAN-t használtam.
A fentiek alapján állt elő ez a hosszú képlet a D2-es cellában:
=HAHIBA(INDEX(EredetiLista;HOL.VAN(ÖSSZESÍT(15;6;ABCSorrend/(GYAKORISÁG(ABCSorrend;ABCSorrend)>0);SOROK(D$2:D2));ABCSorrend;0));"")
Ezt is jó sokat le kell másolni a D-oszlopban.Készen is vagyunk, már csak egy adatérvényesítést kell megadnunk az egyik cellára, a listának a ABCLista függvényt használva.
A fentiek egyrésze Mike Girvin ötletén alapul!
üdv
-
Mutt
senior tag
Egy másik helyen hangzott el a kérés, de szerintem itt is hasznos lehet ennek az egyik megoldása:
Azt hogyan lehetne szerintetek megoldani, hogy egy legördülő listából ki lehessen választani, hogy jóváhagyva vagy megtagadva de csak akkor ha egy "kódot" ami sima szám egy cellába beír.
Pl A1-ben a legördülő lista "Jóváhagy/Megtagad" de csak akkor lehet rányomni bármelyikre is ha a B cellába beírja, hogy 20130917
Adatérvényesítésnél Lista típust használva és forrásnak ezt a képletet megadva ez megoldható:
=HA(SZÁM(B1);ELTOLÁS(D1;0;0;DARAB2(D:D));)A D1 cellában a Jóváhagy, D2-ben pedig a Megtagad szöveg legyen.
-
Mutt
senior tag
válasz
gaben1117 #18986 üzenetére
Hello,
A http://www.vbaexpress.com/kb/getarticle.php?kb_id=139 oldalon található makró Word-höz van.
Nekem rendesen megy is ott.
A lényeg, hogy ne Excelben használd, hanem vagy beleteszed Normal.dotm-be vagy a körlevél eredményébe és szépen szakasztörésenként sorszámozva új fájl készít.üdv.
-
Mutt
senior tag
válasz
hallgat #18980 üzenetére
Hello,
A megoldásom egy másik módszert használ, az eredeti lapból csak a hasznos (ahol a cella nem üres vagy 0) adatokat átemeli egy másik lapra (a neve output, de lent állíthatod ezt).
Egyszerre 3 sor hasznos adatát egy tömbben tárolja. A sor végén pedig kiíratja a másik lapra a tömböt. Utána 3 sorral feljebb megy és azon is végig megy és kiír.
Nekem 11-16 másodperc alatt lefut egy 1422x190-es táblán, remélem nálad is rendben fog menni.
Kommenteltem, hogy könnyen javítható legyen.Sub Torol3asaval()
Dim arrEredmeny() 'dinamikus tömb az értékek tárolásához
Const LastRow As Integer = 1422 'utolsósor
Const LastColumn As Integer = 190 'utolsóoszlop
Dim vRow As Long 'változó a vizsgált sorok nyomonkövetéséhez
Dim vColumn As Long 'változó a vizsgált oszlopok nyomonkövetéséhez
Dim vHits As Long 'változó a soronként a feltételeknek megfelelő eredményekhez
Dim i As Long
Dim vStartTime
Dim wsOutput As Worksheet
Const wsName As String = "output" 'ide tesszük az eredményt
Dim wsActiveSheet As String
'nézzük meg mennyi idő alatt fut le
vStartTime = Time
'elmentjük az eredeti lapot
wsActiveSheet = ActiveSheet.Name
'megnézzük hogy van-e a keresett névvel munkalap a füzetben
For i = 1 To Sheets.Count
If Sheets(i).Name = wsName Then vHits = 1
Next i
'ha nincs akkor létrehozzuk a lapot, különben megnyitjuk
If vHits <> 1 Then
Set wsOutput = Sheets.Add
wsOutput.Name = wsName
Else
Set wsOutput = Sheets(wsName)
wsOutput.Cells.Clear
End If
'visszamegyünk az eredti lapra
Sheets(wsActiveSheet).Activate
'kikapcsoljuk a képernyő frissítést hogy gyorsabb legyen
Application.ScreenUpdating = False
'utolsó sortól elindulunk vissza
For vRow = LastRow To 1 Step -3
'töröljük a tömb tartalmát
Erase arrEredmeny
'ide gyűjtük hogy hány oszlop van ahol nem üres vagy 0 van az utolsó sorban
vHits = 0
'végig megyünk a sor oszlopain
For vColumn = 1 To LastColumn
'ha az érték nem üres vagy nulla akkor egy tömbbe elmentjük a sor és feletti 2 értéket
If Cells(vRow, vColumn).Value <> 0 And Cells(vRow, vColumn).Value <> "" Then
'növeljük a sikeres találatok számlálóját
vHits = vHits + 1
'átméretezzük a tömböt hogy új találatokat is tudjon tárolni
ReDim Preserve arrEredmeny(1 To 3, 1 To vHits)
arrEredmeny(1, vHits) = Cells(vRow - 2, vColumn).Value
arrEredmeny(2, vHits) = Cells(vRow - 1, vColumn).Value
arrEredmeny(3, vHits) = Cells(vRow, vColumn).Value
End If
Next vColumn
'kiírjuk a találatokat, ha van mit
If vHits Then
'az első 3 sor elé újabb 3 sort szúrunk be
wsOutput.Rows("1:3").Insert Shift:=xlDown
For i = 1 To vHits
With wsOutput
'az első 3 sorba beírjuk a korábbi találatokat
.Cells(1, i) = arrEredmeny(1, i)
.Cells(2, i) = arrEredmeny(2, i)
.Cells(3, i) = arrEredmeny(3, i)
End With
Next i
End If
Next vRow
'visszakapcsoljuk a frissítést
Application.ScreenUpdating = True
Debug.Print "Futási idő: " & Format(Time - vStartTime, "s") & " sec"
End Subüdv
-
Mutt
senior tag
Hello,
...miért áll meg a debug a Range("B21:B" & usor). Select sornál....
Az egyik probléma, hogy az usor-t rosszul határozod meg.
A .Range("B21:B" & Rows.Count).End(xlDown).Row + 1 azt mondja, hogy menjen el az utolsó sorba és használja a következőt, az utolsó után már nincs sor.Ha a B21 után használt utolsó cella sora kell, akkor xlDown helyett xlUp-ot használj.
A másik probléma itt, hogy a .Range("B21:B" & Rows.Count).End nem jó, mivel azt csinálod hogy B21:B1048576-os tartományt kijelölöd, a kurzor továbbra is B21-ben van, de nyomsz egy END-et vagyis elugorsz végre B1048576-re. Ez így felesleges, egy lépésben csináld: Range("B" & Rows.Count).End
A kódban a Selectek miatt nem lehet követni, hogy éppen hova akarsz dolgozni. Valójában az aktív lapod nem változik, maradsz a beolvas-on, ezért javaslom, hogy rendesen írd ki, hogy éppen hol akarsz módosítani.
pl. Range("B21:B" & usor).Select helyett
ThisWorkbook.Sheets(lapnev).Range("B21:B" & usor).SelectVégül pedig lehet pár dolgot egylépésben is csinálni.
Range("D2").Select
Selection.Copyhelyette:
Range("D2").CopyVagy a végén:
Sheets("beolvas").Select
Range("A2").Select
Selection.Clearhelyette:
Sheets("beolvas").Range("A2").ClearItt van a javított változat:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim usor As Long
Dim lapnev As String
If Range("A2") <> Empty And Range("A4") = "OK" Then
Range("D2").Copy
lapnev = Range("F2")
Sheets(lapnev).Select
usor = ThisWorkbook.Sheets(lapnev).Range("B" & Rows.Count).End(xlUp).Row + 1
ThisWorkbook.Sheets(lapnev).Range("B21:B" & usor).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("beolvas").Range("A2").Clear
End If
End Subüdv
-
Mutt
senior tag
válasz
magyor #18894 üzenetére
Hello,
..hol lehet beállítani, hogy a munkalap 1 048 576 sor, 16 384 oszlop méretű legyen
Excel 2007-től bevezetett xlsx (illetve xlsb, xlsm, stb) formátumban már ez az alapértelmezett maximális sor és oszlopszám. Ha egy régebbi formátumban van a fájlod, akkor a fájlt megnyitva Excel 2010-ben is marad a 65k sor és 256 oszlop limited. Mentés másként opcióval új formátumba mentve eltüntethetők a korlátozások....lehetséges-e az adott intervallumon (65536-1 048 576) belül egy tetszés szerinti sorérték beállítása?
Alapértelmezettként nem tudod beállítani, de fájlonként és munkalaponként a ScrollArea értékkel tudod korlátozni a használható területet (makróban/grafikus elemekkel ezen területen túl is tudsz mozogni).Jobb klikk a munkalapon, majd Kód megjelenítése opcióval elindul a VBA szerkesztő. Bal oldalt alul a Properties ablakon belül a ScrollArea-hoz kell beírnod az engedélyezett tartományt. Ha nincs properties ablakod, akkor F4-el megjelenik. Pár példa:
$A$1:$E$500 első 500 sor és 5 oszlopba lehet írni
$D:$D csak a D-oszlop használható
$1:$100 csak az első 100 sor használhatóüdv
-
Mutt
senior tag
válasz
3.Aragorn #18887 üzenetére
Hello,
Azt szeretném, ha sz 5. oszlopot mellőzné, de ezt soha nem teszi meg - a 6. oszlop értékéhez azonnal hozzáadja az 5. oszlopba beírt értéket, amint beírtam..
2010-ben itt van a beállítás, 2007-ben is a közelében lehet
File -> Beállítások -> Nyelvi ellenőrzés -> Automatikus javítási beállítások -> Automatikus formázás beíráskor -> Képletek kitöltése a táblázatokban a számított oszlopok létrehozásáhozInnentől nincs automatikus képletkitöltés táblázatokban, a magad ura leszel.
üdv
-
Mutt
senior tag
Tegnap került fel Mike Girvin Youtube csatornájára egy nagyon részletes video, amelyben alapoktól kezdve egészen haladó szintig összefoglalja az Excel odaillő funkcióit. A majd 3 órás video megtekinthető itt: http://www.youtube.com/watch?v=kNaxTNSAtLk
Témakörökve van bontva, ezeket a video alatt a Show more-ra kattintva lehet látni és akár odaugrani az oktató videoban.
FKERES (VLOOKUP) és KIMUTATÁS (PIVOT) részt merem ajánlani kezdőknek is.
-
Mutt
senior tag
Hello,
A makrók futtatásához csökkentsem a biztonsági szintet.
Excel 2003-ban az Eszközök->Makrók->Bizonság alatt tudod kiválasztani az alapértelmezett szintet, közepesre állítva megnyitáskor fogod tudni engedélyezni.
Excel 2007 vagy felett pedig a Fájl -> Beállítások -> Adatvédelmi központ -> Adatvédelmi központ beállítások -> Makróbeállítások alatt teheted meg.
üdv.
-
Mutt
senior tag
válasz
terencehIII #18866 üzenetére
Hello,
Valaki tud valami oldalt ahol találnék részletes leírást arról hogy kell ilyen rekord felvételes makrót csinálni?
Kezdésnek érdemes az Excel makrórögzítőjét használni, és a kapott kódot értelmezni.
A VBA megismeréséhez azonban javasolt könyvet beszerezni, vagy ilyen irányú oldalakat, fórumokat böngészni.
Én ezeket tudom javasolni.Fórumokra ezt, az indexest vagy angolul Ozgrid, Mr.Excelt tudom javasolni.
Ha vhol elakadsz, akkor tudunk segíteni.
Az általad linkelt példát elég gyorsan át tudod alakítani, mivel alapműveletek vannak csak benne.
üdv.
-
Mutt
senior tag
válasz
slashing #18868 üzenetére
Hello,
Beletettem a munkabeosztásos fájlodba, hogy csak a segédtáblában feltüntetett neveket írja ki a munkabeosztásos oldalra. A fájl innen tölthető le.
Az eredeti képleteid a az első 9 sorban meghagytam, az én képleteim a 10. sortól kezdve vannak. Célszerű jó sokszor lemásolni őket, én csak a 45. sorig tettem meg.
A nevek kiíratására megoldás az alábbi:
- a Segédtáblák lapra a 15-ös sortól kezdve lehet írni a dolgozó nevét, a műszakot, a munkarendet és a hónapot amelyre ezen adatok vonatkoznak. pl. "Béla A 8 13. jan" - jelenti, hogy Béla idén januárban 8 órás rendben A-műszakban dolgozott. Fontos, hogy egy dolgozó 1 hónapban csak 1 beosztással rendelkezzen, illetve mindenkinek egyedi neve legyen.
- a fent definiált munkarendre tettem 3 dinamikus tartományt, hogy a képleteket ne kelljen módosítanod, ha bővíted ahogy töltöd a beosztásokat. A tartományok: dolgozok - tartalmazza a dolgozók nevét, beosztás - 8 v. 12 órás rendet adja meg, lista - a felsorolt hónapokat.
- a Műszakbeosztas lapon az A-C oszlopokba ezen tartományok segítségével íratom ki a neveket.
Az egyesített cellák miatt csak fordított beviteli sorrendben tudom kiírni őket, de szerintem ez nem zavaró.
A képletek többnyire a SZORZATÖSSZEG függvényt használják, amely képes CSE függvényeket normál függvényként kezelni. Itt az összehasonlítások miatt CSE függvény kell, vagy egy sokadik segédtábla.A fájlod többi részében is egyszerűsítettem. A lényeg, hogy a sok HA vizsgálatba könnyen be lehet kavarodni. Pl. a DE helyett 6:00, DU helyett 14:00 és ÉJ helyett 22:00-t kiíratására és nem egymásba ágyazott HA-kat használtam, hanem egy FKERES-t (a ségédtáblán az AB:AC oszlopokban van, hogy mire kell lefordítani az eredeti szöveget).
A másik egyszerűsítés, hogy a távozik esetén egyszerűen csak hozzáadtam a 8 v. 12 órát az érkezikhez.Még egyedi számformátumot is tettem a C oszlopra, ahol 8 v. 12 van számkánt, így lehet számításokban is használni. A formátuma Normál "órás", így úgy jelenik meg mint ahogy C4-ben te is irtad.
üdv.
-
Mutt
senior tag
válasz
slashing #18862 üzenetére
Hello,
A kijelölt helyre kéne beolvasni a segédtáblák-ból az adatokat és ahány nevet írok oda annyival mindig bővülne az a sor...
Ez könnyedén megoldható, egyszerűen hivatkozni kell a cellában a segédtábla mezőjére.
pl. A4-be mehet ez =Segedtabla!A2A zavaró nullákkat pedig egy eyedi számformátummal el lehet tüntetni:
[<>0]Normál;[=0]"";Normál;NormálAz E4-E6-ban lévő függvényeket pedig fel kell készíteni, hogy csak akkor adjanak eredményt, ha A4-C4 mezőkbe van érték. Ehhez egy HA függvény kell.
Ami a képleteket nehezíti az az összevont cellák az A-C oszlopokban, a gond hogy E4 és E5-ben lévő függvények az A4-C4-ből veszik az adatokat. Ezt INDIREKT függvénnyel lehet kezelni.
Felraktam ide egy példát, ahol egyedi számformátumokkal, sok INDIREKT hivatkozással és egy beosztás számítással látható a végeredmény.
Amennyit tudsz ossz meg velünk a fájlból és próbálunk segíteni.
Ha még egy szűrőt is rá lehetne dobni az A3 B3 C3-ra az nagyon jó lenne.
A filterezést az összevonások miatt felejtsd el.üdv
-
Mutt
senior tag
válasz
ADAM1337 #18838 üzenetére
Hello,
Valamilyen más karakter is lesz a cellákban. Ha az E17-es cellára állsz, majd Képletek->Képletkiértékelő funkciót elindítod, akkor vizuálisan láthatod, hogy min akad meg. Hátha az mond vmit.
Ha fel tudod tölteni a fájlt vhova, akkor könnyebben megtalálhatjuk a hibát.
üdv.
-
Mutt
senior tag
válasz
ADAM1337 #18830 üzenetére
Hello,
...$24.12 és ezt kéne a mellette lévőbe 1,2-vel..
A HELYETTE (SUBSTITUTE) függvényt tudod használni. Feltételezem, hogy ezres elválasztó is lesz a számokban, ezért 3 csere kell neked:
1. $ jelet a semmire cserélni: =HELYETTE(A1;"$";"")
2. Az ezres elválasztót (,) semmire cserélni: =HELYETTE(A1;",";"")
3. A tizedespontot vesszőre cserélni: =HELYETTE(A1;".";",")A 3 képlet egybeágyazva és 1,2-vel szorozva így néz ki:
=HELYETTE(HELYETTE(HELYETTE(A1;"$";"");",";"");".";",")*1,2üdv.
-
Mutt
senior tag
válasz
terencehIII #18824 üzenetére
-
Mutt
senior tag
válasz
kőbaltazár #18827 üzenetére
Hello,
Ahogy korábban írtam a dátumformátumot a CELLA függvénnyel tudod ellenőrizni:
=VAGY(CELLA("forma";A5)={"D1";"D2";"D3";"D4"})Azonban ez nem megbízható, mivel a függvény csak teljes munkalap/vagy érintett cella újraszámoláskor frissül, továbbá neked itt egy hivatkozás lesz másik cellára.
Javaslom, hogy amit korábban írtam abból vmelyik megoldást használd.
Ha számolni is akarsz a B-oszlopban lévőkkel, akkor viszont a "20 db" beírása sem lesz jó, elég csak 20-at beírni és formázni, hogy a db-ot tegye mögé. A "----" bevitel is kerülendő, ez is csak formázás legyen.
A cella formátumát erre állítsd kézzel: [<>0]Normál "db";[=0]"----";Normál
üdv
-
Mutt
senior tag
Sziasztok,
Az előbbi dátumos bejegyzésben említettem, de ti is tudjátok, hogy az Excel 1900-tól számolja az eltelt napokat.
Ez megnehezíti, hogy korábbi dátumokkal számoljunk. Amit ilyenkor tehetünk hogy a dátum évéhez 2000-et adunk, számolunk és az eredmény évéből 2000-t levonunk és szövegként jelenítjük meg. Természetes ezzel a trükkel csak 1582-ig van értelme visszamenni, mert azóta van a Gregórián-naptár.Hadd mutassak be egy mintát, ami mindenkit érint, és Excelben simán nem számolható.
Az adóazonosító jelünk tartalmazza a születési dátumunkat!
Az 1. számjegy mindig 8-as szám, mely az adóalany magánszemély voltára utal.
A 2-6. számjegyek a személy születési időpontja és az 1867. január 1. között eltelt napok száma.
A többi pedig egyedi sorszám és ellenőrző kód.Legyen az adóazonosító például ez: 8432109991
Vagyis az illető 43210 nappal 1867 után született, az Excel viszont ezt nem tudja jól kiszámolni.
=DÁTUM(1867;1;1)+43210Viszont az alábbi képlettel, már jók vagyunk:
=CSERE(SZÖVEG(DÁTUM(3867;1;1)+KÖZÉP(A1;2;5);"éééé.hh.nn");1;4;SZÖVEG(DÁTUM(3867;1;1)+KÖZÉP(A1;2;5);"éééé")-2000)A képlet nem 1867-hez, hanem 3867-hez adja a napok számát, majd szövegformátumba teszi ("3985.04.22") és az évszámokat lecseréli 2000-rel kevesebbre.
Aki akarja számolja ki, hogy melyik az az utolsó születésnap, amikor ez a formátumú adójel még kiadható!
Aki pedig könnyebben akar számolni, annak javaslom az Extended Date Functions ingyenes addin-t.
üdv.
-
Mutt
senior tag
válasz
kőbaltazár #18811 üzenetére
Hello,
Milyen képletet kellene beírni ... hogyha az A5 cellában dátum van, akkor...
A feladat nem egyszerű, mert az Excelben a dátumok valójában formázott számok.
Méghozzá 1900. január 1-e (állítható 1904-re is) óta eltelt napok száma, ha szám nem egész, akkor a pedig még az időpont is meghatározható.A fentiek alapján tehát a racionális számok pozitív hamaza dátum is lehet egyben, sőt trükkel negatív számok is lehetnek azok (ilyenkor a 1900 előtti dátumokról van szó).
Erre a képlet:
=ÉS(SZÁM(A5);A5>=0)Másik megoldás lehet, hogy a CELLA típusát ellenőrzöd (nem megbízható módszer):
=VAGY(CELLA("forma";A5)={"D1";"D2";"D3";"D4"})[/MHa szűkíthető, hogy milyen dátumot (pl. csak ideit vagy jövőben lévőt) engedsz, akkor a MA() függvényt lehet segítségül hívni:
csak idei dátumM)=ÉS(A5>=DÁTUM(ÉV(MA());1;1);A5<=DÁTUM(ÉV(MA());12;31))(/M)
csak holnaptól év végéig: (M)=ÉS(A5>=DÁTUM(ÉV(MA()+1);HÓNAP(MA()+1);NAP(MA()+1));A5<=DÁTUM(ÉV(MA());12;31))(/M)A fentiek alapjána B5-be ez is elég lehet:
(M)=HA(ÉS(SZÁM(A5);A5>=0);"20 db";"----")(/M)üdv
-
Mutt
senior tag
válasz
kőbaltazár #18779 üzenetére
Hello,
A többiek megoldása mellett itt vannak ez én változataim a D41-es cellára:
=DARABTELI(D22:D37;"<>T. F")
=SZORZATÖSSZEG(--(D22:D37<>"T. F"))Vagy CSE képlettel:
{=SZUM(--(D22:D37<>"T. F"))}Végül elvetemülten:
=SZORZATÖSSZEG(--(SZÁM(KÓD(HELYETTE(D22:D37;"T. F";)))))üdv.
-
Mutt
senior tag
válasz
föccer #18749 üzenetére
Hello,
Nem az én találmányom, de más már megcsinálta hogy az Excel által rajzolt görbét közelítő számítással reprodukálja. Feltettem ide a te estedre módosított mintát.
Az erdeti itt található.
A lényeg, hogy egy UDF-el próbálja meg kiszámolni a görbére illeszkedő pontokat. A második fülön javítottam a lépésközön (a felbontáson) így már elég közeli értéket tudsz kapni. A füzetben leírtam, hogy a képlet hogyan használható, fontos hogy CSE képlet tehát ha módosítód akkor Control-Shift-Enter-t kell nyomnod.
Ami fontos, hogy nem érdemes a pontosságot nagyon fokozni, mivel az eredmény nem lesz pontosabb, hiszen
az Excel is csak saccolja.üdv.
-
Mutt
senior tag
-
Mutt
senior tag
-
Mutt
senior tag
Hello,
Azert nem megy, mert nem tombkepletkent vitted be. Kapcsos zarojel nelkul masold be a cellaba a kepletet majd nyomj Ctrl+Shift+Entert, igy lesz CSE keplet belole es az Excel kapcsos zarojelekkel fogja megjeleniteni.
Elonye, hogy kompatibilis a tobbi Excellel, nincs makro. Hatranya hogy lassabb mint egy sima keplet, de tovabbra is gyorsabb mint egy makro, vagy udf.
Ha szerkeszted akkor se felejts el Ctrl+Shift+Entert nyomni.Udv
-
Mutt
senior tag
Hello,
...feldarabolni a / jeleknél, és a tömb utolsó eleme kell...
A Munka1 lapon lévő A1 cellában lévő szövegből adja vissza az utolsó "/" utáni szövegrészt. CSE képlet!
{=KÖZÉP(Munka1!A1;MAX((KÖZÉP(Munka1!A1;SOR(INDIREKT("1:"&HOSSZ(Munka1!A1)));1)="/")*SOR(INDIREKT("1:"&HOSSZ(Munka1!A1))))+1;6^6)}
Az alábbiak szerint működik:
1. A KÖZÉP(Munka1!A1;SOR(INDIREKT("1:"&HOSSZ(Munka1!A1)));1) rész a szöveget 1 betüs tömbre bontja. Az eredmény ez lesz:
={"h";"t";"t";"p";":";"/";"/";"w";"w";"w";".";"n";"o";"m";"a";"d";"s";"p";"o";"r";"t";".";"e";"u";"/";"/";"u";"p";"l";"o";"a";"d";"/";"t";"e";"r";"m";"e";"k";"/";"k";"e";"p";"e";"k";"/";"b";"i";"g";"/";"_";"0";"/";"5";"8";"4";"3";"/";"5";"6";"8";"9";"8";"/";"e";"s";"b";"i";"t";"-";"g";"y";"u";"j";"t";"o";"k";"o";"c";"k";"a";".";"j";"p";"g"}2. Majd megnézzük hogy ez mikor azonos "/"-el. Az eredmény ez:
={HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;IGAZ;IGAZ;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;IGAZ;IGAZ;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;IGAZ;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;IGAZ;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;IGAZ;HAMIS;HAMIS;HAMIS;IGAZ;HAMIS;HAMIS;IGAZ;HAMIS;HAMIS;HAMIS;HAMIS;IGAZ;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;IGAZ;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS;HAMIS}3. Ezt szorozzuk a pozicíónak megfelelő számmal (vagyis 1, 2, 3 stb). Ez lesz:
={0;0;0;0;0;6;7;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;25;26;0;0;0;0;0;0;33;0;0;0;0;0;0;40;0;0;0;0;0;46;0;0;0;50;0;0;53;0;0;0;0;58;0;0;0;0;0;64;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0}4. Kikeressük a maximumot és hozzáadunk egyet.
5. A kapott pozicíótól a maradék részt kiíratjuk. =KÖZÉP(Munka1!A1;65;6^6)Ha érdekel akkor kapsz egy saját függvényt is.
Használata egyszerű: =szovegresz(Munka1!A1;"/";2^12)
Első paraméter a vizsgálandó cella, a második az elválasztó jel, a harmadik a kért rész (jó nagy számot megadva az utolsó részt kapod).Function szovegresz(bemenet As Range, Optional elvalaszto As String = " ", Optional resz As Integer)
'az elvalaszto ha nincs megadva akkor szóközként értelmezzük
Dim arraySplit
Dim vFelsoMeret As Long
'szétszedjük a szöveget az elválasztójel alapján
arraySplit = Split(bemenet, elvalaszto)
'megnézzük hogy hányrészre szedhető
vFelsoMeret = UBound(arraySplit)
'ha az utolsó utáni darabot kérik, akkor is az utolsót adjuk
If resz >= vFelsoMeret + 1 Then
szovegresz = arraySplit(vFelsoMeret)
End If
'ha a legelső darab előtti kell, akkor is az elsőt adjuk vissza
If resz <= 0 Then
szovegresz = arraySplit(0)
End If
'megadjuk a kért részt
If resz > 0 And resz < vFelsoMeret Then
szovegresz = arraySplit(resz - 1)
End If
End Functionüdv
-
-
Mutt
senior tag
Hello,
...Egy egész sort kijelölve másolás, majd másolt cellák beszúrása parancsra nem csinál semmit, villan egyet az ablak, de nem szúrja be a sort...
Csak egy cellát másolva is ugyanez történik?
Három tippem lenne:
1. Van benne makró, amely a beillesztést "blokkolja".
Ha .xlsx-ként lemented akkor makrómentes lesz, kérdés hogy ekkor is így viselkedik?
2. A sorok, ahova beillesztesz el vannak rejtve/vagy egy autoszűrövel épp nem láthatók.
Bal oldalt a sorok számozásánál nincs kimaradás a számozásban?
3. File -> Beállítások -> Speciális-> Beállítások megjelenítése ehhez a .... részben vmi elállítódott.
3+1. Virtuális gép vagy távoli asztal program zavarhat be, állítsd le ha ilyen fut a háttérben.üdv
-
Mutt
senior tag
válasz
nimmy001 #18660 üzenetére
Hello,
..hozzá lehet rendelni excel makróhoz olyan billentyűparancsot, ami egyébként az excelben alapból foglalt?
Igen, hozzá lehet rendelni.
Fejlesztőeszközök -> Makrók -> Egyebek alatt lehet a már rögzítettekhez rendelni.Valamint az Application.OnKey módszerrel. Bővebben itt olvashatsz róla.
üdv.
-
Mutt
senior tag
válasz
kvoaksz #18659 üzenetére
Hello,
...ha csoportosítok oszlopokat, de le szeretném védeni (lapvédelem) ..., akkor nem engedi használni a +, - jelet azaz a csoportosítás nem működik, van erre megoldás?
Csak makróval tudod ezt megoldani:
Private Sub Workbook_Open()
With Worksheets("minta")
.EnableOutlining = True
.Protect Password:="t1T0k", UserInterfaceOnly:=True
End With
End Subüdv
-
Mutt
senior tag
válasz
tzetko #18630 üzenetére
Hello,
Az Excelben makroval ki akarom kapcsolni az automatikus helyreálítást. Auto openbe be akarom rakni, ha megnyitom az Excelt akkor a korábbi (bal oldalt lévő) helyre állított fájlokat automatikusa törölje.
Csak egy munkafüzet esetén:
ActiveWorkbook.EnableAutoRecover = FalseMiért nem kapcsolod ki véglegesen? File->Beállítások->Mentés->Automatikus helyreállítás.. pipa ki.
VBA-ban:
Application.AutoRecover.Enabled = Falsehttp://support.microsoft.com/kb/289273
üdv
-
Mutt
senior tag
válasz
Kal-El #18584 üzenetére
Hello,
A mintád alapján, ha a D-oszlopban pozitív szám van, akkor az E-ben a csapat zöld, tehát nyert. Ha negatív, akkor pedig vesztett és piros. Ezen logika alapján a DARABHATÖBB függvény használható N82 és O82 cellákban:
=DARABHATÖBB($F:$F;$M82;$G:$G;$P82;$D:$D;">0")+DARABHATÖBB($G:$G;$M82;$F:$F;$P82;$I:$I;">0")
=DARABHATÖBB($F:$F;$M82;$G:$G;$P82;$D:$D;"<0")+DARABHATÖBB($G:$G;$M82;$F:$F;$P82;$I:$I;"<0")Színeket csak saját függvényekben (UDF) tudnál használni.
üdv.
-
Mutt
senior tag
Hello,
...a másolás védelem csak a munkafüzet egy lapjára vonatkozzon....
A lapnak ezt a kódot add meg:
Private Sub Worksheet_Activate()
With Application
.CutCopyMode = False
.CellDragAndDrop = False
End With
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
MsgBox "Right click menu deactivated." & vbCrLf & _
"Cannot copy or ''drag & drop''.", 16, "For this file:"
End Sub
Private Sub Worksheet_Deactivate()
With Application
.CellDragAndDrop = True
.OnKey "^c"
.CutCopyMode = False
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CutCopyMode = False
End Subüdv
-
Mutt
senior tag
Hello,
Olyan védelemmel el lehet látni munkalapot vagy akár cellákat, hogy azokba beleírni lehessen, de másolni , másik cellából ne lehessen bele. Vagy ... a formátuma ne változzon a cellának.
Igazi megoldást nem fogok tudni adni, ámbár itt van egy megoldás, amely a másolás-beillesztést blokkolja, de ettől még a formátum simán módosítható.
Amit viszont tudok javasolni, hogy ne a végeredménybe, amely már meg van formázva vigye be a felhasználó az adatokat hanem egy "hátsó" táblába. Tehát legyen egy "számolós, módosítható" tábla és ebből készüljön egy kimenet, amely függvényeket használva formázva megjeleníti az infót.
Ez a kimenet legyen zárolva, és akkor a formátumod mindig okés lesz.
Chandoo 4-es tippje 13 perc-től.
üdv.
-
Mutt
senior tag
válasz
Hequila #18565 üzenetére
Hello,
...ha egy adott oszlop adott mezőjének értéke 0, akkor automatikusan törlődjön az az oszlop...
Itt egy változat erre. Mintában az "A2"-es cellát figyelem.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vHely As Range
Dim vPosition As String
Set vHely = Range("A2") 'ezt a helyet figyeljük, ezt javítsd
If Range(vHely.Address) <> "" And Range(vHely.Address) = 0 Then 'ha nem üres, de 0 akkor mehet a tőrlés
Application.ScreenUpdating = False 'képernyő frissítés kikapcsol
vPosition = Target.Address 'elmentjük a korábbi pozicíónkat
Columns(vHely.Column).Delete 'töröljük a figyelt cella oszlopát
Range(vPosition).Activate 'visszamegyünk az eredeti helyre
Application.ScreenUpdating = True 'képernyő visszaállítása
End If
End Subüdv.
-
Mutt
senior tag
válasz
Kal-El #18530 üzenetére
Hello,
Caipi által javasolt SZUMHA a legegyszerűbb erre, igaz hogy 6x kell használnod, de könnyen érttelmezhető és javítható:
=SZUMHA(E:E;M1;B:B)+SZUMHA(E:E;M1;C:C)+SZUMHA(E:E;M1;D:D)+SZUMHA(H:H;M1;I:I)+SZUMHA(H:H;M1;J:J)+SZUMHA(H:H;M1;K:K)Egy rövidebb, de lassabb megoldás pedig szorzatösszeggel:
=SZORZATÖSSZEG(--(E:E=M3);B:B+C:C+D:D)+SZORZATÖSSZEG(--(H:H=M3);I:I+J:J+K:K)üdv.
-
Mutt
senior tag
válasz
Badb0y #18522 üzenetére
Hello,
...elmentek egy másik excel táblából legenerált táblázatot csv-be, az ő helyére kérdőjelet tesz...
Próbáld meg Unicode-os szövegként menteni, amely egy tabulátorral elválasztott csv.
Más megoldás pedig makró használata, 2007-től ez használható. Unicode CSV Addin
üdv.
-
Mutt
senior tag
Hello,
...ha egy fehér munkalapon az egyik cella színét megváltoztatom (pl:sárgára) akkor egy másik munkalapon lévő hivatkozás ne az eredeti értéket vegye alapul, hanem egy előre beállított értéket. (pl: sárga esetén =SZ)
Delila_1 megoldása mellett én is csináltam egy változatot.
Ahogy már olvastad cella színére nincs alapból esemény, ezért valós időben megfogni nem lehet.
Azt választottam, hogy egy ún. volatile függvényt írtam, amely akkor is frissül, ha az érintett cellában nincs változás. Ez azt jelenti, hogy ha vhol módosítasz akkor máris frissül az eredmény.
Az UDF használata:
=ColorDecode(vizsgalando cella;színkód1;eredmény1;színkód2;eredmény2;....)Ahol a színkód pl. fekete, sárga, piros stb. Az eredmény lehet szöveg, másik cella, képlet. Ha nincs találat, akkor az eredei cellát adja vissza.
pl. =ColorDecode(A2;"fekete";-100;"piros";2*2;"zöld";"Z+")
Vagyis ha az A2 színe fekete akkor -100-t ír, ha zöld akkor "Z+"t, sárga esetén pedig az A2 cella értékét.Itt a kód, amelyet te is tudsz bővíteni, csak a színeket és a hozzájuk tartozó kódokat kell felsorolnod. Ezt megkapod, ha csak egy paramétert használsz, pl. ColorDecode(A2)
Function ColorDecode(original As Range, ParamArray contents()) As Variant
Const ColorNum As Integer = 10 'ha 10-nél több szín formázást akarunk
Const ColorNames As String = "FEKETE,SÖTÉTVÖRÖS,PIROS,NARANCS,SÁRGA,VILÁGOSZÖLD,ZÖLD,KÉK,SÖTÉTKÉK,LILA"
Const ColorCodes As String = "0,192,255,49407,65535,5296274,5287936,15773696,6299648,10498160"
Dim vOriginalColor As Long
Dim arrayColors(1 To 2, 1 To 10) 'itt is a 10 javítani, ha fent átírod
Dim i As Integer
Dim s1, s2
Dim blnColorMatch As Boolean
Dim strMatch As String
Dim blnInputMatch As Boolean
'fusson le minden újraszámláláskor
Application.Volatile
'visszadjuk az eredeti értéket, ha nem találunk mást
ColorDecode = original
'az eredeti cella színét megnézzük
vOriginalColor = original.Interior.Color
Select Case UBound(contents)
'ha nincs paraméter akkor kiírjuk a színkódot
Case -1
ColorDecode = "Cella színkódja: " & vOriginalColor
'több paraméter esetén visszatér a megadott értékkel, ha tud
Case Else
'feltöltjük az ismert kódokat tömbbe
s1 = Split(ColorCodes, ",")
s2 = Split(ColorNames, ",")
For i = 1 To ColorNum
arrayColors(1, i) = s1(i - 1)
arrayColors(2, i) = s2(i - 1)
Next i
'megkeressük, hogy ezt a színt ismerjük-e
i = 0
blnColorMatch = False
Do
i = i + 1
If arrayColors(1, i) = vOriginalColor Then
blnColorMatch = True
strMatch = arrayColors(2, i)
End If
Loop Until blnColorMatch Or i = ColorNum
'ha a színt ismerjük, akkor megnézzük, hogy adtak-e rá paramétert
If blnColorMatch Then
blnInputMatch = False
i = 0
Do
'ha megtaláljuk, akkor a kövekező bemeneti paramétert írjuk ki
If strMatch = UCase(contents(i)) Then
ColorDecode = contents(i + 1)
blnInputMatch = True
End If
i = i + 2
Loop Until blnInputMatch Or i > UBound(contents)
End If
End Select
End FunctionBővítésnél a kód elején adj meg egy nevet, majd alatta a kódját. Ha 10-nél több kombinációd van akkor az első konstanst is emeld meg és a Dim arrayColors(1 To 2, 1 To 10) sorban is javítsd a 10-es számot.
üdv.
-
Mutt
senior tag
Hello,
Ugynevezett S1O1 (R1C1) hivatkozas lett bekapcsolva, amikor az oszlopok is sorszamozva vannak a betus elnevezesek helyett. Ez Microsoft talalmany, hogy a 70-80-as evekben a konkurenciatol elusson, de a felhasznaloknak nem jott, ezert ki-bekapcsolhato.
Ofice gomb -> Excel Beallitasok -> Kepletek -> pipa ki az S1O1 hivatkozasi stilusbol.Udv
-
Mutt
senior tag
válasz
magyor #18506 üzenetére
Hello,
... vállalat eladásait írjuk a D2 : R2 vektorba, egymás után. A B2 cella tartalmazza a kedvezmény mértékét. ... az A2 képletébe mindig a vektorba legutoljára beírt értéknek kell kerülnie ...
Ha a D2
2 tartomanyban szigoruan egymas utan toltve vannak a cellak pozitiv szamokkal, akkor egyszeruen csak meg kell szamolnod a kitoltott cellakat es vagy INDEX, ELTOLAS vagy INDIREKT fuggveny mukodik:
=INDEX(D2:R2;0;DARAB(D2:R2))*B2
=ELTOLÁS(D2;0;DARAB(D2:R2)-1)*B2
=INDIREKT("S2O"&DARAB(D2:R2)+3;0)Ha viszont vannak lyukak vagy nullak a tartomanyban akkor CSE fuggveny, vagy SZORZATÖSSZEG fuggvennyel megy csak:
=INDEX(D2:R2;0;SZORZATÖSSZEG(MAX((D2:R2>0)*OSZLOP(D2:R2)))-3)*B2
{=INDEX(D2:R2;0;MAX(HA(D2:R2>0;OSZLOP(D2:R2);0))-3)*B2}udv
-
Mutt
senior tag
válasz
macilaci78 #18464 üzenetére
Hello,
Ha 20 oszloponkent uj sorbol akarod kezdeni, akkor ez fog mukodni:
=INDIRECT("Sheet1!R"&COLUMN()&"C"&ROW();0)
A kepletet az A1:D20 tartomanyba masold be.Ha pedig csak egy oszlopba akarod a listat, de 20 oszloponkent az elso lap ujabb sorabol induljon, akkor ezt hasznald:
=INDIRECT("Sheet1!R"&INT((ROW()-1)/20)+1&"C"&MOD(ROW()-1;20)+1;0)Udv
Új hozzászólás Aktív témák
Hirdetés
- Tablet felvásárlás! Samsung Galaxy Tab S10+, Samsung Galaxy Tab S10 Ultra, Samsung Galaxy Tab S10 FE
- DELL PowerEdge R640 rack szerver - 2xGold 6138 (20c/40t, 2.0/3.7GHz), 64GB RAM,4x1G, H730 1GB, áfás
- Samsung Galaxy Z Fold5 , 12/256 GB , Kártyafüggetlen
- Menő retró konfig: Q9550, Gigabyte P43, 4GB RAM, ASUS GT730,
- BESZÁMÍTÁS! Gigabyte B450M R5 5600X 16GB DDR4 512GB SSD RTX 3060 12GB Rampage SHIVA Seasonic 520W
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged