Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
Egy évvel ezelőtt vadi új telepítésű XP-prof+ MS Office 2003-nál az excel akár üresen,akár egy fájlt megnyitva kb 3 perc alatt nyílt meg.Ez rohadt lassúnak tűnt,senki semmit nemtudott vele tenni.Le lett cserélve Office 2000-re és már jó is lett.Ezt sem értettem,de eddig így használtam,de most más dolog miatt muszály volt visszatenni a 2003-at.A hiba megint ugyanaz.
Egy másik munkalapon hivatkozom aaaa cellájára. Most ezen a 2-ik lapon képes-e a Keresés funkció megtalálni az aaaa-t? Nekem ugy dereng, valamikor képes volt. Vagy rosszul emlékszem?
meg tudja vki mondani, hogyan kell egy cellán belül "sortörést" állítani? két mondatot szeretnék egy cellán belül külön sorban szerepeltetni, és erre van is megoldás, csak nem ismerem.
de nem a space-szel feltöltős változatot preferálnám. :)))
Azt szeretném megkérdezni, hogy megoldható-e, hogy a cella formátumnál (egyedi, hhh.éé) ne magyarul jelenjen meg a hónap. Az a gyanúm, hogy ehhez az adott ország nevén kéne hogy legyen az excel.
Sok minden. Olvasd el, hogy mit ír az excel súgója a listáról. pl. lista segítségével egymástól függetlenül tudod szűrni a tartományokat egy munkalapon belül. Vagy: listában van beszúrási sor, ami az adatok bevitelék könyíti meg jelentősen. stb...
Nem tudom, VB2005-ben hogy megy, bár van egy sejtésem. Mindenesetre Excelben az a két lehetőség van, amit leírtam. Ezek közül az AddItem szerintem csak dinamikusan (run-time) működik. Ha azt akarod, hogy a ComboBox-od statikus (vagy fogalmazzunk úgy: "beépített") értékeket tartalmazzon, akkor egy munkalapon egy cellatartományban kell felsorolnod a listaelemeket, és a ComboBox.RowSource tulajdonságot beállítani tervezés módban.
1) kijelölsz egy tartományt egy munkalapon, azt feltöltöd értékekkel, aztán beállítod a ComboBox.RowSource tulajdonságot. Pl. For i = 2 to Worksheets.Count Sheets("Munka1").Range("A" & i) = Sheets(i).Name Next ComboBox1.RowSource = "Munka1!A2:A" & i
2) AddItem segítségével. Pl. For i = 2 to Worksheets.Count ComboBox1.AddItem = Sheets(i).Name Next
A kettő nem megy együtt. Ha AddItem-mel feltöltöd a listát, aztán beállítod a RowSource tulajdonságot, akkor felülírod a listát azzal, amire a RowSource tartomány hivatkozik. Ha előbb beállítod a RowSource tulajdonságot, aztán használsz AddItem metódust, hibaüzenetet kapsz.
Próbáld ki így: **** KÓD ******** Dim lista Dim szam
szam = Right$(Str(Range("A2").Value), Len(Str(Range("A2").Value) - 1)) lista = "E2:E" + m MsgBox lista UserForm3.ComboBox1.RowSource = lista UserForm3.ComboBox1.Text = "---Válasszon---" **** KÓD VÉGE ******** Nekem ilyenek jöttek ki, mint pl. "E2:E 5" és az a szóköz nem kellene oda. Azt kellene megtalálnod, miért van ott, és hogy lehet megszüntetni.
A kódot elnézve arra gondolok, hogy a "+ m" tulajdonképpen "+ szam" akar lenni, nem? Vagy mi az az "m"? Milyen típusú változó?
Olyan gondom van, hogy VBA (Office Excel alá)-ban szeretnék létrehozni a Combobox segítségével, legördithető listát. Sajnos nem találtam semmit erre. Amit találtam nem müködik, és nem tudom miért? Kéne egy kis segítség!! Me.Combobox1.AddItem " pelda" ilyen találtam, de nem jeleniti meg....
Nagyon köszönöm a gyors reagálást, de én csak most jutttam hálózathoz.
Elkészítettem az Excel munkafüzetet, melyben látszik, hogy miként, hová jutottam, mik a megoldandók, de nem tudom miként kell/lehet mellékletként file-t küldeni.
Átolvastam a Szabályzatot, a TechHelp-et, de nem vettem észre a leírást.
Hogyan lehet melléklet file-t küldeni, milyen menüpontokat kövessek?
Addig is, amíg file küldéshez jutok, mellékelek egy képernyő másolatot.
Az miért van hogy a ComboBox betölti a listát és ameddig ezen lista 8 vagy kevesebb elemből áll addig nincs baj, de ha már 9 akkor hiba (Could not set the RowSource property. Invalid Property value.)
Dim lista Dim szam
szam = Right$(Str(Range("A2").Value), Len(Str(Range("A2").Value) - 1)) lista = "E2:E" + m UserForm3.ComboBox1.RowSource = lista UserForm3.ComboBox1.Text = "---Válasszon---"
1) Ha egész típusú változóval szeretnél dolgozni, akkor mindig a Long típust válaszd. A Byte azért nem praktikus, mert túl kicsi, és mi van, ha 300-ig kell futtatni a ciklust? Egyébként pedig, a Windows a makró futtatásakor minden egész típust Long típusra konvertál, aztán utána vissza, és úgy adja vissza az eredményt az alkalmazásnak. Ezért egyéb egész típusok használata - bár általában nem észrevehetően - lassítja a kód futását. 2) A ListBox.List tulajdonságnak elvileg van sor- és oszlopindexe is. Ez alapján próbáld lekérdezni a többi adatot. 3) A Range("AI:CI").Select sor számomra teljesen feleslegesnek tűnik. A Select utasítás amúgy is általában felesleges, de ciklusban többször kijelölni ugyanazt az 50+ oszlopot, amelyek ráadásul messze is vannak a történésektől... 4) Igen, a ListBox.RowSource megadható úgy is, hogy alksor!A1:D123. Ez esetben hasznos lehet a ColumnCount tulajdonságot is 4-re állítani.
Létezik egy alkatrész nevű munkafüzet, melynek alksor nevű munkalapján százas nagyságrendű alkatrészek A B C D megnevezése kódszáma mennyiség egysége egységára oszlopai vannak, sorrendben az A, B, C, D oszlopokban.
Az alkatrész nevű munkafüzet Munka1 munkalapján létrehozott űrlap ListBox-jában lehetőség adott több megnevezésű alkatrész megjelőlésére a Listbox ListSile és MultiSelect sorok fmListStyleOption és fmMultiSelectMulti kiválasztása után; és persze a ControsSource, RowSource sorokba beírt megfelelő meghatározásai után.
Az alábbi programrésszel a megjelőlt alkatrész-megnevezéseket valószínűleg sorban egymás alá tudnám iratni a Munka1 munkalapra; de sajnos csakis az első oszlop tartalmait.
' A ListBox1.ListIndex azt a sorszámot adja meg, amit kiválasztottunk Private Sub UserForm_Terminate() Dim I As Byte Dim K As Byte Dim S As Byte K = 1 For I = 1 To ListBox1.ListCount If ListBox1.Selected(I - 1) Then Cells(K, 1) = ListBox1.List(I - 1) Range("AI:CI").Select
K = K + 1 End If Next I
Nekem nem csak a megnevezést, hanem a kiválasztott alkatrészek minden más oszlopának tartalmát is át kellen másolni egy választott nevű munkafüzet Munka1 munkalapjára az A1-től folyamatosan, egymás alá, soronként.
A RowSource-nál megadhatom pl.: alksor!A1:D123-t is? A ControlSource-ban elegendő a Munka1!A1?
Segítséget kérnék, hogy hol, milyen program sorokkal kell kiegészítenem a fentebbi programot, ahhoz, hogy a kijelőlt/kiválasztott sorok A,B,C,D oszlop tartalmai is átmásolódhassanak a megadott helyre?
Egyáltalán ilyen módon kell/célszerű ezt a feladatot megoldani, vagy van egyszerűbb/célszerűbb módszer; amit ilyen kezdő próbálkozó, mint én még megért és meg tud "gyártani"?
Köszönöm stromba és DJCarlos. Még nem próbáltam ki, de tuti, hogy jó lesz. Amint eljutok a kipróbálásig megírom hogyan sikerült, hátha másnak is szüksége van rá.
A hibaüzenetre: deklaráld a változókat az eljárás elején:
...
dim email_to , email_cc , email_subject ... (Vagy ki is veheted az option explicit utasítást a program-modulból, valahol ott kell lennie, de az első megoldás korrektebb.)
Ettől persze még nem biztos, hogy jó az eljárás a levél-küldésre, nem próbáltam.
Hát biztos, hogy én vagyon a béna, de nem megy. Letöltöttem még a tesztet is és valahogy az sem küld nekem mailt. Bár még azért nézegetem hátha.... Valaki nem tudja, hogy miért küld hibaüzit az eredeti?
Egy kérdésem lenne. Van a Fájl / Küldés / Levél címzettje menü, tehát elküldi email-ban szövegként ami a lapon van. Ezt lehet valahogy makróba foglalni? Mert próbáltam rögzítéssel, de sajna nem rögzítette. Előre is köszönöm.
Miért van az, hogy ha makróval védelem alá helyezek jelszavazva egy munkalapot, akkor a jelszót nem fogadja el a Eszközök/Védelem/Lapvédelem feloldása menüben?
Hiperhivatkozással is lehet lépegetni a lapok és pozíciók között, azaz teszel egy linket a 2-es lapra, ami a 8-as lapra mutat és fordítva. Ezekre kattintva rögtön oda ugrasz.
"Akkor ezek szerint "csak" munkalaponként lehet lépegetni, azt nem lehet megtenni, hogy pl. a 2. és a 8. munkalap között ugrálok."
Tudtommal nem. Dehát Windowsban is, csak az utolsó két alkalmazás között ugrálhatsz Alt+TAB-bal, ha másik alkalmazás kell, akkor végig kell lapoznod.
Van azért kerülő út. Az egyik, hogy egymás mellé rendezed a 2. és 8. munkalapot, és akkor a Ctrl+PgUp/PgDn is jó.
A másik, hogy írsz egy ilyesmi makrót, és hozzárendeled egy (tetszőleges, még szabad) billentyűkombinációhoz: Sub OldalValtas If ActiveSheet.Name = "Munka2" Then Sheets("Munka8").Activate Else Sheets("Munka2").Activate End If End Sub
Ebben a makróban még vannak tartalékok, szóval lehet cifrázni, de attól tartok, a végeredmény nem lesz sokkal egyszerűbb vagy gyorsabb, mintha egérrel kattintanál az adott munkalapra, akkor meg minek...
van arra vmilyen billentyűkombináció, hogy egy excel fájlon belül két lap között váltani lehessen (hasonlóan mint a az egyik fájlról a másikra való ugráshoz)? köszönöm a válaszokat előre is.
Pedig azt ott kell beállítani szerintem. De nem az utóljára mentetteket, hanem az utlsó x megnyitottat. Az átállítás után a lista pedig nyilván akkor fog bővülni, ha van mivel.
OFFFF, és ég a pofám, de hogy a túróba lehet beállítani az excelben, hogy a fájl menüben megjelenjenek a legutóbb mentett állományok?
Tök hülye nem vagyok, próbáltam az Eszközök - Beállítások - Általános-ban, de ott eleve ott van, hogy utolsó 4 fájl listája, be is van pipálva, de mégse jeleníti meg, még ha várok is, vagy megnyitom a teljes file menüt.
+ Hogy lehet worldben az EREDETI ezsköztárakat visszaállítani, vagy a beállítottat menteni, hogy ne jöjjön be állandóan valami felesleges. Szintén nem hajlandó szót fogadni:-(
Közben TextBoxszal megoldottam. Most már csk azt nem tudom elérni, hogy enterrel frissüljön, ugyanakkor kijelölje a tartalmát felkészítve a következő beírásra
Sziasztok, van egy kérdésem, min mindig :(Az A1 cellába beírt értéket "Find"-el megkeres egy makró. (Worksheet_SelectionChange) Ez eddig rendben is van, de nem tudok több értéket beírni az A1 cellába, mert "visszugrik" a "Find" a megtalált értékre.Valahogy "szűzzé" lehet tenni az A1 cellát?Az is megoldás, (mivel a "Find"előtt szűri is az oszlop az kiritériumként az A1 értékével...) ha a szűrt tartomány első elemére ugrana, hogy az legyen az aktív.
Sikerült megoldani a problémát, kicsit másképp mint az általatok javasolt, de működik. Az összes adattal csináltam egy access adatbázist és innen már feltételek hozzáadásával egyszerüen azt hívom le amire nekem szükségem van.
József képletének a logikáját követve tetszőleges számú ismétlődés esetére csinálhatsz egy panelt, amiből kiválaszthatod a neked tetsző értéket. A trükk, hogy az Fkeres adatbázist nem a szokásos cellahivatkozásokkal adod meg, hanem indexesen.
A B CDEstb
mit =FKERES($mit;INDEX($B$11:$B$30;0+1;1):INDEX($D$11:$D$30;20;1);2;0)
mit =FKERES($mit;INDEX($B$11:$B$30;0+1;1):INDEX($D$11:$D$30;20;1);3;0)
0 alsó Fkeres értéke
A B-oszlopot tovább másolod CDE irányában ahányszor csak akarod.
Magyarázat:
A: mit-mit-0: 3 egymás alatti cella. A két mit amit keresnek az fkeresek, a 0 meg nulla (az adatbázis 0-ik sorára utal)
B: felső Fkeres: A B11.d30 adatbázis második oszlopában keresi a mithez passzentos értéket.
B: alsó fkeres: Az adatbázis 3 ik oszlopában levő értéket adja vissza. Ez az oszlop egy pótlólagosan beszúrt segédoszlop amiben az adatsorokat sorszámozod. Tehát megkaptad, hogy hanyadik sorban találta meg. Ezt az értéket veszi át a hamadik sor, ahonnan majd a következő CDE fkereses oszlopok kapják az új adattáblák kezdő sorait.
A panel persze finomitható, és elegánsabbá tehető, de ez már legyen a te játékod.
Szerintem a 800 sor nem lehet akadály. Bár ki tudja? Arról ugyanis lövésem sincs, hogy mit értesz azon hogy másik lapfülről szedeget adatokat. Ráadásul 800-at. Így nehéz ötleteket adni.
Azért nem jó egyszerűen a szűrő, mert ezt olyan táblázatban kellene betennem ahol a sorok száma kb.800, azaz 800 sorban kellen alkalamazni és egy másik lapfülről szedné az adatokat hozzá.
Azonban sajnos nekem a megoldásod azért nem jó, mert lehet, hogy épp a hatodik találat lesz nagyobb mint a keresési kritérium.
Ha esteleg tudsz rá megoldást nekem már az is megfelelne ha a találatokat egy cellába felsorolná mondjuk vesszővel elválasztva, mert ebből már lehetne látni, hogy van e nagyobb érték mint amit keresünk.
Itt egy megoldás, remélem az ábráról minden tiszta.
A G3-ba levő képlet:
=HA(DARABTELI($A$3:$A$9;F3)=0;"nincs ilyen kód";HA(DARABTELI($A$3:$A$9;F3)=1;FKERES(F3;$A$3:$B$9;2;0);HA(FKERES(F3;$A$3:$B$9;2;0)=$K$1;FKERES(F3;OFSZET($A$2;HOL.VAN(F3;$A$3:$A$9;0)+1;0;100;2);2;0);FKERES(F3;$A$3:$B$9;2;0))))
A következőképpen működik a keresés:
- nem találja a keresendő kód-> hibajelzés (nincs ilyen kód)
- egyszer szerepel a táblában a kód -> a hozzátartozó érték
- többször szerepel a kód -> amennyiben az első érték egyenlő a kritikus értékkel, következő találathoz tartozó érték, ha nem akkor az első érték.
Amennyiben arra is kell figyelned, hogy a második (esetleg harmadik, stb...) találat sem lehet egyenlő a kritikus értékkel, akkor arra egy makrót kell írnod.
A HOL.VAN függvényben a 100 érték egy kellően nagy szám akart lenni.
Meg kellene keresni egy adott táblázatból értékeket és egy másik tábla adott helyére másolni - az fkeres erre jó lenne , azonban a keresési értékből több is található az adott füzetbe. Nekem azt kellene megoldani, hogy ha az első megtalált érték egy bizonyos szám (megeggyezik egy adott cella értékével) akkor ne hagyja abba a keresést hanem lépjen tovább a következő találatig.
Az a gondom, hogy egy oszlopban dátumok vannak ilyen formátumban év.hó.nap.
Én azt szeretném, hogy CSAK év.hó legyen, tehát hogy felejtse el az a szerencsétlen napot.
Tudom, hogy ezt be lehet állítani a cella tulajdonságánál (dátum), de attól ez a szerencsétlen még nem akarja elfelejteni és a kimutatásnál mindenféle problémát okoz.
Lehet, hogy kell rajta még reszelni;) Ja és nemtom működik e ismétlődő számoknál és nem akad e ki, ha az első értéket találja meg, stb. Ez már rád vár, hogy teszteld;)
Ismétlődő számoknál esetleg megpróbálhatod a 4839 sz. hozzászólásban leírt függvényt beágyazni a NAGY függvénybe.
=nagy(B1:B10;2) B1:B10 természetesen az a tartománnyal helyettesítendő, ahol a számokat tárolod.
Ezzel megtalálod, hogy hányadik pozícióban van a 2.legnagyobb érték: =HOL.VAN(nagy(B1:B10;2);b1:b10;0)
Ezzel pedig megtalálod az eggyel fölötte lévőt:
=OFSZET(B1;HOL.VAN(nagy(B1:B10;2);b1:b10;0)-2;0)
Lehet, hogy kell rajta még reszelni;) Ja és nemtom működik e ismétlődő számoknál és nem akad e ki, ha az első értéket találja meg, stb. Ez már rád vár, hogy teszteld;)
Nem tudommennyire zárt ez a közösség, de nekem van egy megoldatlan problémám. Remélem nektek ujjgyakorlat.
Adott egy táblázat
1 a 3 v 6 k 5 fg 8 d 2 fgh 3 o
Azt könnyen meg tudom csinálni, hogy az első oszlopból kiválassza a maximum értéket és ehhez FKERES függvénnyel a hozzátartozó betüt.
Azt nem tudom megcsinálni, hogy a második legmagasabb számot válassza ki az első oszlopból.
Azt sem tudom megcsinálni, hogy kiválasztva a tényleges maximális értéket pl. az egyel felette lévő cellát vegye figyelembe. Pl. jelen esetben első oszlopban a 8 a mximális érték, de nekem az egyel felett lévő 5-re van szükségem.
Én is lassan jövögetek rá a frankó függvényekre:) Ezzel a kimutatásadatot.vesz-szel egész komoly lekérdezések készíthetők. Mindig az volt a bajom, hogy sok segédtáblázatot kellett készítenem, hogy kiszedjem, ami nekem kell, de mégis megmaradjon az adat eredetiben is. Most készítek egy jó alaptáblát és abból sok kimutatást. Mindegyiket más szerint összegezve és csoportosítva. Ezekből a már említett függvénnyel nagyon könnyű kiszedni az adatokat. Ahol adatmezőre hivatkozol, oda is tudsz hivatkozást tenni. Nagyon hasznos.
Function keres(mit As String) As Boolean Dim ws As Worksheet, Rng As Range, c As Range
Set ws = Sheets("Munka2") Set Rng = ws.Range("C1", ws.Range("C" & ws.Rows.Count).End(xlUp)) keres = False For Each c In Rng.Cells If c = mit Then keres = True Next End Function
Arra gondoltam, hogy a kód elején már változóként felveszi, hogy mit kell majd keresni.Cells(ActiveCell.Row, 1).SelectDim Wsn, KNEV, KSZLA, ORSZ, JOGC, KOZL, BSZAM As StringKSZLA = ActiveCell.Offset(0, 5).Valuestb... és itt mondjuk a KSZLA változót keresi. Find-el össze tudtam volna favágni valamennyire, csak kíváncsi vagyok egy For Each-os megoldásra
Function keres(mit As String) As Boolean Dim ws As Worksheet, Hit As Range
Set ws = Sheets("Munka2") Set Hit = ws.Range("C:C").Find(mit, , xlValues, xlWhole, , , False) If Hit Is Nothing Then keres = False Else keres = True End If End Function
a függvény nem a For..Each..Next ciklust használja, hanem a Find eljárást (amit úgy paramétereztem, ahogy nekem tetszett, de ez persze lehet más is).
Sziasztok, segítenétek megint? hogy kell For Each ciklussal megvizsgálni azt, hogy egy előzőleg deklarált érték megtalálható e egy másik munkalap "C" oszlopában? És ha igen: akkor...
256MB ram, sima irodai gép. Az adattábla párezer soros volt és több feltételre szűrtem. Kényelmetlenül lassú volt, minden egyes adatmódosításkor újraszámolta a cellákat, én meg növesztettem az ősz hajszálakat:) Tudom, ki lehet kapcsolni az állandó számítgatást, de akkor sem volt kényelmes. 512 rammal gyorsabb lett.
Áttértem arra, hogy a táblázatokból pivot táblákat készítek és kimutatásadatot.vesz függvénnyel nyerem ki az infokat. Tisztább, szárazabb érzés.
Nem. Amit te akarsz, ha jól értem, hogy cikkenként akarod követni a forgalom időbeliségét. Ez logikája alapján valszeg csak adatábla többszörözéssel megy szerintem is. Még éppen elviselhető.
Amire én kérdeztem, hogy követhető-e az összforgalom az idő függvényében. Az AB.SZUM függvény gyakorlatilag ugyanaz, ugyanúgy bele kell tenni az adattábla fejlécébe, de a kritériumtartománynak elég az F1.F2, amibe a datum szerepel, a kisebb relációkat meg az adattáblába írod be.
És az megcsinálható ezzel a TÁBLA függvénnyel (nem találom a sugóban), hogy robbantó példájánál maradva, mondjuk havi bontásban közölje a forgalmat? Tehát a kritérium nem az =cikkszám, hanem mondjuk a <dátum relációra müködjön (analóg a hisztogrammal). Nekem így nem sikerül működtetni. Pedig hasznos lenne.
Nem lehet, hogy azért "tűnik el", mert a hozzászólás írása közben lejár (Ha van itt egyáltalán) egy biztonsági idő, és kiléptet a rendszerük?
Előszőr én is erre gyanakodtam. Csakhogy akkor újra be kellene tudnom jelentkezni. De nem ez van, hanem hogy az index maga jön, de a fórumot nem adja. Most is szarakodott vagy egy negyedórát, míg újra bejött a fórum. Egyelőre gyüjtöm az eseteket.
Ez is jól működik, köszönöm - de ezzel szemben meg kell mondjam Józsefé meg rémegyszerű (Bár így elsőre még nem értem, hogy mi miért van... :) Én ezzel az adattáblával csak "bohóckodni" szoktam. Nem láttam át, hogy gyakorlatban mire lehet használni.
Nekem nem volt még ilyen problémám az indexszel, bár én nem Explorert használok - hanem Operát cca. 10 éve. Nem lehet, hogy azért "tűnik el", mert a hozzászólás írása közben lejár (Ha van itt egyáltalán) egy biztonsági idő, és kiléptet a rendszerük?
Na látom, hogy József megelőzött és feltehetőleg praktikusabb megoldást javasolt mint amit kidolgoztam, de ha már megcsináltam, elküldöm. Legyen itt egy példa az amatőr közelítésre is.
xxx
Hát a feladatod tényleg barátságtalan. Már úgy értem megcsinálni. Mert maga a feladat elviekben nem különbözik a sima AB. függvény alkalmazástól. Csak itt sok cikkszámot kell a dátumjaival önálló kritérium tartományba foglalni. Ami az első közelítésben elég babrásnak tűník. De azért viszonylag maradhatósan megoldható. Pl. így:
1. Az első cikkszám melletti cellába beírod: >x, melléje meg: <y (x=kezdő dátum, y=végdátum), majd a következő cellába meg az ABszum képletetet úgy, hogy a kritériumtartomány a cikkszám és a dátum cellákra és a felettiekre vonatkozzon. Aztán mindhárom cellát végigmásolod a cikkszámok mellé.
2. Közvetlenül cikkszám tömb alá értelemszerűen beírod a kereső oszlopneveket: Cikkszám, dátum, dátum. Annyi sorba, ahány cikkszámod van. Ezek lesznek a kritériumtartományok fejlécei.
3 Kiegészítő oszlopok segítségével sorbarendezéssel összefésülöd a 2 tömböt, hogy 1 fejléc, 1 kritérumok + AB.Szum képlet. És ezzel kész is. Az AB.szumok minden második sorban mutatják a megfelelő értéket.
Ha új dátumot akarsz megadni, sorbarendezéssel szétválasztod a kritériumokat megint 2 tömbre, így az új dátumok könnyedén bemásolhatók a régiek helyére, majd vissza. Elkerülhető az ismételt sorbarendezgetés, ha képletet használsz a dátumok átállításra, mert akkor csak az első cikkszámnál írod át, amire aztán hivatkozik a többi sor. De ezt kicsit komplikáltabb megcsinálni. A 3660-3680 körül József megírta (pont nekem), hogy ilyenkor miképp kell paraméterezni a kritériumokat és az Ab. függvényeket.
Ha a táblázatod layoutja nem tetszik, egy 3-ik lapon formázol egy neked tetszőt, ami a 2-ik lap megfelelő celláira hivatkozik. Szvsz úgy praktikus megcsinálni, ha az INDEX függvényt használod.
Az AB.Szum használata tehát valóban komplikáltabb, mint a SZUMHA, de összetett szűréseknél célszerűbb lehet, mint komplikált osztályképzésekkel eljutni az egyszempontú szumha feltételhez.
xxx
ps. A válasszal tegnap éjszaka elkészültem, de elküldés előtt óvatosan elmentettem. És milyen bölcsen. Ez a kurva Index fórum ugyanis mostanában állandóan szarakodik nálam. Eltűnik, és ráadásul a szöveg is elvész. Megszívtam már jópárszor. Te is tapasztalsz ilyesmit?
Két kérdésem is van, mindkettő diagramos. Az első, hogy ha új diagram lapot készítek, automatikusan láblécet és fejlécet is ad hozzá. Ezt az oldalbeállításoknál át tudom írni üresre, de hogy tudnám elérni, hogy alapértelmezésként üresen hagyja.
A másik, hogy csinálok egy vonaldiagramot, ahol az adatoszlop fejlécében alsó indexet tartalmazó szöveg van. A diagramon a jelmagyarázatban az alsó index nem jelenik meg. Sőt a jelmagyarázatban a szöveget is csak egyben tudom formázni, betűnként nem. Ezt meg lehet valahogy oldani?
Ez naaagyon jóóóó! Végre láttam a gyakorlati hasznát is ennek az "adattáblának"! Ezt miként kell bővíteni úgy, hogy egy másik (több) dátumintervallum is szerepelhessen benne? Ahhoz egy új adattáblát kell csinálni, vagy ehhez is hozzálehet kapcsolni? Próbálkoztam, de nem jutottam (egyelőre) eredményre...
Egyedivé teszem a többszörösen szereplő cikkszámokat egy másik munkalapra és azt szeretném hogy -tól -ig dátumintervallumban összadja az azonos cikkszámok értékeit. Ezt AB.SZUM-al hogy csinálnád meg?
Pedig meg lehet oldani viszonylag egyszerűen.
1. Legyen pl. az hozzászólásodban lévő adatbázis az Adatbázis munkalapon a A:C oszlopokban, az első sorban a mezőnevek vannak.
Egy mások munkalapon (Összesítés) az egyedi cikkszám értékek az A2-től kezdve fel vannak sorolva.
2. Az Összesítés lapon felveszed az ábrán szereplő feltételtáblát, és a B1 cellába beírod az AB.SZUM-os képletet.
3. Kijelölöd az A1:B3 (illetve addig amíg kell) tartományt. Majd Adatok/Adattábla menüpont.
Az Oszlopértékek bemeneti cellájába add meg az F2-t.
Itt arra gondoltam, hogy a kritérium megadásnál korlátozottak a lehetőségek olyan tekintetben, hogy itt olyan tartományt kell megadni, amelyben a kritérium feletti sorban oszlopcím van. Ok, na de ha nekem pl van egy tartományom (hasra csapok) c2-től c20-ig, akkor nem tudom "melléhúzni" az AB.SZUM-ot a D oszlopba.Konkrétabb példával élve - 15 000 soron keresztül: "A" oszlop CIKKSZÁMok, "B" oszlop ÉRTÉKek, "C" oszlop DÁTUMok Egyedivé teszem a többszörösen szereplő cikkszámokat egy másik munkalapra és azt szeretném hogy -tól -ig dátumintervallumban összadja az azonos cikkszámok értékeit. Ezt AB.SZUM-al hogy csinálnád meg?
Valóban? Akkor megnézem újra. Nálam nem müködött. Ill. zerót adott eredményül. Lehet hogy az volt a baj, hogy nem a SZUM-ra hanem az ATLAG-ra néztem. Bár nem valószínű hogy ez szerepet játszik.
A lassulás mekkora volumennél lép fel? A RAM-od mekkora?
A szum(ha... tömbképlet (vagymi, amit ctrl-shift-enterrel kell lezárni) tud több feltételt kezelni. A hátránya, hogy nagy táblázatnál iszonyúan lelassul.
Tényleg sok minden áthidalható/elérhető a képletek variálásával... Őszintén, ez a szorzatösszeges megoldás eszembe nem jutott volna - még ha ez így "csak" egyirányú is, mert a kritériumot az összeadandó tételekből veheti)Office 2007-ben egyébként a "szumhatöbb" függvény szolgál erre és véletlenül akadtam rá a probléma keresgélése közben.
A 2007-ben tényleg? Akkor ez egy óriási előrelépés. Főleg, hogy én a 2000-t használom még mindig. Illetve visszatértem rá a 2003-ról. Aminek az előnyeit nem igazán éreztem, csak a kényelmetlenségeit a már megszokottól való eltérések miatt.
És ne menjünk el szó nélkül József varázslata mellett. Nagyon kreatív megoldást mutatott be. Mégha a gyakorlatban nem is igazán praktikus. De jól illusztrálja, hogy számos korlátot át lehet törni ötletességgel.
Hát igen... pont ezt tapasztaltam én is... Az AB.SZUM-ot meg sajna nem lehet minden esetben használni... Amúgy a 2007-es ocffice-ben már meg lehet csinálni.
Hasonló problémával küszködtem magam is. Így aztán én is tapasztaltam, hogy a szumha ill. a sum(ha... összetétel nem tudja kezelni az ÉS-t. Ahogy József írta. Én végül egy segédoszlopon osztálybasorolással oldottam meg. Esetedre pl: Int((x-1)/100). Az osztályra aztán már müködik.
Van 3 fül és azt kell megoldani, hogy ha az egyiken megváltozik egy cella értéke, akkor változzon a másik kettőben is. Azt hogy az egyikről átvigyen a másik kettőre még meg tudom csinálni, de mi van ha egyszer az egyikben akarok változtatni egyszer a másikban?
VLOOKUP (FKERES) nem segít? Akár egy másik munkalapon, akár egy rejtett cellában elhelyezheted. Az eredményét meg felhasználhatod a makróvan. Használok olyan táblákat, amelyekben 2-3 ezer sor van és a VLOOKUP azonnal adja az eredményt.
Lehetséges. Bár szerintem minden további nélkül kicserélhető a kereső sbr. Bejön vonalkód. Átkonvertálod számmá, amivel aztán nem a lépegetős kereső sbr-ra mész, hanem a a szerkesztés/keresésőre. De lekérdezheti a kódot a HOL.VAN függvény is. Ami aztán megadja a rekord sorszámát. Szintén seperc alatt.
Nem tudom mi az a BAR kód. De a probléma szemponjából azt hiszem nem érdekes. Abból amit elmondtál, nekem úgy tűnik, hogy cellánként végiglépkedős rutin símán kicserélhető a Szerkesztés/Keresés rutinra. Az pedig ripsz-ropsz megtalálja a keresett rekordot.
A második kérdésedre a válasz: end down (nyil lefele) Persze bent kell állnod a táblázatban. És az első üres (az utolsó nem üres) cellára ugrik. Az eső kérdésed nem értem. Illetve miért nem felel meg a helyben szűrés, vagy Szerkesztés/Keresés parancs.
a, Tools (eszközök) - Options (beállítások) - Color (színek) és itt reset standard colors.
b, File (fájl) - page setup (oldalbeállítás) - sheet (munkalap) fül, és ellenőrizd hogy a print black and white (fekete-fehérben nyomtat) nincs bepipálva.
c, nézd meg hogy nincs-e conditional formatting (feltételes formázás) beállítva
több ötletem nincs, ja és lehet hogy a magyar megnevezések nem teljesen jók.
Nem boldogulok az Excel 2003-mal. Most telepítettem fel az office-t és az excelben van az alábbi hiba: Nem működik a cellaháttér színének módosítása. Ki tudom választani, hogy mondjuk zöld színű legyen, de nem hajtja végre. Ha meg olyan excel táblát nyitok meg, amiben ilyen formázás van, azt nem jeleníti meg. Viszont pl. a betűszínt lehet változtatni. Már 2x újratelepítettem, de a helyzet ugyanaz. Segítsetek!
Ha A1-ben van a Tóth Pista, B1-ben a termék és C1-ben az ár, akkor a következőt kell tenned:
Beszúrsz egy oszlopot az A elé. Most a nevek a B oszlopban vannak és a B1-ben rögtön van is név. A1-be beírod, hogy =B1 . A2-be pedig: =ha(B2="";A1;B2) és ezt lehúzod végig a táblázaton.
Kijelölöd az A oszlopot, másolás, irányított beillesztés értéket. B oszlopot törlöd. Kész.
"Arról van szó, hogy a kimutatásvarázsló segítségével ugye összesíteni tudok adatokat. Ami szuper.
A problémál csak az, hogy ő egy ilyen kis tuti táblázatban hozza elő az adatokat és ha egy kliensen belül pl. különböző termékek forgamát nézzük, akkor a kliens neve(kódja) csak az első termék mellet fog szerepelni.
Nos, a helyzet az, hogy nekem szükségem lenne arra, hogy mind mellett szerepeljen, mert hogy még tovább számolgatnék. Remélem érti valaki a problémám.
Tehát most ez van a kimutatásban pl:
Tóth pista:csoki:20ft
keksz:10ft
akármi:5ft
Amit szeretnék, hogy legyen:
Tóth pista:csoki:20ft
Tóth pista:keksz:10ft
Toth pista:akármi:5ft
Ilyen táblázatra lenne szükségem. Talán be lehet ezt valahogy állítani, de eddig nem jöttem rá hogy. De arra gondoltam, hogy ha a kimutatást már sima adatként elmentem, akkor lehetne írni valami függvény, ami ha üres cellát talál beírja a felette található első nemüres cella tartalmát. De gőzöm sincs hogyan kell egy ilyen függvényt megírni."
KAPTAM RÁ EZT A MEGOLDÁST:
"Ha a pivot tábla első (Tóth pistás) oszlopa a B oszlop, és a tóth pista először a B5 cellában szerepel, akkor az A5 cella tartalma:
=HA(B5="";A4;B5)
Ezt szépen lehúzod a pivot tábla végéig, és kész egy olyan oszlop ami ki van töltve minden sorban nevekkel."
El a megoldás teljesen jó, csak az a baj, hogy nem csak Tóth Pista név van, hanem még sokszáz más név is és úgy már nem működik. Ahogy beírja az első üres celle mellé a nevet a következőnél már nem ír semmit. Persze lehet dollár jelet használni, de akkor meg leragad az első névnél.
Nem igazán értem a második pontot. Talán azt szeretnéd, hogy az oszlopszélesség mindig fix legyen és ha több a karakterszám ennél akkor sortöréssel tegye bele? Mert akkor ctrl+1/Igazítás/Sortöréssel több sorba
Először is köszönöm a gyors segítséget, de úgy tűnik mégsem sikerült jól megfogalmaznom a kérdéseket, mert egyik megoldás sem teljesen az, amire én gondoltam. Az első esetben én arra gondoltam, hogy egy munkafüzetben van pl tíz munkalap és én ezek közül szeretnék kinyomtani 9et biztosan a 10.et pedig csak akkor ha az a1 cellájában van vmi... Ahogy néztem ez a megoldás nem erre szolgál bár lehet hogy csak én használom rosszul...
A másik esetben pedig itt a cella mérete követi a beírt szöveg méretét. Én nem erre gondoltam, hanem hogy a cella mérete legyen fix és ezen a fix cella méreten ne lehessen túl írni.. (ide a karaktermaximumos adatérvényesítés nem rossz megoldás csak több soros szövegnél a tördelés miatt nem tökéletes)
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Application.ScreenUpdating = False
Dim X As Double, Y As Double Selection.SpecialCells(xlCellTypeLastCell).Select X = ActiveCell.Row
For Y = 1 To X If WorksheetFunction.CountA(Cells(Y, 1), Cells(Y, 5)) = 0 Then Rows(Y).Select Selection.EntireRow.Hidden = True Else Rows(Y).Select Selection.EntireRow.Hidden = False
Akkor az "auto" helyett írj "Aut" -ot. Ugyanis kisbetűt-nagybetűt megkülönböztet a képlet. Így működnie kell. A formátumok jók úgy, tud velük számolni az excel.
Kapcsold be az autoszűrőt, és válaszd ki a "nemüres" kritériumát.
ez csak az adott oszlopot nézi, nem? és ha az adott oszlopban van egy üres cella, elrejti a sort, akkor is, ha egy mellette lévő cellában van adat... nekem az kellene, h ha az adott sor mondjuk első 5 cellája közül mind üres, akkor rejtse el a sort, de ha már egy cellában is van érték, akkor az egész sort jelenítse meg, a többi üres cellával együtt.
De erre makrót is lehet írni, hogy nyomtatásnál automatikusan ez megtörténjen.
Kapcsold be az autoszűrőt, és válaszd ki a "nemüres" kritériumát. Csak a látható sorok fognak kinyomtatódni. De erre makrót is lehet írni, hogy nyomtatásnál automatikusan ez megtörténjen.
meg lehet -e oldani excelben azt, h ha egy adott munkalap adott sorában a megadott cellák (pl. a,b,c,d, oszlop) mind üres (tehát egy üres sor látszódna nyomtatásban), akkor automatikusan rejtse el ezt a sort, de ha változnak a cellába beírt képletek értékei, és már nem üres a sor, akkor fedje fel azt?
Nem működik, valamit biztosan rosszul csinálok. A cégneveket tartalmazó cellák szöveg formátumúak. A 2 cég ilyen módon szerepel: Auto-Valami Kft. és Autó-Valami Valami Kft.
Ahonnan számol (c2*0,1) és az a cella amely az eredményt tartalmazná egyaránt pénznem (forint) formátumban vannak.
A szűrés funkció inaktív, gondolom a többi oszlopban alkalmazott függvények miatt:(
Szenyor Lopez!
Kipróbáltam, de 0 Ft értéket ad vissza az oszlop minden cellájában. Lehet, hogy a cégnévvel van a baj. Elég lenne belőle egy rövid karaktersorra hivatkozni talán.
3 cég van, közülük az egyikkel nem kell foglalkoznom, a másik kettőre, akik cégcsoporton belül vannak vonatkozna a képlet.
pl. az "auto" karaktersor mind a két névben megtalálható.
Azért köszi a segítséget mindkettőtöknek, próbálkozom tovább:)
Ilyet csak úgy lehet, ha helybenszűröd a kivánatos cégeket a megfelelő karaktersorozatra. Vagy majdnem ugyanez, ha sorbarendezed az F-oszlopra, mert egymásmellé kerülnek, majd visszarendezed a táblázatod. Vagy valaki megszán, és ír a feladatra egy a táblázatodat végiscannelő makrót.
Segítséget szeretnék kérni. Egy táblázatot kell készítenem és az egyik résznél elakadtam.
Az F oszlop cégneveket tartalmaz. Azt szeretném, hogy csak a megadott karaktersort, (cégnevet) tartalmazó celláknál végezze el a szükséges matematikai műveletet, (pl.számolja a jutalékot), az excel, máshol hagyja üresen a cellát, vagy írjon ki valamilyen üzenetet. A cégneveket tartalmazó oszlop szövegformátumú, a kitöltésre kerülő cellák pénznem (forint) formátumúak.
1. Lehet e, és ha igen, hogyan egy lap kinyomtatását egy adott cella függvényébe helyezni. Tehát pl. ha A1 cellában van valami, akkor kerüljön a lap nyomtatásra, ha nincs, akkor pedig ne.
(esetleg ha ez így nem megoldható akkor létezik e vmi hasonló megoldás erre a kérdésre?)
2. Hogyan lehet egy cella fix méretét meghatározni úgy, hogy abból ne lehessen kiírni. Én erre csak a maximum karakterszámos adatérvényesítést tudom, de az nem tökéletes megoldás, mert a sortörések miatt előfordulhat, hogy a karakterszámot nem lépi túl a cellába írt szöveg, de már kilóg a cellából.
MSQuery kell létre hozni egy OLAP kockát, amiben kapcsolatot tudsz létrehozni a táblák között (mint MsAcces-ben). A létrehozott adatbázis gyakorlatilag azonnal frissül, ha megváltozik az alaptáblája. Pivot táblás kimutatásokhoz használtam néhányszor, mert nagy méretű pivottábláknál villámgyors és kisméretű - a simán excelben létrehozottal szemben. Jó dolog. Amikor "összehúzkodom" a kimutatástáblát, akkor ebből az OLAP kockából veszi az adatokat.
Jó tanács. Mert noha már többször csíptem fel ott jó megoldásokat, de valahogy mégsem vált rendszerré, hogy Beszurás/Függvényeknél kezdjem a tájékozódást. Apropo, tudod mik azok a kocka függvények? Tegnap ahogy a guglival szimatolgattam az ISERR után, bukkantam rá az Excel 2007 sugójára, és benne ezekre. Egyelőre csak annyi jött át, hogy nem geometriai függvények.
Lehet, hogy a súgónal gyorsabb, ha a függvény beszúrása menüben keresi az ember a függvényt, én így hamarabb meg szoktam találni, ami kell. Nem olyan vészes végigfutni a listát. És persze egyből ad egy rövid magyarázatot is a függvényhez.
De azért a súgóban is meg lehet viszonylag gyorsan találni a keresett függvényt pl. a Tartalom fülön a függvényeket lenyitva, persze jó tudni melyik csoportba tartozik a keresett függvény...
Igen, a HIBÁS() a keresett függvény. Én meg nem is tudtam, hogy van ilyen. Carlos válasza kellett hozzá, hogy rátaláljak. De úgy se ment könnyen. Mert az Excel már Súgóban kíváncsi az intelligenciádra. Hogy méltó vagy-e a használatára. Szóval beírom a Súgóba: HIBÁS. Kifos egy irdatlan listát, de se HIBA se HIBÁS. Se semmi hibaszerű. Beírom, hogy HIBA, ez is csak a HIBA.TÍPUSOK-ig jut el egy halom spam társaságában. Oszt találd ki, hogy közülük a Típusellenőrző függvényekre vagy az Információs függvényekre kell kattintanod. I love Excel.
Megint sokat segítettél. Valóban úgy müxenek, ahogy írtad. Álmomban nem gondoltam volna, hogy vmi miatt célszerű az iserror funkció mellé az iserr bevezetése.
A tömbképletes tartomány kijelölési anomáliára nincs vmi hipotézised?
No, a reggeli kávé után az 5668-hoz képest kreáltam egy egycellás tömbképletet a problémára. Csak annyi a változás az eredeti definicióhoz képest, hogy a 0,5-höz eső legközelebbi számot nem az A:A tartományban, hanem egy pontosabban rögzítettben, esetemben az A11:A36-ban keresi. A fene se érti, de az egyszerübb A:A definiálás #SZÁM hibaeredményre vezet már a legegyszerübb =MIN(HA…tömbképlet esetében is (ld lejjebb). A guruktól kérdem: ki lehet-e ezt a hibát küszöbölni, vagy tudomásul kell venni, hogy az excel így müxik?
Szóval a képlet:
{=HA(MIN(HA($A$11:$A$36>=0.5;$A$11:$A$36))-0.5<0.5-MAX(HA($A$11:$A$36<0.5;$A$11:$A$36));MIN(HA($A$11:$A$36>=0.5;$A$11:$A$36));MAX(HA($A$11:$A$36<0.5;$A$11:$A$36)))}
Egy kicsit riasztó ugyan, de rögtön áttekinthetőbb három cellára osztva:
A 0.5-nél nagyobb értékekre: {=MIN(HA($A$11:$A$36>=0.5;$A$11:$A$36))
A 0,5-nél kisebb értékekre: {=MAX(HA($A$11:$A$36<0.5;$A$11:$A$36))}
Választás közöttük: =HA(felső-0.5<0.5-alsó;felső;alsó)
A fenti képletek tehát müködnek de a {=MIN(HA(A:A>=0.5;A:A))} már nem. Miért?
És megismétlem a korábbi kérdésem: Tényleg nem ismeri az excel2000 az ISERR függvényt (HAHIBA), vagy csak én nem jövök rá, hogyan kell alkalmazni?
Köszi a segítséget, most "már" csak az a baj, ha kész vagyok a FKERES függvénnyel, amit mondtál (bár lehet, hogy nem jól csináltam vmit :( ), minden esetre látszólag működik, amint az FKERES függvényt "átmásolom" más cellába (lehet, hogy nem jól fogalmazok...), viszont amennyiben a "keresési_értéknek" a le gördülő cellát adom meg abban az esetben az előtte kipróbált látszólag működő cucc most már csak minden x-edikre ad "helyes" eredményt, a többire "HIÁNYZIK"-ot ír, és nem tudom miért, ha az segít el küldöm neked a filét, bár nem akarlak ilyen h...ségeekkel fárasztani :) Minden esetre még egyszer köszi!!!
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim SZURKE, FEKETE As Byte SZURKE = 15 FEKETE = 1 If ActiveCell.Font.ColorIndex = FEKETE Then ActiveCell.Font.ColorIndex = SZURKE Else: ActiveCell.Font.ColorIndex = FEKETE End If End Sub
Ez a függvény és a benne használt szám nem a szűrés által mutatott (látható/nemlátható) értékeket veszi figyelembe, hanem a sorok elrejtése miatt látható avagy nem látható értékeket. De működik a szűrés esetén is, ha a szűrés listájából elrejtek sorokat. Tehát a kétféle nagyságrendű szám használatának van értelme, de csak a sorok elrejtése esetén reagál. Remélem érthetően fogalmaztam meg.
Egy off kérdés. Áttértem az Internet Explorer 7-re. És a Kedvencekbe mentéskor a mappákat random listázza. Noha praktikusabb volna ha abc szerint tenné. Amit az Explorer 6-ban játszi könnyü volt előidézni. A 7-ben viszont nem megy nekem. Van rá megoldás?
ld 5653 és 5664-et. Jó megoldást adnak.
Viszont kreáltam egy 4 cellás megoldást is, amihez nem kell kisegítő oszlop. Sajna szépséghíbás, mert nem vagyok profi a HIBA() ill. a HIBA.TÍPUS() függvények lekezelésében. Ezért is ismertetem, hátha akad itt egy guru aki összehozza a négy cella képleteit egybe. Ami a hibalekezelés technikája miatt engem is nagyon érdekelne.
Tehát a feladatod: Az A:A oszlopban az 50%-hoz eső legközelebbi szám megkeresése: A négy cella képletei:
{=MIN(ABS(A:A-0.5))+0.5} =HOL.VAN(keplet1;A:A;0)
{=0.5-MIN(ABS(A:A-0.5))} =HOL.VAN(keplet2;A:A;0)
Az első oszlopban lesz két lehetséges legközelebbi érték. Az egyik mellett #HIÁNYZIK jelzi, hogy nem ő az, hanem a másik. A mellett meg egy szám van, ami azt mutatja, hogy hanyadik az A:A oszlopban
Hello mindenki! Abban kérném a segítségeteket, hogy (Excel 2007) ADATOK/ÉRVÉNYESÍTÉS-en belül létrehoztam egy le gördülő listát,(nem tudom jól tettem e???, vagy van jobbik módja is) amely szöveget tartalmaz, jelen esetben egy szálloda szobáinak a típusát (egy ágyas; két ágyas három ágyas és négy ágyas) ezzel nincs is gond... meg jelenik, úgy ahogy szeretném... viszont a probléma ott kezdődik, legalább is számomra, amikor azt szeretném, hogy egy másik mezőben a le gördülő listából kiválasztott "szoba típusának" a végösszegét (árát, amit fizetni kell) kapjam, amit egy "x"-edik cellából "olvastatok ki" ez csak úgy tudtam el készíteni, hogy a "ha" függvényt használtam, viszont akkor csak a le gördülő listából, csak kettőt tudtam választani, (amire valós értéket is kaptam) miszerint IGAZ vagy HAMIS... ezt az egészet azzal fűszereztem, hogy ugyancsak le gördülő listából választottam ki a bejelentkezés illetve a eltávozás dátumát, amelyet egy harmadik cellában ki vonva egyiket a másikból egy egész számot kaptam pl.: 2 (azaz két napot kell ki fizetni), csakhogy a lényegre térjek a problémám az, hogy nem tudom azt meg oldani, hogy ki választom a szoba tipusát, mondjuk "két ágyas" aztán meg adom a két dátumot és végeredmény képen a fizetendő összeget kapjam!!! :( Előre is köszönöm :) további szép napot :D
"Függv_szám: Szám, értéke 1 és 11 (a rejtett értékek befoglalása esetén) vagy 101 és 111 (a rejtett értékek figyelmen kívül hagyása esetén) közötti lehet."
Tényleg működik 9-el is, de a súgó szerint ennek a nem szűrt tartományt is bele kéne számolnia. A 109-el meg csak a szűrtet... Ez lehet vmi excel bug....?
Pl ha ezt a képletet írod az A12 cellába =RÉSZÖSSZEG(9;A2:A11) akkor az A1-ben lévő fejlécben lévő szűrést is figyelembe veszi. Olvass rá a részösszeg függvényre a súgóban.
Sziasztok! Egy láma kérdésem lenne: hogy lehet rávenni az Excelt, hogy az autofilterrel szűrt értékeket adja össze? Tehát csak azt, amit kiválogatok az autofilterrel. Ha nem válogatok ki semmit, akkor adja össze az egész oszlopot. Köszönet!
Nekem így sikerült, de biztosan lehet valahogy az "A" segédoszlop nélkül is
Ha pedig nem tudsz úgy segédoszlopot beszúrni, hogy az fkeres működjön, akkor pedig az INDEX(;HOL.VAN;;; stb) kombinációt kell használni fkeres helyett.
Nekem így sikerült, de biztosan lehet valahogy az "A" segédoszlop nélkül is
Ha a pivot tábla első (Tóth pistás) oszlopa a B oszlop, és a tóth pista először a B5 cellában szerepel, akkor az A5 cella tartalma:
=HA(B5="";A4;B5)
Ezt szépen lehúzod a pivot tábla végéig, és kész egy olyan oszlop ami ki van töltve minden sorban nevekkel.
Makrós megoldás:
Kimásolod a kimutatásvarázsló végeredményét egy új munkalapra. Lefuttatod az alábbi makrót, meg kell majd adnod azon oszlopoknak a számát, amelyeknél szeretnéd kitöltetni az üres cellákat a felettük lévő értékkel (A oszlop-1, A+B oszlop-2, A+B+C oszlop - 3 stb).
Sub ExpertView()
Dim Lastrow, i1, i2 As Long Dim ColNr As Byte Dim Ertek As String
eleje:
On Error GoTo hiba
ColNr = InputBox("How many columns do you have with attributes?", "Attribute Nr", 5) Application.ScreenUpdating = False
' last row with data in database
Selection.SpecialCells(xlCellTypeLastCell).Select Lastrow = ActiveCell.Row ' a tartomány -ig sora
For i1 = 1 To ColNr
Ertek = "'"
For i2 = 1 To Lastrow If Cells(i2, i1) <> "" Then Ertek = Cells(i2, i1) If Cells(i2, i1) = "" Then Cells(i2, i1) = Ertek
Next i2
Next i1
GoTo vege
hiba: Application.ScreenUpdating = True
Ertek = MsgBox("This is not a valid number! Please enter a number from 1 to 255") GoTo eleje
Arról van szó, hogy a kimutatásvarázsló segítségével ugye összesíteni tudok adatokat. Ami szuper.
A problémál csak az, hogy ő egy ilyen kis tuti táblázatban hozza elő az adatokat és ha egy kliensen belül pl. különböző termékek forgamát nézzük, akkor a klines neve(kódja) csak az első termék mellet fog szerepelni.
Nos, a helyzet az, hogy nekem szükségem lenne arra, hogy mind mellett szerepeljen, mert hogy még tovább számolgatnék. Remélem érti valaki a problémám.
Tehát mots ez van a kimutatásban pl:
Tóth pista:csoki:20ft
keksz:10ft
akármi:5ft
Amit szeretnék, hogy legyen:
Tóth pista:csoki:20ft
Tóth pista:keksz:10ft
Toth pista:akármi:5ft
Ilyen táblázatra lenne szükségem. Talán be lehet ezt valahogy állítani, de eddig nem jöttem rá hogy. De arra gondoltam, hogy ha a kimutatást már sima adatként elmentem, akkor lehetne írni valami függvény, ami ha üres cellát talál beírja a felette található első nemüres cella tartalmát. De gőzöm sincs hogyan kell egy ilyen függvényt megírni.
Tud valaki segíteni?PLEASE!!!Ugye érti valaki a zagyva írásomat és érti mi a gondom.
"Hogyan lehet megnézni a file saját path-át. Milyen utasitás vagy makró visszzatérő stringje az a path ahol a file van. Ez az önkonfiguráláshoz kellene. Most kézzel csinálom de ez nem valami elegáns."
Benne van az 5635-ben
Dim fPath as String
fPath = ThisWorkbook.Path
vagy ha utasításként (excel függvényként) szeretnéd használni, akkor:
Function FilePath()
FilePath = ThisWorkbook.Path
End Function
A FilePath() függvény eredménye az adott fájl elérési útja lesz.
1. Az A oszlop többször ismétlődő neveket , a B oszlop pedig hozzájuk tartozó számokat tartalmaz.
Szeretném hogyha egy (másik sheeten) minden névhez (melyből immár csak egy-egy lenne) a hozzá tartozó B oszlopbeli számok átlaga kerülne. Hogyan lehet megcsinálni?
Adatok/Kimutatásvarázsló menüpont
2. Adott egy lista nevekkel, hozzá pontszámokkal. Szeretném ha egy másik sheeten mindig a lista aktuális három legnagyobb értékű tétele jelenne meg, annak is csak 1-2 mezője.
Ahogy látom az alapvető probléma ott van, hogy a Windows alap képszerkesztő programjai (Paint, Photo Editor) nem makrózhatók VBA-ban.
Mit szólnál a következő megoldáshoz? (ez jól lemakrózható VBA-ban) 1. Powerpointban írsz egy makrót, ami az Excel fájl összes diagramját egyenként rárakja egy-egy diára.
2. A Powerpoint bemutatót elmented HTML formátumban (ekkor a diagramok kikerülnek képfájlként)
jaja, ezt csinálom most és ebből a folyamatból szeretném kivenni a képszerkesztő progit. Szal annyi, h a print screen csak az aktív diagrammot vegye ne kellljen faragni utána.
1. Az A oszlop többször ismétlődő neveket , a B oszlop pedig hozzájuk tartozó számokat tartalmaz.
Szeretném hogyha egy (másik sheeten) minden névhez (melyből immár csak egy-egy lenne) a hozzá tartozó B oszlopbeli számok átlaga kerülne. Hogyan lehet megcsinálni?
2. Adott egy lista nevekkel, hozzá pontszámokkal. Szeretném ha egy másik sheeten mindig a lista aktuális három legnagyobb értékű tétele jelenne meg, annak is csak 1-2 mezője.
Viszonylag kis munkával konvertálhatod a karaktereket a CSERE funkcióval. A cserélendő karaktert (karakterláncot) CTRL-C-vel bemásolod a Mit cseréljen-be, majd beírod, hogy mire cserélje. Van egy olyan lehetőség is, hogy az Összest cserélje 1 lépésben.
Egész táblázat copy - paste egy újba. A nevek nem mennek vele, ha nem az egész munkalapot jelölöd ki a bal felső határolóra kattintva, hanem kijelölöd az írott területet. Remélem érthető.
Ha mégis, akkor irányított beillesztés, csak értékeket.
Ez akár megfelelő is lehet, habár ha a képletek is kellenek, akkor nem tudom....
Kaptam egy Excel file-t amiben tobb mint 2000 ezer nev van definialva egy reszuk Lotusban (azaz van benne space, & jel meg minden amit az Excel nev definicio nem szeret) Hogyan lehet ezeket egyszeruen torolni? A Define Name pont alatt egyesevel lehet, talaltam egy makrot, de az kiaakad minden 'rossz' nev eseten. (ha valaki csak egy linket tud mar az is segitseg) Koszi
Az Excel 2003-ban meg tudod jeleníteni a vágólap tartalmát. Ha figyeled a vágólapot, ott rögtön megjelenik b-től h-ig minden, amint a Ctrl+C másolást megcsinálod. Ennek alapján az a véleményem, hogy nem bug, hiszen Excelen belül jól működik a Ctrl+V. Inkább azt mondanám, hogy így tervezték meg, aminek bizonyára meg van a maga oka, legfeljebb nem látjuk.
Ha nagy mennyiségű adatból szeretnél nem összefüggő tartományt kimásolni, akkor egy kerülő út lehet, hogy először Excelen belül megcsinálod a másolást/beillesztést, pl. egy új munkalapra, aztán az eredményt viszed ki Notepad-be.
igaz, hogy már nem aktuális.... :) Tegyél a "*" vagy "?" karakter elé egy "~" karaktert és akkor összeszámolja külön-külön ezeket a darabteli függvény.
Azért próbáld meg. A szerkesztendő cellák zárolását oldd fel, majd léptesd be a lapvédelmet. A cellák szerkeszthetők lesznek, de a sorbarendezést nem engedi.
Alt+F11-re feljön a VBA szerkesztő. A bal oldalán a VBAProject(Munkafüzet) menüt lenyitogatva megtalálod a munkafüzeteidet. Itt duplán kattintassz azon a munkafüzeten, amelyiken ezt alkalmazni szeretnéd az eljárást, majd jobb oldalra fehér területre ezt a kódot bemásolod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim SZIN As Long
SZIN = Range("P12").Interior.ColorIndex
Range("A12").Interior.ColorIndex = SZIN
End Sub
másik cellára történő kattintásra fut le. Jobbat majd az okosabbak.
Alt+F11-re feljön a VBA szerkesztő. A bal oldalán a VBAProject(Munkafüzet) menüt lenyitogatva megtalálod a munkafüzeteidet. Itt duplán kattintassz azon a munkafüzeten, amelyiken ezt alkalmazni szeretnéd az eljárást, majd jobb oldalra fehér területre ezt a kódot bemásolod:Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim SZIN As LongSZIN = Range("P12").Interior.ColorIndexRange("A12").Interior.ColorIndex = SZINEnd Submásik cellára történő kattintásra fut le. Jobbat majd az okosabbak.
példa: A2-től A10-ig sorszámokat beírsz 1-9-ig. Ezután B1-től K1-ig terjedő tartományt kijelölöd, majd belekattintassz a szerkesztőlécbe és beírod: =TRANSZPONÁLÁS(A2:A10) majd CTRL+SHIFT+ENTER K1-ben nyilván #HIÁNYZIK értéket kapsz, mert nincs mert eggyel túllép a transzponálás tartományán.
Arra a sheet-re kell bemásolni a kódot (alt+F11) amelyiken használni szeretnéd:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim SZIN As Long SZIN = Range("A1").Interior.ColorIndex Range("A2").Interior.ColorIndex = SZIN End Sub
másik cellára történő kattintásra fut le. Jobbat majd az okosabbak.
A makró automatikus oldaltörésekkel operál. Ezeket az Excel helyezi el, nem a makró, és a sormagasságokat is az Excel kezeli le. A makró csak lekérdezi az oldaltörések helyét, és ahhoz viszonyítva helyezi el a göngyölítő összegeket. Azt elfelejtettem mondani, hogy a makró futtatása előtt állítsd be az oldalt A3-ra, illetve az oszlopok szélességét megfelelőre. Ha oldalbeállítás után futtatod a makrót, akkor a részösszegeknek jó helyre kell kerülniük.
Ami az oldalszámozást illeti, szerintem nem lehetséges úgy megadni automatikus oldalszámot, hogy csak minden páratlan oldal kapjon új számot. A makróm azt csinálja, hogy 1. Minden oldalnak 1-es számot ad. 2. Kinyomtatja az 1-2. oldalt (amelyek egymás mellett vannak, a nyomtatási elrendezés megfelelő beállítása miatt) 3. Minden oldalnak 2-es számot ad. 4. Kinyomtatja a 3-4. oldalt 5. Minden oldalnak 3-as számot ad. 6. Kinyomtatja a 5-6. oldalt stb., míg a végére nem ér. Tehát mindig csak két oldalt nyom ki az adott oldalszámmal, bár az összes lapnak ugyanaz az oldalszáma.
Köszönöm a makrót. Több kis hibát vét, és én sajna nem vagyok makróírásban járatos és nem tudom, hogyan lehetne kiküszöbölni.
Minden oldalra ugyanazt az oldalszámot írja (a próbatáblám 54 oldalas és azt írja mindehová a láblécben, hogy 27. oldal), nem csak párosával, ahogy kellene.
Az összeadást meg az oldal közepe tájára szúrja be, igaz akkor jól csinálja.
Nem tudom, hogy ezen lehet-e segíteni. Igazából a táblázatban csak egy számot tartalmazó oszlop van, a többi szöveges. És a szöveg mennyiség sem állandó, a sormagasság így változó.
Próbáld ki az alábbi makrót. Nekem nincs A3 nyomtatóm, de A4-essel jól működik. Amit csinál, az az, hogy minden lap aljára beszúr két sort, amelyek közül az egyik a lap aljára, a másik a következő lap tetejére kerül. Az új sorok C oszlopába beír egy SZUM képletet, ami eredményezi a göngyölített összegeket. A végén kinyomtatja a lapokat kettesével, és minden lappár nyomtatása előtt beír a középső láblécbe egy fix szöveget (konkrétan azt, hogy hányadik oldal). A makró az aktív munkalappal dolgozik. Arról neked kell gondoskodnod, hogy a munkalap A3 méretűre legyen állítva, és hogy az összes oszlop beleférjen 2 egymás melletti oldalba (Fájl/Oldalbeállítás menü). Hibalehetőségek: 1) Feltételeztem, hogy az A oszlop minden sorában van valami érték. Ez kell ahhoz, hogy a táblázat legeslegalján a szumma jól jelenjen meg. 2) Ha az utolsó sor (a göngyölítő összegek sorainak beszúrása után) éppen egy oldaltörés vonal fölé esik, akkor a makró le fog állni Subscript out of range hibaüzenettel. Ez egy rejtélyes hiba az Excelben, amit megmagyarázni nem tudok, kivédésére pedig lusta voltam, mert viszonylag kicsi az esélye, hogy bejön.
Azt javaslom, készíts egy biztonsági másolatot a fájlodról, mielőtt ezt ráengeded...
Sub teszt() Dim ws As Worksheet Dim pb As HPageBreak Dim PBs As Long, i As Long Dim Reference As Range, LastC As Range
Set ws = ActiveSheet ws.PageSetup.Order = xlOverThenDown
Set Reference = ws.Range("C1") ActiveWindow.View = xlPageBreakPreview PBs = ws.HPageBreaks.Count For i = 1 To PBs Set LastC = ws.HPageBreaks(i).Location.Offset(-2, 2) LastC.Offset(1).Resize(2).EntireRow.Insert LastC.Offset(1).Resize(2).Formula = "=SUM(" & Range(Reference, LastC).Address & ")" Set Reference = LastC.Offset(2) PBs = ws.HPageBreaks.Count Next i Set LastC = ws.Range("A" & ws.Rows.Count).End(xlUp).Offset(, 2) If LastC.Row > ws.HPageBreaks(PBs).Location.Row Then LastC.Offset(1).Formula = "=SUM(" & Range(Reference, LastC).Address & ")" PBs = PBs + 1 End If For i = 1 To PBs ws.PageSetup.CenterFooter = i & ". oldal" ws.PrintOut from:=i * 2 - 1, To:=i * 2 Next End Sub
Sziasztok! Óriási gondom van kezdő létemre, lécci segítsetek!
Van egy 1000 sorból és 20 oszlopból álló excel táblám mindenféle adatokkal. A C oszlopban szereplő számokat kellene összeadnom úgy, hogy a lap tetején áthozatként a lap alján átvitelként szerepeljen a részösszeg és persze göngyölítve. Továbbá ezt A/3-ra kellene formáznom és nyomtatnom úgy, hogy 2 db A/3 alkotja a teljes táblázatszélességet és a láblécben úgy kellene oldalszámozni, hogy mindkét A/3-on ugyanaz az oldalszám szerepeljen. Ahogy egy nagy könyvet kinyitsz és jobb - és baloldalon is ugyanaz az oldalszám van, csak a következő lapon szerepel a következő oldalszám.
Mivel a nyomtatóm A/3 ennél szélesebb oldalt nem enged beállítani sajnos.
Sziasztok, tud vki segíteni abban a kérdésben, hogyegy, már megnyitott munkafüzet újbóli megnyitásakor felugró kérdésre hogy lehetne "OK" választ adni makróban?
k = InputBox("Adjon meg egy karaktersort", , "12345a")
On Error Resume Next i = k * 1
If Err.Number = 13 Then MsgBox ("az ön által megadott karaktersor nem szám") Else: If Err.Number = 6 Then MsgBox ("az ön által megadott karaktersor szám és 11 vagy annál több számjegyből áll.") If Err.Number = 0 Then MsgBox ("az ön által megadott karaktersor szám, és 10 vagy annál kevesebb számjegyből áll.") End If
Bocs, azt hiszem, félreértettem. Alakítsd számmá, és nézd meg, hogy nulla vagy nem nulla. Ha nulla, akkor vagy a nulla számot kaptad karakterláncként, vagy tényleg szöveg.
Ismételten is csak köszönöm. Az "átírt"-al "Workbooks("Start_.xls").Close SaveChanges:=True" és a "ThisWorkbook.UserForm1.Show" működik. A sima UserForm1.Show -al viszont nem.Bár nem értem miért, de a lényeg az hogy jó.
Sziasztok Mi lehet a hiba? Adott egy start.xls és egy data.xls A start.xls -ben meg kell adni a nevet. Ha helyes akkor megnyitja a data.xls-t melyben van egy Auto_Open(). az Auto_Open() visszatér a start.xls-be menti és kilép majd aktívvá teszi a data.xls-t. eddig minden renben megy. Ezután el kéne indítania az UserForm1-et. na ez már nem indul. Kipróbáltam már késleltetéssel meg makró meghívással is de egyszerűen nem nyitja meg.
Bár, mailben már megköszöntem, azért ide is jár a nagy hála!!! :-)
iszonyat sokat segítettél, a 2. javított verziót kibővítettem 8 karakterű számokra, csináltam belőle egy alapot ahová, csak berakom a konvertálni kívánt számokat, és egy CTRLC & CTRLV -vel máris kinnt a szöveg! :-)
Küldök Köbükivel egy sört, vagy csokit, vagy bármit amit szeretsz! :-)
Szia. Egy kis froblémám adódott: az InvalidClose -t "nem ismeri" hibaüzi: Variable not Defined. Tudom, hogy én bénáztam valamit, de mit. Már egy pár órája próbálkozom, de egyxszerűen nem tiltja le az X-et. :(((((
Gondolom, a két kérdésed valahol összefonódik... Kell két Public változó: Public Restart As Date, InvalidClose As Boolean
Az illegális bezárás ellen így védekezhetsz: Private Sub Workbook_BeforeClose(Cancel As Boolean) Cancel = InvalidClose End Sub
(az InvalidClose változó értékét megnyitáskor True-ra állítom be, lásd alább)
Az időzített bezárás továbbfejlesztett változata: Private Sub Workbook_Open() InvalidClose = True Restart = Now Application.OnTime Restart + TimeValue("00:02:15"), "Bezar" End Sub
Sub Bezar() If Restart + TimeValue("00:02:00") > Now Then Application.OnTime Restart + TimeValue("00:02:00"), "Bezar" Else InvalidClose = False ThisWorkbook.Close End If End Sub
ahol InvalidClose = False kódsor lehetővé teszi a bezárást.
A visszaszámlálás újraindításához futtasd ezt a szubrutint:
nem olyan eccerű ez szerintem, az excel beépített függvényeivel nem fog menni. Egyébként a prog.hu-n is sokat foglalkoztak ezzel a kérdéssel, ott is vannak megoldások
A megoldás nagyvonalakban: A számoknak határozz meg értéket (1-egy ; 2-kettő ; stb). A számot amit szeretnél szöveggel kiíratni karakterekre kell bontanod, mely karaktereket az Fkeres - el tudsz megtalálni az elején létrehozott táblázatból. Majd a megkapott szövegeket összefűzöd. Remélem nem volt túl bonyolult :))))
huhh, hát valószínűleg, hogy ehhez már én vagyok túl laikus, de nem nagyon tudom, hogy mire gondolsz... bocs a tudatlanságért.. esetleg elmondod mire gondolsz? :-)
Az a bajom, hogy már így is túl sokat olvasgattam, sugó stb., nem nagyon tudom végigolvasni a fórumot, de azért köszi nektek.
Valakinek mintha már kellett volna ilyen. Ha nem akadsz rá, és elég nagy a számtömeged, hogy érdemes legyen vele veszkődni, vlookuppal (FKERES) és szöveg összefűző függvényekkel némi bajmolódással megcsinálható.
Most jutott eszembe egy nem egésszen ide vágó kérdés ami már régebb óta foglalkoztat bár nem "egetrengető" probléma. A formot bezáró X-het lehet rendelni makrót? vagy azt eltüntetni, hogy ne lehessen azzal bezárni?
Köszönöm a segítséget ez működik. Még egy kérdésem lenne ezzel kapcsolatban. Ha elindítja a visszaszámlálást a sub vissza() akkor azt valahogy le lehet állítani és újraindítani?
Amikor módosítás történik akkor a makró ment is egyett (jelenleg úgy működik hogy az adatbázis ahova dolgozik az egy külön xls és azt menti és ki is lép.)
Köszönöm a megoldást, bár ha nem lehet csinálni közben semmit az baj. Az elképzelésem az, hogy megnyitja valaki az xls-t, minden makróba beépítem a "2 percest" és ha addig nem csinál semmit akkor kilép. Erre azért lenne szükség mert többen használnánk ua a fájlt.
Adott egy start.xls melynek megnyitásakor az A1 cellába bekerül a megnyitás időpontja. Azt szeretném elérni, hogy ezen időponttól számítva 2 perc múlva záródjon be a fájl. (a fájlban közben nem történik semmi csak elindul az "Auto_Open" ami bemásol bár adatot. A 2 perc fontos lenne.) Ezt meg lehet oldani valahogy? Előre is köszönöm.
Meg tudná valaki mondani, hogy tudom az Excelben az A1-be beírni az aktív cella akutális sorát és oszlopát úgy, hogy az állandóan frissüljön, ha változik az aktív cella?
Van egy bonyolult Excel-fájlom, benne mindenféle védelem és makró. Feltettem egy makró nélküli változatot ide: www.tar.hu/freeware/zarolt.xls
Az a problémám, hogy a sárga hátterű B3-as cella zárolt, a fül védve vagyon (jelszó nincs) és mégis szerkeszthető! Egyéb zárolt cellák nem módosíthatók! Hogyan lehetséges ez?
Makróból így védtem le a fület: Cells.Select Selection.Locked = True Selection.FormulaHidden = False Range("A1").Select ActiveSheet.Protect jelszo, True, True, True
Igen ilyesmire. Jó az ötlet, ahogy elnézem működnie is kell. Kipróbáltam enter helyeet más karaktert, azzal hibátlanul működik, enterrel valamiért nem megy. :(
"Hello! Tudtok olyan trükköt, hogy vmelyik szövegmanipulációs függvénnyel meg lehet keresni x karakter n-ik. előfordulását egy szövegben? Pl. van a szövegben 5db Enter =CHAR(13) és ebből nekem a 3.-ik enter helye kell. Én átnéztem mindent, de nem találtam megoldást."
A képlet kicseréli a 3. <ENTER>t egy tetszőleges sztringre, ami biztosan, vagy szinte biztosan nem fordul elő az eredeti szövegben (az én példámban ez lett "#-ö@"), majd rákeresel erre a sztringre, és így megkapod a harmadik <ENTER> pozícióját az eredeti szövegben.
Van. Menü/Adatok/Szövegből oszlopok. Ezzel szét tudod választani a szóközzel elválasztott szavakat tetszés szerinti helyre húzva majd az egérrel a választóvonalat. Müxik.
Van egy címjegyzék, sajnos a házszámok az utcanévvel egy cellában vannak. Van-e lehetőség az utolsó szóköz utáni karakterek levágására, pontosabban másik cellába át lehet-e rakni?? A gondom az, hogy a jelenlegi formában nem jó a sorba rendezés, először az 1-esek, aztán a 2-esek, stb, stb. köcce briger
Hello! Tudtok olyan trükköt, hogy vmelyik szövegmanipulációs függvénnyel meg lehet keresni x karakter n-ik. előfordulását egy szövegben? Pl. van a szövegben 5db Enter =CHAR(13) és ebből nekem a 3.-ik enter helye kell. Én átnéztem mindent, de nem találtam megoldást.
Olyanban kérném a segítségeteket, hogy csináltam egy kis táblázatot a munkaóráim kiszámolásához. A táblázat szépen kiszámolja a túlórát, a sima munkaidőt. Csak havonta szeretném összesíteni, hogy mennyi a túlórám és a sima ledolgozott órám. A gondom csak az, hogy amennyiben 24:00-nál több a túlórám, akkor újra 1:00-ról kezdi a számolást. Nem 25:00-t ír ki. Én pedig így szeretném.
Feltétlenül kell a buboréksúgó? Tooltip nem elég?:
Sub ChangeToolTip()
Dim szoveg As String szoveg = "A gomb megnyomásával " & Chr(13) & " önnek nagyon-nagyon jó lesz, ez tuti." & Chr(13) & "Ezért mihamarabb nyomja meg a gombot." Application.CommandBars(1).Controls("gomb").TooltipText = szoveg
End Sub
Feltételezve hogy felraktad a makrógombot, aminek "gomb" a neve.
Az a baj, hogy az Excel tábla 4 oszlopos 11 soros
A Word etikett címke meg 3 oszlopos és 8 soros.
Ha csak simán CtrlC-CtrlV, akkor a Word az összes etikettet az Excelből az elsőre rakja.Hiába jelölöm ki az etiketteket amikor beilleszteni akarom kiírja, " nem lehet beilleszteni mert más méreű.
Az Excelben kéne átméretezni az etikettet mm-ben, de csak képpontot mutat.
Kísérletezgess wordben a "Menü"/"Táblázat"/"Konvertálás"/"Szöveg táblázattá" funkcióval. A siker attól is függ, hogy mi van a szövegben. Utána már csak át kell kopizni excelbe
Köszönöm szépen. Én úgy képzeltem el, ha felrakok egy makrógombot az űrlapok eszköztárról és ráállok a kurzorral, akkor megjelenjen a buboréksúgó a szöveggel. Nekem nem sikerült ezt elérnem, pedig próbáltam példakódot a VBA helpből is, meg máshonnak is. Mi a nyavaját ronthatok el szerinted?
A dátumot kipróbáltam, nekem ugyanúgy másolta át, mint excelben volt. Magyar a Word vagy Angol? Ha angol akkor talán az a formátum a default... Bár függhet az operációs rendszertől is, mert ugye windozban beállított defaultot veheti a word is
Két kérdés vetődött fel bennem tegnap, dátumokkal kapcsolatosak.
Biztosan van valami frappáns módszer egy cellában szereplő fix dátum után pl. 30 hónappal későbbi dátum meghatározására. Nem 30*30 nappal későbbi, hanem 30 hónappal, tehát a hónap ugyanazon napjára kell essen a dátum. Hogyan?
A másik pedig Word/Excel mail merge.
A Word dokumentumba szeretnék beemelni egy dátum mezőt az Excel táblából és azt pl. yyyy.MM.dd form formátumban megjeleníteni a levélben. A Wordben nem találtam meg a mező formázásának lehetőségét, az Excelben pedig hiába látom ebben a formátumban a dátumot, mire átmegy a Wordbe, d/m/yy lesz belőle...
Van arra lehetőség, hogy egy lapon belül csak egy-két (kijelőlt) cellát zárjak le ? - írásvédetté szeretném tenni a "fontos" dolgokat, de a többi cellát szeretném, ha töltenék. Segítségeteket előre is köszönöm !
Ha csinálsz egy cellában hiperhivatkozást a sajátgép bármely elemére (pontos elérési út, kiterjesztés) akkor mindig az oprendszerben hozzátársított programmal kell, hogy megnyitódjon a file.
Arr agondolsz, hogy mondjuk a .htm kiterjesztéshez állítsam be a böngészőt, és akkor onnantó ez nyitja meg mindíg? Ha igen, akkor ez nem járható. Bárhol kattintok bármilyen webes hivatkozásra, az excelt kivéve mindíg a default böngészőben nyitja meg.
egy file társítása a programhoz operációs-rendszer releváns szerintem. Meg lehet nyitni bármit, csak meg kell adni a teljes elérési útvonalat. (Jobb gomb a célcellán és Hiperhivatkozás...
Oskolai feladat - ebben szeretnék segítséget kérni, (én ebben nagyon láma vok)nomármost: melyik függvényt használjam, ha számmal és betűvel kell kiíratni egy dolgozat eredményét? - tehát 5 változós logikai függvényt, de melyiket hazsnáljam
nálad gondolom azért találja hibásnak, mert nincsenek tesztadatok.
Úgy értem, hogy adott ez a hosszzú képletem (vágólapra tettem). Megnyomom a makrórögzítés gombot és vágólapról bemásolom. Hibaüzenet: Nem rögzíthető! (Holott a képlet működik a táblázatban) Ha darabokra szétszedem, (Szétbontom a "HA" függvény argumentumaira) akkor lerögzít. Utána összerakosgatom VBA-ban a rögzített darabokat és lőn csoda úgy már jó.
Mintha korlátozva lenne rögzítésnél, hogy hány egymásbaágyazás van a képletben...
Szép feladat zárójeleket és pontosvesszőket számolni egy ekkora képletben. :-)
Az jut eszembe róla, amikor a 80-as évek első felében az osztálytársam odahívott, hogy segítsek megtalálni a hibát az ABC80 programjában, ahol az O és a nulla még egyformán nézett ki, és 1 centire voltak a billentyűzeten, és sejtettük, hogy ez lehet a gond... Hát nem volt egy ötperces meccs. :-)))
Mármint hogy érted, hogy makroként rögzíteni képletet? Makroprogramként megírni, illetve felhasználói függvényként? Az persze ésszerű lenne. Minden munkalapi függvény elérhető a vba-ból is. Egyébként bemásoltam a képletet és hibásnak találja. Nem néztem végig miért.
If GEMegn = "Év végi zárás" Then sora = WorksheetFunction.Max(Range("e65536").End(xlUp).Row, 4) Cells(sora + 1, 5).Value = WorksheetFunction.Sum(Range("e4:e" & sora)) End If
robbantomester: Ez a megoldás azért nem jó számomra, mert nem tudom, hogy hány adatom lesz a táblában. Ez egy könyvelő program, és eléggé összetett a dolog. De azért köszönöm!
DJCarlos: A te megoldásodat ki fogom próbálni. amúgy a probléma pontosan az volt, hogy az 5. oszlopban kell szummáznom. A 4. sortól kezdve addig adja össze, amíg van adat, és az eredményt írja ki a következő cellába.
Nem teljesen világos egyébként a programkódod: az ötödik oszlopban akarsz szummázni, oda kerül az eredmény is a sor-tól függoen valamelyik cellába, elvileg azonban ennek a cellának az aktuális tartalma is belekerülhet a szummázandók közé. Vagy csak negyedik sortól a sor elotti sorig akarsz szummázni az ötödik oszlopban?
If GEMegn = "Év végi zárás" ThenCells(sor,5).Value = "=SUM(R[1]C:R[6]C)"End IfMondjuk ki nem próbáltam és át kell írnod a SUM tartományait is, mert csak hasracsaptam.De ha nem jó, akkor majd a többiek :)
Köszi!! Működik, nagyon szuper! Lenne még problémám: Excel táblába felviszek adatokat a program segítségével. Előre nem tudom, hogy mennyi adat lesz a táblában. Hogyan tudnám összeadni egy oszlop értékeit egy VBA paranccsal?
Sheets("Napló").Select sor = Sorsz + 3 'a sorszám jelöli ki a táblázat sorát cells(sor, 1).Select ActiveCell = Sorsz cells(sor, 2).Select ActiveCell = dátum cells(sor, 3).Select ActiveCell = Bizsz cells(sor, 4).Select ActiveCell = GEMegn
Ez a kód eleje, hogy lásd milyen sorok vannak. Egy If-fel kéne megoldani a dolgot úgy, hogy ha a GEMegn="Év végi zárás", akkor adja össze a az 5. oszlop 4. sorától a cellák értékeit, és az eredményt írja ki a Cells(sor,5)-be. Remélem, érthető így a dolog!
Sziasztok! Épp a szakdolgozatomat írom. Excel VBA-ban kell egy nyilvántartó programot készíteni. Már maga a program kész van, de vannak benne apróbb hibák, aminek a megoldására nem tudok rájönni. Segítenétek? Az egyik probléma kódrészletét bemásolom:
Private Sub CommandButton13_Click() Dim töröl töröl = MsgBox("Biztos, hogy törölni akarja a sort?", vbYesNo, vbQuestion, "Rekord törlése") If töröl = vbYes Then rs.Delete If rs.EOF Then rs.MoveLast Else rs.MoveNext End If rs.Fields(0).Value = TextBox3.Text rs.Fields(1).Value = TextBox4.Text End If End Sub
Itt adatbázisból bekér adatot, amit kiír a textboxba. Ha ezt az adatot törölni akarom, akkor a következő hibaüzenetet küldi:
Futásidejű hiba:'5' Érvénytelen eljáráshívás vagy argumentum.
Konkrétan VBA pwd-del nem próbáltam még, de szerintem működhet az, ha OpenOffice-szal nyitod meg, aztán elmented valami más néven. Az OO várhatóan kihagyja a mentésből a jelszót.
Azt is megteheted pl., hogy előszőr átmásolod az üres cellába, ahova kerülne, és után a nézed meg, hogy ennek a cellának tartalma szerepel-e az előtte lévő tartományban, ha igen kitörlöd az átmásoltat stb...
Természetesen nem A számításokat sikerült végigcsinálnom, de nem tudom mi következik a kiszámolt értékekből és hogy azok alapján megtartom-e a felvetést vagy elvetem
Olyasvalakit keresek aki ért az excelhez és statiszikából is jó Türtént ugyanis h a stat tanárom most írt h amit elküldtem neki, az értékelhetetlen és hétfő a határidő
Követelmények
Egy konkrét empirikus kutatási feladat kivitelezése. A következő részletek részletes leírása szükséges: - A kutatási probléma megfogalmazása, kutatási hipotézisek. - A kutatás statisztikai szempontból elkülöníthető részei esetében a következők megadása: a statisztikai vizsgálat típusa, egyedek, populáció, minta, változók, ezek típusa, a szükséges kutatási eszközök (pl. kérdőív). - Legalább 5 leíró statisztikai számítás végzése (más statisztikai feldolgozások részeként is szerepelhetnek). - Legalább két hipotézisvizsgálat. - Legalább három összefüggés-vizsgálat, köztük az egyik mindenképpen kereszttábla-elemzés legyen.
Kész van a kutatás, bevittem excelbe, az 5 leíró stat-ai számítás kész. Csak az utolsó két pont kellene! Ha valaki lenne szíves segytene nekem????
Most megint kérnék egy kis segítséget, mert elakadtam. Átmásolok "A" munkalapról a "B" munkalapra. Viszont ha már szerepel "B" munkalapon egy adat, akkor itt el kéne ágaztatni valahogy.
Egyszerű példával szemléltetve: átmásolok "A" munkalap a1 cellájából "B" munkalap
"a" oszlopának utolsó üres helyére (ez már megvan). Ha van már ebben az "a" oszlopban ilyen adat, akkor mást kell csinálnia
Én For Each ciklussal próbálkoztam, de nem sikerül :(
Az 1790-1810 között vetettem fel, hogy hogyan oldható meg a stringesítés, és akkor válaszolta valaki, hogy miért nem felel meg úgy, ahogy te szeretnéd. De most nem találom a választ. Meg persze az excelfomátumok ill. beállítások közt sem. Lehet, hogy valaki újra bemondja.
Na, akkor végignézem valamikor az összes hozzászólást :D Nekem annyi sikerült eddig, amit te is írtál, hogy első munkalapon a-f-ig beírom a számokat. A g-be összeadja. A második munkalapon szöveggé alakítódik, a B-oszlopban a szorzó, a C-ben a szorzat. Tehát így néz ki a második munkalapon a függvény:=ÖSSZEFŰZ(SZÖVEG(Munkalap1!A1;"#00,00");"+";SZÖVEG(Munkalap1!B1;"#00,00");"+";SZÖVEG(Munkalap1!C1;"#00,00");"+";SZÖVEG(Munkalap1!D1;"#00,00");"+";SZÖVEG(Munkalap1!E1;"#00,00");"+";SZÖVEG(Munkalap1!F1;"#00,00")) Csak gondoltam hátha létezik ennél egyszerűbb megoldás... Köszi!
Én úgy emlékszem, van rá megoldás, de nem találom. Pedig mintha még itt a topikban is hivatkoztak volna rá. Valami olyan formátum, hogy ne az értéket, de a függvényt mutassa. Ha nem sikerül megtalálni, pótmegoldás lehet az összeadandók cellánkénti megadása, majd a stringformát összefűzésükkel előállítani.
Azok a számok legyenek láthatóak a cellában, amiket össze akarok adni, és adja is össze, majd szorozza meg a másik cellában lévő számmal. 1+2+3+4 2 20 -ilyen formában legyen látható és végezze is el a műveletet.
Egy új lapon megcsinálod a formát, amit a kártyákra szeretnél nyomtatni. A formában az ügyfél nevét tartalmazó cella értékét érvényesítés (validation) útján a meglévő adatbázisból kiválasztod. A többi cella értékét FKERES (VLOOKUP) függvénnyel kiolvasod, majd nyomtatod a kártyát.
Segítségre lenne szükségem. A gondom a következő: azt szeretném megcsinálni, hogy egy cellán belül több számot + jellel adjon össze, a + jel maradjon meg, valamint a számok is, ennek összegét pedig szorozza meg a mellette lévő cellában a számmal. Pl: 2,15+3,55+8,30+4,80+4,08 -ezt adja össze egy cellán belül és ilyen formában maradjon látható is. Eddig nem sikerült sehogysem. Amit találtam, az ez a képlet: =HOSSZ(ÖSSZEFŰZ("=";C8))*D8 de mivel az "összefűz" szó szerepel benne, ezért nem adja össze pontosan a számokat, szövegként kezeli. Ami még nehezíti, hogy nem minden képletben ugyanannyi az összeadandó szám, teljesen változó, hogy hány db szám szerepel soronként, cellánként. Nem tudom mennyire érthetően írtam le... Van vkinek vmi ötlete? Köszönöm!
Ha a formanyomtaványod megcsinálható Wordben, akkor a "körlevél" alkalmas a feladatodra. A "körlevél" Excel táblázatból is fogadja az adatokat. (Ha jól emlékszem, mintha csináltam volna valami ilyesmit)
Mit értesz az alatt, hogy "aktuális cella"? Azt, amelyikbe a képletet kellene írni? Vagy az aktív cellát? Az első esetben: =KÖZÉP(CELLA("filename";A1);SZÖVEG.TALÁL("]";CELLA("filename";A1))+1;100)
NEM VBA-ban szeretném az aktuális cella sheet-jének nevétvisszanyerni egy cellába, mint érték.
Próbálkoztam a Cell("filenname")-mel, de az minden sheeten ugyanazt adja vissza, míg nem frissítem. Melyik fv, ha ugyan létezik adja vissza a sheet nevét?
Van itt egy alternatíva, bár ez nem kezeli le, ha elérési útvonallal együtt adod be a fájlnevet. Csak szimplán "valami.xls" a bemenő adat.
Function isOpenWorkbook(Filenev As String) Dim ws As Workbook isOpenWorkbook = True On Error Resume Next Set ws = Workbooks(Filenev) If Err.Number = 9 Then isOpenWorkbook = False End Function
Pl. VBA.ban így Function isOpenWorkbook(filenev As String) IsOpen = False lastpos = InStrRev(filenev, "") filenev = UCase(filenev) For Each w In Workbooks 'ha nincs eléri út megadva, akkor az aktuális könytárt nézi, ha igen akkor azt If lastpos = 0 Then
If (UCase(w.Name) = Right(filenev, Len(filenev) - lastpos)) And (UCase(w.Path) = UCase(ActiveWorkbook.Path)) Then IsOpen = True Exit For End If Else
If (UCase(w.Name) = Right(filenev, Len(filenev) - lastpos)) And (UCase(w.Path) = Left(filenev, lastpos - 1)) Then IsOpen = True Exit For End If End If
hát szerintem ez makró nélkül nem megy. Amúgy meg nem kell tőle idegenkedned, próbáld ki a rögzítést.
A kimutatástábla is megoldás lehet.
Még az jutott eszembe, hogy ha a "szétdobált" adatok és az alaptábla között fel lehet állítani szabályszerűséget, akkor mondjuk FKERES, vagy valamilyen alkalmas keresőfüggvény is segíthet. De figyelgessél, szerintem a lesz még itt ötlete másnak is
Az A oszlopod adott? Akkor a B2-be azt kell beírnod, hogy =A2*1,2
Ha a B oszlop adott, akkor az A2-be beírod, hogy =B2/1,2
Ezután a képletet lehúzod az összes sorra, ahova kell.
És nincs valami megoldás a makron kívül? Valahogy idegenkedek tőle:) Filóztam rajta, hogy esetleg valamilyen tömbképlettel meg lehetne oldani az ismérvek szerinti szétdobálást és az dinamikus is lenne, tehát ha bővítek vagy törlök az adattáblából, akkor az követi. Csak sok adatnál rendkívül lelassul.
Még tesztelem, hátha a kimutatásvarázsló is elég, bár jobb szeretném, ha lenne egy alaptáblám és külön munkalapokon is meglenne minden adat, nemcsak összegezve. Vagy marad az openoffice adatbáziskezelője...
Üdv Jozsef!Multkor kaptam sgitséget,és most is lenne egy kérdés:
milyen képletet kell beirnom,hogy egy oszlop netto ár tartalma egy másik oszlopba btto árként beirható legyen.Pl:A oszlop 4000Ft;B oszlop 4800FT.Köszönom.Üdv
Szerintem sehogy, mert az biza nem frissül magától. Max. lerögzíted makróként a szétdobálás folyamatát és ha az alaptábla változik, akkor megnyomod a gombot.
Szerintem.
Ha irányított szűréssel szétdobok egy táblázatot több munkalapra, akkor ha az alaptábla bővül, hogy tudom rávenni az excelt, hogy újra csinálja meg az irányított szűrést?
Köszönöm, részben ezt csináltam. keresőfüggvények ki voltak lőve, mivel ugyanazon dátumhoz sok sok érték tartozik és a dátumot kellet volna keresni. Megoldottam irányított szűrővel.
Ha más nem, az ide-oda lapozgatás biztosan nagymértékben lassítja a futást. A lapozgatás elkerülhető, ha a Copy parancsot megfelelően paraméterezzük. Pl.:
Akkor a javaslatom a következő lenne:
1. A szűrésről készíts kivonatot egy külön munkalap(ok)ra (Adatok/Szűrő/Irányított szűrő). Itt rakd össze a megfelelő párokat. Fontos dolog, hogy az eredményben szerepeljen a második tábla rekordazonosítója.
2. A második tábla eredeti verziójában azonosítóra vonatkozó FKERES vagy KUTAT fügvénnyel vidd át az eredményt egy külön oszlopba.
3. A legjobb az egészben, hogy ez teljesen lemakrózható.
Üdv
József
Saját tapasztalat alapján mondom, hogy felejtsd el Copy-Paste megoldásokat, és inkább valamilyen FKERES/KUTAT fv. alapú megoldással kösd össze a két táblát.
Üdv
József
Miként kivitelezhető az, hogy látható cellákból másoljon át látható cellákba? (Egyik munkalap szűrt állománya copy - Másik munkalap szűrt állománya Paste)
"Ha ez zavar, szólj, mert van rá viszonylag egyszerű megoldás."
Nos, hát tévedtem... Valóban van megoldás, csak nem az, amire én gondoltam. Az valóban viszonylag egyszerű lett volna... ha működne... De nem működik, ezért feltettem a kérdést egy másik fórumon, és ezt kaptam válaszul. Ez viszont pofonegyszerű, és működik is.
Szóval csak annyi, hogy a függvényt ki kell egészíteni egy sorral, így:
Function xyz2(Cella As Range) Dim Rng As Range, c As Range Application.Volatile ' ez az új sor . . . End Function
Nem zavar, mert egy olyan makroban hasznalom, ami torli a munkalap teljes tartalmat es ujra felepiti. Bar ezt jo tudni, igy a kodbol ezt nem lattam volna.
Annyiból nem hibátlan, hogy nem számolja át magát automatikusan, ha a B oszlopban megváltoznak az értékek. Ez azért van, mert bár a függvény a számoláshoz a B oszlop adatait használja, a bemeneti tartománya az A oszlopból való egyetlen cella. Az excel csak akkor számolja újra a képletet, ha abban a cellában van változás.
Aztán itt van az is, hogy ha pl. A5 értéke megváltozik, akkor csak C5-öt számolja újra, pedig ez a változás nem csak C5-re, hanem C1-től C6-ig az összes cellára hatással van. Azokat is át kellene számolni, ami szintén nem történik meg.
Ha ez zavar, szólj, mert van rá viszonylag egyszerű megoldás.
hibatlan, nagyon koszonom. hat ugy latszik ezeket meg tanulnom kell :( Csak egyetlen szamot kellet csak atirnom benne, mivel mashol vannak az oszlopok az eredetiben
adatok/iranyitott szuro/minden latszik
ha ez inaktiv, akkor meg jelold ki az osszes cellat es kattints valahol a sorszamok kozotti vonalra duplan (amikor a kurzor megvaltozik...)
Kaptam egy excell tablát amiben 2 sor egymásra van csuszva. pl 1,2,3,5,6 A 4-es sort kene szerkeztenem ehhez elo kene csalnom. A nyomtatási képben látom a 4-es sor tartalmát. Mi a trükk?
Function xyz2(Cella As Range) Dim Rng As Range, c As Range
'kiindulási cella Set Rng = Cella
'keressük az azonos értékű cellákat felefelé Set c = Cella Do While (c.Row > 1) And (c = Cella) Set Rng = Union(Rng, c) Set c = c.Offset(-1) Loop
'keressük az azonos értékű cellákat lefelé Set c = Cella Do While (c.Row < c.Parent.Rows.Count) And (c = Cella) Set Rng = Union(Rng, c) Set c = c.Offset(1) Loop
'eltoljuk a munkatartományt 1 oszloppal balra Set Rng = Rng.Offset(, 1)
'végrehajtjuk a számítási műveletet xyz2 = 2 * WorksheetFunction.Max(Rng) - WorksheetFunction.Sum(Rng) End Function
A SZUMHA-t csak pédaként írtam, hogy valami ehhez hasonló dolgot kell produkálnia, csak a lejebb megadott feltételekkel
Beszúrok egy képet:
[image1]
A "Marad" oszlopban kell megkapnom az azonos ID-k sorában lévő Értékekből a számot úgy, hogy a legnagyobból kivonom az összes többit.
"Ezt tovább lehet úgy fejleszteni, hogy pl az "A" oszlopban lévő azonos (szomszédos, egymás alatti-feletti) értékekhez tartozó számokat vonja így ki egymásból?"
Minden bizonnyal igen, de nem értem a kérdést. Tudnál valami példával szolgálni?
Hű, ez alapos volt, köszönöm. Még átrágom - igazából csak azt a szorzást nem értettem. Asszem ebből megint tanulni fogok egy csomót. köszi még egyszer!
Ezt tovább lehet úgy fejleszteni, hogy pl az "A" oszlopban lévő azonos (szomszédos, egymás alatti-feletti) értékekhez tartozó számokat vonja így ki egymásból?
Van egy problémám: Össze kellene számolni egy tartományban, hogy hány darab pl. "p", ill. "P" karakter van. (most ne foglalkozzunk azzal, hogy miért nem mással jelölik az adatokat)
A darabteli függvény nem különbözteti meg a kis-nagybetűket.
Csak úgy tudom megoldani, hogy egy másik tartományban lekérdezem a kód függvénnyel a karakter kódját és erre a tartományra használom a darabteli függvényt.
Itt egy felhasználói függvény, amelynek cellatartomány a bemeneti adata. Ez akárhány cella lehet, nem is kell egy sorban v. egy oszlopban lenniük. De természetesen működik 5 db egymás fölötti/alatti cellával is.
Function xyz(Tartomany As Range) Dim Rng As Range, c As Range
Set Rng = Tartomany(1) For Each c In Tartomany If c.EntireRow.Hidden = False Then Set Rng = Union(Rng, c) Next
xyz = 2 * WorksheetFunction.Max(Rng) - WorksheetFunction.Sum(Rng) End Function
lehetséges olyan felhasználó függvényt írni, ami a RÉSZÖSSZEG függvényhez hasonlóan működve csak a látható értékkel dolgozik, mégpedig úgy, hogy a legnagyob számból kivonja a többi kisebb számot?
Vagy makró...
A Te képleted is jó, amennyiben a sorban utolsó, kitöltött cella előtt nincsenek üres, vagy nulla értékű cellák. Ha mondjuk D21-től kezdve ezeket az értékeket írod be: 2, 4, 0, 6, 11 akkor a Te képleted 6-ot ad eredményül. De hogy az ilyen közbülső nullák vagy ürescellák megengedettek-e, előfordulhatnak-e, azt csak Te tudod, én nem építhettem erre a feltételezésre...
A tömb-képletek úgy működnek, hogy a benne megadott tartományon egy belső loop-ot hajtanak végre. Vegyük most csak MAX(OSZLOP($B1:$M1)*($B1:$M1>0)) kifejezést. Ezt úgy lehet felbontani, hogy MAX(OSZLOP(B1)*(B1>0);OSZLOP(C1)*(C1>0);...OSZLOP(M1)*(M1>0))
Vagyis, megkeresi a legnagyobbat az OSZLOP(B1)*(B1>0) OSZLOP(C1)*(C1>0) ... OSZLOP(M1)*(M1>0) értékek közül.
Nézzük meg akkor, hogy mit takarnak a OSZLOP(B1)*(B1>0) típusú kifejezések.
Az OSZLOP(B1) értéke mindig 2, OSZLOP(C1) értéke mindig 3, stb. OSZLOP(M1) értéke mindig 13
A szorzás másik oldalán egy IGAZ/HAMIS értéket eredményező kifejezés áll. (B1>0) HAMIS értéket ad akkor, ha B1 cella üres, vagy nulla van benne. IGAZ értéket ad minden egyéb esetben. (Akkor is, ha a cellában szöveg van.) Az IGAZ érték matematikai műveletekben 1-et jelent, a HAMIS pedig nullát.
Így tehát az OSZLOP(B1)*(B1>0) típusú kifejezések sorában azoknak az oszlopoknak az indexe szerepel, amelyekben az első cellája nem nulla értékű, a többiek esetében nulla. Pl. Cella ----------------------------------- B1 - C1 - D1 - E1 - F1 - G1 - H1 - I1 - J1 - K1 - L1 - M1 Cellaérték ----------------------------- 1---- 1 -- 4 --- 4 --- ---- 0 --- 3 OSZLOP($B1:$M1)*($B1:$M1>0) - 2 --- 3 -- 4 --- 5 -- 0 --- 0 --- 8 -- 0 --- 0-- 0 --- 0
(Megjegyzés: nem tudom, miután elküldöm, hogy fog kinézni a fenti táblázatocska. Azért tettem bele a sok kötőjelet, hogy tartsák a cellaértékek a távolságot.)
A MAX(OSZLOP($B1:$M1)*($B1:$M1>0)) kifejezés a fenti értékek legnagyobbikát adja vissza, tehát az utolsó olyan oszlopnak az abszolút indexét, amelynek első cellájában nullától különböző érték van.
Ez a példa esetében a H oszlop, vagyis 8.
Utána már egyszerű, a kapott értéket behelyettesítjük az INDEX függvénybe: =INDEX(B1:M1;1;8 - 1)
És azért kell a -1, mert az INDEX függvény a megadott B1:M1 tartományon belüli, relatív oszlopszámot vár, miközben a kapott 8-as érték abszolút oszlopszám. Ha a tartomány B oszlopból indul, akkor eggyel kell korrigálni, ha C-ből, akkor kettővel, stb.
Igen. Azért van ez, mert a -1 a képlet végén az A oszlopra vonatkozik. Ha C oszlopba írod, akkor -3 kell. Erre csak most jöttem rá, pontosabban erre eddig nem gondoltam. Szóval ez a képlet csak oszlopon belül másolható...
Köszönöm.
Ezt írtam bekapcsos zárójelben: (mivel kiíratni a c21-be kellene)
=INDEX(D21:O21;1;MAX(OSZLOP($D21:$O21)*($D21:$O21>0))-1)
, de nem működik :(
Nullát ír ki (Írtam be adatokat a megadott sorba)
Pl. így makróval, ha jól értelmezem a feladatot, azaz az első (vagy aktuális) oszlop egyes celláitól jobbra eső 12 cellában keressen.
Előszőr ki kell jelölni az érdekelt tartományt, az első oszlopon belül, aztán indítani:
Sub Gomb1_Kattintáskor()
Dim R As Range
Dim C As Range
Dim k As Integer
Dim T As String
Set R = Selection
For Each C In R.Columns(1).Cells
Cells(C.Row, C.Column) = ""
For k = C.Column + 12 To C.Column + 1 Step -1
T = Trim$(Cells(C.Row, k))
If (IsNumeric(T) And Val(T) 0) Or ((Not IsNumeric(T)) And T "") Then
Cells(C.Row, C.Column) = Cells(C.Row, k)
Exit For
End If
Next k
Next C
Set R = Nothing
End Sub
Egy lehetséges megoldás tömb képlettel: A1 cellába ezt a képletet írd: =INDEX(B1:M1;1;MAX(OSZLOP($B1:$M1)*($B1:$M1>0))-1) majd a végén nyomj Ctrl+Shit+Enter-t
Ha jól csináltad, a képlet kapcsos zárójelek közé kerül, így: {=INDEX(B1:M1;1;MAX(OSZLOP($B1:$M1)*($B1:$M1>0))-1)n
Sziasztok!
Az excel eslő oszlopába ki kellene íratnom az utána következő 12 cellából azt, amelyik utolsónak tartalmaz értéket (azaz vagy nem üres, vagy nem nulla). Ezt hogyan tudom megoldani szerintetek?
Köszi
A mutatott pontosság szerint: A cellákban tárolt értékeket teljes pontosságúról (15 számjegy) végérvényesen a képernyőn megjelenő formátumúra (tizedesjegyeket is beleértve) módosítja.
Nem lehet, hogy mégis a winusert írja be, csak ugyanaz volt a tag loginneve a NetWare-ben meg a Windowsban? Aztán valamelyikben átjelentkezett, vagy más ült le a géphez, aki csak az egyikben jelentkezett át, és így mentéskor az Excel a winusert, a hálózati log pedig (logikusan) a hálózati felhasználót logolja.
Nézd meg, hogy a cellaformázásban hány tizedesjegy van beállítva a számformátumra, mert úgy néz ki az a 586,39-valójában több tizedesjegyu, csak ket tizedesre kerekíti az excel a beállítás miatt, mert pl. 586,385 * 2275 = 1334025,875
Mindazonáltal az openoffice-os megoldás bevált, mert az megnyitotta, úgyhogy köszi szépen!
Valami egyébként nem stimmel az excelemmel, nem számol pontosan a munkalap bizonyos részein.
Az egyik munkalapból szedem át az adatokat a másikba, ott összeszorzok és pl. 586,39*2275 nála 1 334 025,88 míg nálam sima számológépen meg 1 334 037,2
kérdésem: novelles hálózatban az excel tábla az adatlap/statisztika/utoljára mentette részhez a novelles logint írja be? És hogy lehet az, hogy ez másik user, mint amit a novell log tartalmaz a "last update" -nél? (Date percre pontosan stimmel. Bár ez már inkább novell fórumba való kérdés, de ha vki tudja, köszi.)
Tegnap este elmentett excel fájlomat ma már nem nyitja meg az excel, valami lett a fájlal. Kerestem rá recovery tool-t meg ilyesmiket, szépen molyolnak is vele csak egyik sem menti el mert mind fizetős 100-200 dolcsi között. Nem tudtok véletlenül valamilyen free repair tool-t, ami bevált? Office 2000 alatt xp-vel.
Köszönöm, én a makrógombra jobbkatt/makróhozzárendelés ablakban kerestem, ez gondolom a menüből lett kiválasztva.Meg is néztem, a gond csk az hogy inaktívak a gombok (az első kettő természetesen nem az) Nem tudom miért...Na mind1
Meg amúgy is, hogy a fenébe lehet a makrógombhoz UTÓLAG billentyűpaancsot rendelni?Rögzítés indításakor meg lehet adni azt tudom, na de ha nem rögzítettem, vagy nem adtam meg?
Akadt megint egy problémám, apróság ezért bízom benne hogy vki tudja a választ. Létrehoztam egy saját toolbart <Private Sub Worksheet_Activate()> Működik is "semmi" gond vele.
Ha manuálisan hozok ilyet létre, akkor automatikusan hozzárendeli gombjait egy-egy billentyűparancshoz (ALT + (...) ) a gombok kezdőbetűje szerint - amit alá is húz egy vonallal a gombon
Na ez sajnos hiányzik!
Mi lehet a gond?
A kód ez:
Private Sub Worksheet_Activate() On Error Resume Next
Dim tb As Object Set tb = Application.CommandBars.Add(Name:="Keres") '.Position =
With tb .Position = msoBarPopup .Enabled = True .Visible = True With .Controls .Add Type:=msoControlButton, ID:=2949, Before:=1 End With
With tb.Controls(1) .OnAction = "CibHuf" .Style = msoButtonIconAndCaption .Caption = "Keres" .Enabled = True End With End With End Sub
Private Sub Worksheet_Deactivate() On Error Resume Next Application.CommandBars("Keres").Delete End Sub
eredmény oszlopa jobbra van attól amiben keresek? mert az oszlop számra negatív számot nem enged megadni.
Igen, ez így van. Helyette használható a KUTAT (Excel 2003-tól KERESÉS) függvény, ahol a keresési- és eredményvektor tetszőleges sorrendben lehet. Igaz, a KUTAT nem tudja a pontos keresést, hanem csak a tartományban való keresést. Ha ilyenre van szükség, akkor az INDEX és HOL.VAN függvények egymásba ágyázásával ki lehet trükközni.
köszönöm, újra beírtam, és tényleg jó. lehet valami elgépelés volt valóban.
hamár ittvagyok, az FKERES függvényt csak úgy tudom alkalmazni, hogy a megkapott eredmény oszlopa jobbra van attól amiben keresek? mert az oszlop számra negatív számot nem enged megadni.
A példádban szereplő képlet teljesen jól működik (1706 az eredménye).
Ami hiba lehet, hogy a mezőnevekben valamilyen nem odavaló karakter van beírva pl. szóköz. Ezért célszerű a feltételtábla szereplő mezőneveket és szöveges értékeket mindig másolni. Illentve a képletben is hivatkozni a mezőnévre
Kérlek, ha valaki tud segítsen, az AB.XXX fügvényeket kellene megértenem, de semmi leírásom nincs hozzá.
Az exel beépített helpjéből azthittem értem, de amit szeretnék csinálni nem működik. Ami fura, hogy van ott egy példa melette, de miután azt nem értettem, beírtam, és az sem működik.
kellene nekem 1 működő példa, és abból biztosan megértem, de googléval sem találtam.
előre köszönöm ha vki tud segíteni, akár itt, vagy akár a kiralyattila@freemail.hu címre elküldve. (valami nagyon egyszerű példa elég, sőt az a jó)
Nem úgy értettem a címét. Itt c egy objektumváltozó volt. Az activecell is egy objektum az excelben, erre hivatkozik a c változó a set .... parancs végrehajtása után. Ezek után az activecell minden tulajdonsága, metódusa elérheto a c változóval. Egyébként az excel cella címe (pl. A1), ami te kérdezel azt az address tulajdonsága tartalmazza a cellának.
Érthető volt, amit írtál, csak valószínűleg én voltam béna és nem tudtam beilleszteni a kódomba. Köszönöm.A "Set" -el mindig a cella címét lehet eltárolni? Ez erre jó? Milyen formában tárolja azt?Sor-Oszlop?
Megszokásból írom, nem feltétlenül szükséges, de illik deklarálni a változókat. Akkor van értelme persze, ha megadja az ember az option explicit utasítást is (ezt eljáráson kívülre kell tenni) , ekkor figyelmeztett, ha deklarátlan változót használok a programban, így el lehet kerülni pl. az elütések miatti téves változóhasználatot,és ezzel mindenféle rejtélyes hibákat. Amit írtam egyébként, csak példának szántam, nem volt teljes kód, kár hogy nem fogtad a lényegét.
köszönöm, próbáltam, sajnos ebben a formában nem tudtam beilleszteni - viszont sikerült megoldanom a dolgot oly módon, hogy találtam matematikai szabályszerűséget a vízszintesen +1-el növekvő (EREDŐ) oszlopszámok és a függőlegesen +1-el növekvő (CÉL) sorszámok között. Így egy sorból meglett az egész.
Dim SOR Dim OSZLOP TALALATOSSZEG = ActiveCell.Offset(0, 9) OSZLOP = ActiveCell.Column SOR = ActiveCell.Row
Cells(OSZLOP - 3 + SOR, 9) = TALALATOSSZEG 'így mindig +1-el nő a sorszám
Még azt had kérdezzem meg, hogy miért jobb a "Dim"-el megadni a változót, mint nélküle?
köszönöm, próbáltam, sajnos ebben a formában nem tudtam beilleszteni - viszont sikerült megoldanom a dolgot oly módon, hogy találtam matematikai szabályszerűséget a vízszintesen +1-el növekvő (EREDŐ) oszlopszámok és a függőlegesen +1-el növekvő (CÉL) sorszámok között.Így egy sorból meglett az egész.Dim SORDim OSZLOPTALALATOSSZEG = ActiveCell.Offset(0, 9)OSZLOP = ActiveCell.ColumnSOR = ActiveCell.RowCells(OSZLOP - 3 + SOR, 9) = TALALATOSSZEG 'így mindig +1-el nő a sorszámMég azt had kérdezzem meg, hogy miért jobb a "Dim"-el megadni a változót, mint nélküle?
Nem értem persze mit akarsz igazából ezzel, de egy probléma mindenesetre látszik: az aktiv cella helye a kód végrehajtása során változik. Az aktív cella sorának kiválasztásakor az aktív cella a kérdéses sor elso cellája lesz. Ilyenkor mindenesetre célszeru lenne tárolni egy változóban az aktív cella címét a program elején, és ezek után a változóval helyettesíteni az aktivecell-t. Persze egyéb gond is lehet a programmal.
Dim C as Range
set C=activecell ' a cella címét tárolja, nem az értékét
köszönöm közben rájöttem mi a gond - bá megoldani nem tudom. gyakorlatilag egy vizszintes (oszlop) mozgast kene transzponalni fuggoleges (sor) mozgassa. magyaran egy jobbra lepest egy lefele lepesse (aktiv cellaban gondolkodva)
"ebben a formában le vonná a sorszám értékből azt az 1-et?"
Elvileg igen. Esetleg kipróbálhatod úgy is, hogy Range("I" & ActiveCell.Row - 1) = OSSZEG
De ha a sor-indexből levonsz egyet, akkor az aktív cella fölé kerülsz egy sorral, nem alá... Vagy nem? Mindenesetre kipróbálnám, hogy mi történik, ha nem vonsz ki belőle 1-et.
A célom az, hogy megtalál egy referenciaszámot és a hozzá tartozó értéket kéne egymás alá helyeznie, ez meg is, csak nem egymás alá, hanem mindig ugyanabba a sorba. A Cells(ActiveCell.Row - 1, 9) = OSSZEG sor szolgálná azt a célt, hogy a következő találat már az előző alá kerüljön. Ha le is vonnáazt a "1"-et akkor oda is másolná....Az agond hogy ebből a kódrészletből igazából senki nem jut ajd megoldásra, én csak arra vagyok kíváncsi, hogy ebben a formában le vonná a sorszám értékből azt az 1-et?
Azt figyelembe vetted, hogy Cells(ActiveCell.Row - 1, 9) már a másik sheet-en (Wns) van, és az Activecell erre vonatkozik?
A másik tippem, hogy az utolsó sorban Offset(0,1) helyett esetleg Offset(-1,0) működne, ha ez a kódrészlet egy ciklus magjának része. De ezt csak tippelem, mert valójában fogalmam sincs, mit akarsz elérni. Tudsz kicsit bővebben fogalmazni?
Apró kiegészítések: - nálam Ctrl+Shift+Enter -rel kell tömbképletet készíteni - automatikusan átvált C:C-re (65536-nál) és az nem jó, de a kisebb tartomány is jó nekem.
Hoppá! Most látom az Excel 2003 cserefunkciója nem is ugyanaz mint az Excel 2000-é! Elvagyok szomorodva! Ez így nem nyerő tényleg. Pedig én sokat éltem ezzel a csereberével. Eddig a régi verziót használtam. Lehet, hogy visszatérek rá? :((
Így hirtelen ez jut eszembe:Ctrl + F / Csere funkcióval kb. 4 kattintással ki tudod szedegetni az összes "*" és "?" karaktert és azt fogja látni a darabteli amit akarsz.De ha gyakran kell megismételni ezt, akkor erre tudsz rögzíteni makrót is és azután már csak egy kattintás.
Egy tartományba kódokat kell írni, majd összeszámolni azokat. Ez a darabteli függvénnyel megy is, csakhogy a kódok között van "*" és "?" karakter is. Ezeket joker karakternek hiszi az Excel (most ne bolygassuk azt, hogy nem szerencsés ezeket kódoknak használni).
Hogyan lehetne mégis összeszámoltatni ezeket.
Tehát a darabteli(C:C;"*") képlet számolja a "*" karaktereket a C oszlopban (ugyanígy "?"-re is). Szövegformátummal, szöveg függvénnyel már próbálkoztam, de nem jött össze:-(
Egy banális kis hülyeség, de meggyűlt vele a gondom (azt hiszem "group by" a neve, de nem találom, többek között azért mert nekem magyar excel-em van). Szeretném az ismétlődéseket kiszűrni egy oszlop adataiban. Például az A oszlopból a B oszlopot szeretném megkapni. Köszi: Gábor
A
B
Knorr
Knorr
Knorr
Haldex
Knorr
Wabco
Wabco
Haldex
Knorr
Wabco
Haldex
Knorr
Wabco
Pl. a munkafüzet neveket tartalmazo oszlop valamely cellájába állva az azt követo cellákban levo azonosítók alapján megnyitja a munkafüzeteket és a szomszédos cellákba írja a kiolvasott adatot:
Sub Gomb1_Kattintáskor() Dim C As Range Dim Also As Range Dim V Dim Wbn Dim Wbn2 Dim Shn Dim Ut Dim M On Error Resume Next Ut = "C:Documents and SettingsSajátDokumentumok" Set C = ActiveCell Wbn = ActiveWorkbook.Name Shn = ActiveSheet.Name Set Also = Cells(65536, C.Column).End(xlUp) For M = C.Row To Also.Row V = "" If Trim$(Workbooks(Wbn).Sheets(Shn).Cells(M, C.Column)) <> "" Then Wbn2 = Trim(Workbooks(Wbn).Sheets(Shn).Cells(M, C.Column)) & ".xls" Workbooks.Open Filename:=Ut & Wbn2 V = Workbooks(Wbn2).Sheets(1).Cells(1, 1) ' elso munkalaprol, A1-ból vegye Workbooks(Wbn2).Close (SaveChanges = False) Workbooks(Wbn).Sheets(Shn).Cells(M, C.Column + 1) = V 'm-edik sorba, szomszedos oszlopba tegye End If Next M Set C = Nothing Set Also = Nothing End Sub