-
Fototrend
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
Fferi50
őstag
válasz slashing #22401 üzenetére
Szia!
Most láttam a képletedet. Ha 2010-es exceled van, akkor majdnem fele ennyiből megúszhatod a HAHIBA függvény alkalmazásával:
=HAHIBA(BAL(FKERES(W3;Táblázat2;6;0);SZÖVEG.KERES(";";FKERES(W3;Táblázat2;6;0))-1);HAHIBA(BAL(FKERES(W3;Táblázat2;6;0);SZÖVEG.KERES("-";FKERES(W3;Táblázat2;6;0))-1);FKERES(W3;Táblázat2;6))) & " " & HAHIBA(BAL(FKERES(W3;Táblázat2;8;0);SZÖVEG.KERES(";";FKERES(W3;Táblázat2;8;0))-1);HAHIBA(BAL(FKERES(W3;Táblázat2;8;0);SZÖVEG.KERES("-";FKERES(W3;Táblázat2;8;0))-1);FKERES(W3;Táblázat2;8)))Üdv.
-
Fferi50
őstag
válasz alfa20 #22464 üzenetére
Szia!
Két verzió lehet
az egyik, hogy Global változónak declarálod a fajl1 változót a modul elején (Global fajl1 as string), de lehet Public fajl1 as string és akkor a másik modulban a modulnév.fajl1 módon hivatkozhatsz rá.
a másik, a vizsgal makrót így alkotod meg:
sub vizsgal (byval fajlnev as string)
msgbox fajlnev ' szándékosan nem fajl1, hogy lásd a különbséget
end sub
A meghívása pedig vizsgal fajl1Üdv.
-
Fferi50
őstag
válasz alfa20 #22467 üzenetére
Szia!
A global változót a modul elején kell definiálni nem pedig az eljárásban!
Modul elején (declarations részben) Global fajl1 as string
Így a Sub -ban már nem kell újra deklarálni.A második sub-ban is teljesen félreértettél. Ha Global a definíció, akkor nem kell a zárójeles paraméter, a global hivatkozás pedig pláne nem.
(Nem nézted meg a példám....)Összekeverted a két verziót....
Tehát
vagy:
Global fajl1 as string
sub egyik()
fajl1=activeworkbook.name
end subsub masik()
msgbox fajl1
kódok
end subvagy:
sub egyik()
dim fajl1 as string
fajl1=activeworkbook.name
masik fajl1
end subsub masik(byval fajlnev as string)
msgbox fajlnev
kódok
end subÜdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz TomTeke2 #22477 üzenetére
Szia!
A Listfillrange tartományt egyenlőségjellel kell bevinni: =daten!$E$3:$E$246
Ezután elvileg ha beírsz egy helyes értéket az A9 cellába, akkor annak meg kellene jelennie a vezérlőben, illetve fordítva, ha kiválasztasz egy értéket a vezérlőben, akkor annak az A9 cellába "illik" kerülni.
Üdv.
-
Fferi50
őstag
-
Fferi50
őstag
válasz DrojDtroll #22487 üzenetére
Szia!
Feltételes formázás kijelölése képlettel. A képletbe pedig beírod azt a cellát, amelyiknek az értékét szeretnéd figyelni:
pl. =c1>2,
A hatóköre pedig az a1 cella.De! figyelj az abszolut és relatív hivatkozásokra (dollár jel vagy anélkül nem mindegy).
Üdv.
-
Fferi50
őstag
válasz samfishR #22530 üzenetére
Szia!
Ezt többféleképpen is elkerülheted:
1. megvizsgálod, hogy az osztó 0-e, ha igen, akkor nem osztasz, hanem beírod a 0 értéket: pl.
=ha(A2=0;0;A1/A2)
2. használod a hahiba függvényt (Excel 2010 -től): =hahiba(A1/A2;0)
3. ha még nincs, akkor a ha és a hibás függvény kombinálása: =ha(hibás(A1/A2);0;A1/A2)Üdv.
-
Fferi50
őstag
válasz Bobrooney #22542 üzenetére
Szia!
Excel 2007-től működik az adatok ismétlődések eltávolítása.
Ennek felhasználásával:
Átmásolod az eredeti listádat egy új helyre - ahonnan majd használni szeretnéd.
Utána az új helyen adatok - ismétlődések eltávolítása menüpont használata.
Makróban pl.
ActiveSheet.Range.("Y11200").RemoveDuplicates columns:=1 header:=xlYes vagy xlNo attól függően, hogy van-e fejléc.
Előtte pedig Application.DisplayAlerts=False
Utána: Application.DisplayAlerts=True
Ez a két sor arra kell, hogy ne "üzengessen", hány adatot távolított el.Üdv.
-
Fferi50
őstag
válasz Bobrooney #22548 üzenetére
Szia!
Makróba foglalva így nézne ki:
sub egyedi()
Dim usor as Long, tomb()
usor = Range("F" & Rows.Count).End(xlUp).Row
Range("F1:F" & usor).copy range("Z1")
Application.DisplayAlerts=False
Range("Z1:Z" & usor).RemoveDuplicates Columns:=1, Header:=xlYes
Application.DisplayAlerts=True
tomb = Application.Transpose(Range("Z2:Z" & usor))Üdv.
-
-
Fferi50
őstag
válasz botond187 #22569 üzenetére
Szia!
Csinálsz egy táblázatot, amely a hozzárendeléseket tartalmazza:
Yoszlop Z oszlop
030502 130
010905 167
........ ......
stb. stb.Amelyik oszlopba a tipust akarod tenni, abban az oszlopban fkeres képletet használhatsz:
Ha mondjuk a példádnál maradunk, akkor a képlet:
a cikkszám az A oszlopban van, a képletet teheted a B oszlopba:
=fkeres(közép(A1;3;6);Y1:Z20;2;0)Az Y1:Z20 az a tartomány, amelybe a megfeleltetési táblázatot beírtad.
Üdv.
-
Fferi50
őstag
Szia!
Vagy csinálsz egy Userformot arra egy Textboxot és abban bekéred a jelszót a mentés máskénthez, itt azt is meg tudod oldani, hogy a beütött jelszót ne írja ki. (Passwordchar property).
vagy van az Application.Inputbox metódus vagy az Inputbox függvény - mind a a kettő használható - és ott bekéred a jelszót, ha megfelel, akkor megy tovább a mentés másként, ha nem, megszakítod. Itt nem tudod a jelszót más karakterekkel megjeleníteni.
Az inputbox-ról a help segít.
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz littleNorbi #22577 üzenetére
Szia!
Képlettel fkeres lehet a barátod, DE ehhez kell egy "főlap" és mindehol erre kell a képletnek hivatkoznia.
Úgy képzelem, hogy a főlapon van egy oszlop, ahol a dolgozók nevei vannak (és az azonosítójuk is még egy másik oszlopban) , mellettük levő oszlopban pedig a belépés dátuma. Ide beírod a változást.A többi lapon a képlet:
=fkeres( dolgozó név; főlapon levő tartomány; 2; 0)Az oszlopszám (2) attól függ, hogy csak név alapján keresel, vagy azonosító alapján és az van az A oszlopban, Ez utóbbi esetben az oszlopszám 3.
Pl: = fkeres( A2;főlap!A1120;2;0)
Ezt a képletet minden egyes lapon a kívánt oszlopon "végighúzod".
Ha a főlapon megváltozik a dátum, ezzel együtt minden másik lapon is megváltozik.
VISZONT: Sehol máshol ne változtass dátumot, mert az nem hat más lapokra, sőt a képlet is elvész abban a cellában.
Üdv.
-
Fferi50
őstag
válasz littleNorbi #22581 üzenetére
Szia!
Itt a képlet:
=FKERES(Sheet2!A2;Sheet1!$A$2:$B$10;2;0)
Az előbb rossz helyre válaszoltam.
Üdv.
-
Fferi50
őstag
válasz littleNorbi #22586 üzenetére
Szia!
De, működik, csak légy szíves a cella formátumot dátumra állítani!
Üdv.
-
Fferi50
őstag
válasz PistiSan #22587 üzenetére
Szia!
Szerintem külső hivatkozást direktbe nem tud lenyíló listába tenni.
Viszont azzal megpróbálkozhatsz, hogy a listád elemeit veszed a külső hivatkozásból.Erre gondolok: A1 képlete =külsőhivatkozás cella1
A2 képlete =külsőhivatkozás cella2A lenyíló lista forrása: =munkalap! A1:A2
Ennek szerintem működnie kellene.
Üdv.
-
Fferi50
őstag
válasz PistiSan #22592 üzenetére
Szia!
Kicsit keresgélj az excel helpben a többdimenziós hivatkozásokra:
='C:\Utvonal\[Munkafüzetnév]Munka3'!$D$2A fentiek szerint kell a képletet összeállítani.
Próbáld úgy, hogy először egymás mellett nyitva van a két munkafüzet és létrehozod a hivatkozást.
Utána, ha bezárod a forrás fájlt, akkor megláthatod a teljes névvel való hivatkozást.
Üdv.
-
Fferi50
őstag
válasz maugly #22591 üzenetére
Szia!
Ha saját magad kreálod a filet, olyan elválasztó karaktert teszel bele, amilyet szeretnél.
Ez egy kicsit bonyolultabb annál, hogy itt kapásból leírjam, de azért gyorsan megoldható.
A direkt fájlkezelési eszközöket (open, put,print ) kell használnod.Ha felteszel egy mintát, szívesen írok hozzá egy példát.
Üdv.
-
Fferi50
őstag
válasz foregister #22595 üzenetére
Szia!
A mintád alapján én a hol.van függvény kereső mátrixát a tipusérték utolsó karakterétől tenném függővé:
=index("F:F";hol.van(A3; Választ(jobb(A3;1);"G:G";"H:H";"I:I";"J:J");0))
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz foregister #22599 üzenetére
Szia!
Hát igen, így jár aki siet.
A képletet idézőjelek nélkül kell beírnod és akkor működik!
Nem is értem, miért írtam az idézőjeleket (talán azért, mert a makróban meg kellenek....)
Viszont az excel tud két irányban keresni, két hol.van (egyik a sorra, másik az oszlopra) együttes alkalmazásával az index függvényben.
Üdv és bocs.
[ Szerkesztve ]
-
Fferi50
őstag
-
Fferi50
őstag
válasz Delila_1 #22635 üzenetére
Szia!
Semmi gond.
Viszont a Clearcontents helyett a Delete kell, mert különben odatesz a végére néhány vesszőt (mert a usedrange-ban benne vannak azok a cellák is és értékük üres).
A végén még be is kellene zárni a CSV fájlt, az eredetit pedig nem szabad menteni.Én ennél egy kicsit - na jó sokkal - bonyolultabban képzeltem el a megoldást.
Üdv.
-
Fferi50
őstag
-
Fferi50
őstag
válasz Vladek83 #22649 üzenetére
Szia!
Mit szeretnél?
Ha a combobox listáját szeretnéd frissíteni, azt a rowsource tulajdonság átírásával tudod.
combobox1.rowsource="Munka1!A1:A5"
Ha változik a forrás akkor az egyenlőségjel után az új forrástartomány címét írod.
A forrás átírását ahhoz az eseményhez kell rendelned, amelyik megváltoztatja (frissíti) az adatokat.Üdv.
-
Fferi50
őstag
válasz Gabcsika #22685 üzenetére
Szia!
Nos, ha az A1-be írod az értéket, akkor miért a B2 cella értékét vizsgálod a feltételekben?
Másrészt a képlet (most B2-vel) =HA(B2<50;840;HA(B2<100;560;HA(B2<150;280;HA(B2<200;0;""))))
mivel az előző ha már kiváltja a kisebb vizsgálatot, elég a következőnél a felső határt nézni.
Üdv.
-
Fferi50
őstag
válasz D@reeo #22704 üzenetére
Szia!
Az ugyan nem megy, hogy magában a cellában keresd és cseréld ki - csak makróval lehet ilyet tenni -, de máshova a következő képlettel működik:
=helyette(A1;karakter(10);"")
ahol A1 cellában van a szöveg. De még egyszer, ezt egy másik cellába kell megadni.
Én praktikusan azt szoktam ilyenkor, hogy beszúrok egy munkalapot és a beszúrt munkalapon adom meg a képletet az eredeti munkalap azonos cellájára hivatkozva:A1 cella képlete =helyette(Munka1!A1;karakter(10);"")
ezt a képletet pedig ebben a formában végighúzhatod a sorokon-oszlopokon.A cellaformázásban a sortöréssel több sorba ne legyen bekapcsolva vagy vedd ki utólag.
Utána természetesen a képletet átváltoztatom értékké. Másolás - irányított beillesztés - érték.
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz tgumis #22749 üzenetére
Szia!
Ha pontos egyezést keresel, akkor nem kell sorbarendezni Fkeres számára és a Hol.van számára sem, csak akkor kell a sorbarendezés, ha kisebb-nagyobb keresést szeretnél.
Ezért szerintem az előző hozzászólás szerinti képletben a HAMIS kell az fkeres utolsó paraméteréhez és nem IGAZ.
Üdv.
-
Fferi50
őstag
válasz Mindless #22750 üzenetére
Szia!
A kérdést nem egészen értem, mert először X, 2X, 3X stb. forgalomról beszélsz, majd a későbbiekben azt írod, hogy fix Y értékkel már megy számolás, csak forgalomtól változó Y értékkel nem.
Jól értelmezem, hogy ez valami diszkont számítás?
Szerintem a forgalomtól változó értéket egy szép kis táblázattal lehet megadni, de egy kis csavarral:Egy cellába beviszed a forgalom összegét. Majd a táblázat első oszlopába képlettel beírod a 2X, 3X ..stb képletet az adott cellára hivatkozva (pl.=A1*2, =A1*3 ..stb.)
A táblázat második oszlopába beírod a hozzá tartozó %-os értékeket.
Ezután a táblázatban megkeresed az adott forgalomhoz tartozó %-os értéket pl. az index és hol.van függvényekkel, vagy fkeressel.De, ha lenne egy pici mintád, konkrétabban is tudnánk segíteni valószínűleg.
Üdv.
-
Fferi50
őstag
válasz Mindless #22756 üzenetére
Szia!
Feltöltöttem egy javaslatot:
http://data.hu/get/7936884/minta_adatok.xlsxElég bonyolult lett a képlet, mivel árrést kell benne számolni az összehasonlítás előtt, de azért érthető szerintem.
A sávos számításhoz az Fkeres függvényt használom.
Az alap a segéd C2 cellában van, ha ezt megváltoztatod, akkor a táblázatban a határértékek is megváltoznak, kivéve a felső határt, ahova egy "bazinagy" számot kell írni, hogy biztosan kisebb legyen minden előfordulási érték nála.Remélem, ilyesmire gondoltál.
Üdv.
-
Fferi50
őstag
válasz Mindless #22784 üzenetére
Szia!
Gyakorlatilag minden vevőtípusnak csinálhatsz külön táblát a bemutatott logika alapján, ami 3 oszlopból áll:
1. a számítási határ
2. a számítás kulcsa
3. az adott sáv alatti összegHa bizonyos szintig 0 kulcsot szeretnél alkalmazni, akkor annak a szintnek a felső határához is 0 értéket írj a 2. oszlopba és a következő szintnél kezdődik az értékkulcs.
A 3. oszlop azért fontos, mert egyszerre nem lehet több kulccsal számolni, csak ilyen fondorlatos módon lehet megoldani (azaz az addig sávokhoz tartozó értékeket kiszámoljuk - hiszen az már biztosan megvan, és a fölötte levő különbségnek számítjuk a sávba eső százalékát és azt hozzáadjuk). Ezért bonyolult a képlet.
Remélem, érthető volt.
Üdv.
-
Fferi50
őstag
válasz botond187 #22786 üzenetére
Szia!
Kell egy makrót írnod, ami végigmegy a cikkszámokon és az általad megadott cikkszám melletti cellába beírja a szintén általad definiált feltétel szerinti cikkszámokat:
Csak vázlatosan:for yy = 1 to 100
kieg=""
if cells(yy,1).value>="G-010100000" and cells(yy,1).value<="G-010100099" then
for xx= 2 to 100
if cells(xx,1).value>="G-010504000" and cells(xx,1).value<="G-010504099" then
if kieg="" then
kieg= cells(xx,1).value
else
kieg=kieg & elválasztó & cells(xx,1).value
endif
endif
next
end if
if kieg<>"" then cells(yy,2).value=kieg
nextA ciklusok vége az A oszlopban levő adatait mennyiségétől függ. Az elválasztó helyébe írd be azt a karaktert, amelyet elválasztóként szeretnél használni.
Ha a feltételeket megváltoztatod a makróban, akkor bármelyik cikkszám mellé tud írni bármilyen cikkszám verziót.Üdv.
-
Fferi50
őstag
válasz botond187 #22788 üzenetére
Szia!
Paraméterezheted is a makrót.
Csinálsz egy táblázatot, amelybe berakod egy-egy oszlopba a "főcikk" tól-ig cikkszámokat, a másik 2 oszlopba pedig a hozzátartozó "kiegészítő" cikkek tól-ig határait.
Ezután a makródnak azt kell megnéznie, hogy az adott cikkszám mely határok közé esik és onnan kivenni a hozzátartozó határértékeket.
Kicsit csúnya mert még egy for ciklus van benne, de most hirtelen nem jut jobb eszembe (pedig biztosan van).For xx= 1 to 200
cikkszam=cells(xx,1).value
kiegalso=""
kiegfelso=""
for zz=1 to főcikkfeltételszám
if cikkszam>=cells(zz,10).value and cikkszam<=cells(zz,11).value then
kiegalso=cells(zz,12).value
kiegfelso=cells(zz,13).value
exit for
endif
next
if kiegalso<>"" then
kieg=""
for yy=1 to 200
if cells(yy,1).value>=kiegalso and cells(yy,1).value<=kiegfelso then
if kieg="" then
kieg=cells(yy,1).value
else
kieg=kieg & elválasztó & cells(yy,1).value
endif
endif
next
if kieg<>"" then
cells(xx,2).value=kieg
endif
endif
nextA határokat tartalmazó táblázat a 10-12. oszlopban van. A ciklushatárokat igazítsd a feltöltött sorokhoz.
A belső yy-os ciklus elvileg indulhat xx -től egy (1) helyett, ha a kiegészítő termékek cikkszáma nagyobb, mint a főtermékeké és a cikkszámok sorba vannak rendezve. A működéshez ez nem szükséges, akkor marad az 1, mint cikluskezdő (hiszen lehet, hogy az első cikkszám nem főtermék, hanem kiegészítő).Üdv.
-
-
Fferi50
őstag
válasz botond187 #22794 üzenetére
Szia!
Tovább gondoltam a feladatod és úgy látom, a "segédtáblában" elég az egy oszlop a főtermékekre a következők szerint:
első cella értéke 0
második cella értéke a második termék alsó határa
harmadik cella értéke a harmadik termék alsó határa
Pl.Főtermék kieg alsó kieg felső
0 G-010504000 G-010504099
G-010100100 G-010504100 G-010504199
G-010100200 G-010504300 G-010504500Ekkor a makróban a kereséshez a vlookup függvényt kell használnod, így
set vankieg=application.vlookup(cells(1,1).value,segédtábla első oszlop,1,True)
if not vankieg is nothing then ' ekkor van találat
kiegalso=vankieg.offset(0,1).value
kiegfelso=vankieg.offset(0,2).value
jöhet a belső ciklus a termékkereséshez (nálam az yy-os)
endifA termék cikkszámainak és a segédtábla első oszlopának is emelkedő sorrendben kell lennie.
Az Fkeres ebben a formában azt a sort találja meg, amely még nem nagyobb a keresendő értéknél, ezért kell az első cellába 0, vagy bármilyen más - az első termékkör felső határánál kisebb!!! - érték.Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz Vladek83 #22826 üzenetére
Szia!
A listboxhoz kapcsolódó adatokat oszlopokba kellene rendezned (kvázi "rekordokat" kellene képezned).
Ezt vagy az adott munkalap átalakításával, vagy az adatok új területre másolásával érheted el.
Vagyis lenne egy terület/vagy munkalap, ahol az első sor a fejléc:
Tételszám, termék, stb.
A többi sorba pedig az eredeti munkalapon (munkafüzetben) alatta szereplő adatok kerülnek.Üdv.
-
Fferi50
őstag
válasz botond187 #22856 üzenetére
Szia!
Van az a feltételvizsgálat, ahol a T és U oszlophoz hasonlít a makró és ha benne van, akkor beteszi az értéket a B oszlopba.
Na ezt másold le annyiszor, ahányszor 2 oszloppal bővíted jobbra a feltételrendszert, majd cseréld ki benne a T és az U értékét /vagy oszlopszámát (most nem emlékszem végülis melyiket írta Delila és lusta voltam visszanézni, bocsi) a következő két oszlopra, ha benne van akkor fűzd hozzá az értéket a B oszlop meglevő értékéhez azzal az elválasztójellel (vessző,stb.) amivel el akarod választani egymástól.Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz botond187 #22861 üzenetére
Szia!
Amit írtam, azt ugyanabba a makróba kell beleírni, csak külön-külön sorokba, hiszen más-más a feltétel, vagyis a vizsgálat szempontja.
Ha csak egyet szeretnél, akkor az első találatot beírod a helyére és kilépsz az adott ciklusból. Majd a következő vizsgálatnál is hasonlóképpen. Ezzel a legelső találat kerül bele mindig a B oszlop cellájába. Ha mást szeretnél, akkor a találatokat is meg kell vizsgálni...,vagy előre eldöntöd, hogy hanyadik találatig menjen és akkor a találatokat kell számolni, amíg el nem érsz a kívánt értékig.Üdv.