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.
Köszönöm pafff ! Hogy én mennyit szarakodtam korábban ezzel. Benne volt ez a PONT(XY) a régebbi excel verziókban is? Mert régebben sehogyan sem találtam megoldást erre a problémára. Hogy mennyi tudományos publikációm ment volna könnyebben ha hamarabb megkérdezem ezt... és én még azt hittem értek az excelhez...
Namármost a dátumokat az X tengelyen a hozzá tartozó értékeket az Y tengelyen szeretném viszontlátni egy grafikonban. A probléma csak az, hogy a dátumokat equidisztáns távolságokra, vagyis egyforma távolságokra helyezi, így a kapott görbe nem tükrözi a valóságot. Hogyan lehet megoldani, hogy arányos távolságokra (értéke szerint) helyezze a pontokat az X tengelyen??? Az nem megoldás, hogy minden köztes pontot is felveszek mondjuk 0 értékkel...
hogy érted a debugot? makróként szépen fut, hiba nélkül, sőt, a makró elején van formátumvizsgálat és konvertálás is, ha szükséges. excel azt mondja, hogy "that name is not valid". annyi van még, hogy amikor beszúrnám egy cellába a fv-t, akkor a "fuggvenynev()" feljon a varázslóban, de a kurzor a zárójelek után villog, míg egy beépített fv-nél rendesen a zárójelekben jelenik meg.
971, 963-as hozzászólások segítségével. Az Excel nem tud "érvényesíteni", az egész csak a cellán keresztül történő beírásra vonatkozik. Ha jól emlékszem, vágólapon keresztül is beírható bármilyen érték. Egyébként a fent említett program segítségével lehet vigyázni, hogy mit írjanak be.
meg egy kerdes:
hogyan lehet azt megoldani, hogy ha irok egy makrot es kirakom egy sajat menube, akkor az csak abbol a file-bol latszodjon, ahol irtam? vagyis az a menu csak akkor legyen fent, ha azt a bizonyos file-t behivtam.
lenne egy kerdesem:
egy oszlopban ervenyesiteni akarom az adatokat, listakent beadtam azt, hogy "IGEN,NEM", tehat mostantol munkalaprol csak ezt a ket erteket lehet bevinni.
gond a kovetkezo: egy makrobol meghivom az urlapkitoltot (activesheet.showdataform), viszont ezen keresztul mar BARMILYEN erteket be lehet vinni. hogyan tudom megoldani ,hogy az urlapon keresztul is csak "IGEN,NEM"-et lehessen beadni? akar makrobol, akar anelkul (bar makrobol nehez lesz, mert az urlap futasanak idejere felfuggeszti a makrok futasat, meg azt sem latja pl. a record macro, hogy mit irtal be).
amugy nagyon szeretem a forumot, nem nagyon irogatok ide, de sokat tanulok belole, koszi mindenkinek!
irtam egy függvényt excel visual basicben, szépen működik is, ha kódból hivom meg. excel pajti látja is a user defined functions-ök között, be is tudom szúrni bármelyik cellába, feljön a "függvényvarázsló", vagy mi a szösz, ám amikor megadom az egyetlen input paramétert, "invalid name" vagy vmi hasonlóval hibát generál, és nem működik.
Tapasztalatok más kezdőknek:
Néhány kérdésemben (904, 925, 970) feltettem azt a kérdést, vajon hogyan lehet ellenőrizni makró programmal a beadott adatok helyességét.
Kaptam is szépen segítséget, köszönöm. Most pár szóval összefoglalnám a korábbi kudarcaim okát és kisérleteim eredményét:
Adott volt egy szép lap, ahol egy bizonyos tartomány input területként szolgált és a beadott input kiértékelésének eredményeképpen módosítja egyéb mezők tartalmát.
Megírtam a makrót, és "kézből indítva" szépen azt is csinálta, amit kell.
Szerettem volna ezt a makrót automatikusan elindítani, és itt fordultam ezen forum tagjaihoz, és kaptam is segítséget.
1. Kiderült, hogy a megfelelő lap kódterületén megírt worksheet_change eljárás automatikusan elindul, ha bármely mező tartalmát megváltoztatom.
2. De itt is problémám volt, mert csak késöbb vettem észre hogy ezen eljárásnak van egy kötelezően megadandó paramétere, tehát a deklaráció helyesen:
Private Sub Worksheet_Change(ByVal target As Range) ... utasítások....
End Sub 3. De még mindig nem ismertem fel a "target" input paraméter jelentőségét, és az eljárást végig az "Activecell.Previous."-ra alapoztam, ezért állandóan vigyázni kellett, hogy pontosan a sorban jobbra következő mezőre lépjek, egyébként nem azt ellenőriztem, amit szerettem volna.
Ezért feszegettem, honnan lehet tudni az utoljára módosult cella címét. Erre kaptam is ötleteket, de a "húszfilléres" csak pár napja esett le:
Private Sub Worksheet_Change(ByVal target As Range) ... utasítások....
End Sub eljárás input paramétere a "target" pont ezt a címet tartalmazza!!!
Ezek után az eljárást már szépen meg lehet írni, csak a lap szervezésénél kell vigyázni, hogy meg tudjuk különböztetni a felhasználó által módosított (módosítható) mezőket, és a program által módosítandó mezőket!
Ennél is szebb lenne, ha a Data/Validation-nál (Adatok/Érvényesítés-nél) megadható lenne a custom eljárásnál egy Function neve, ami FALSE-t ad vissza, ha hibás adatot adok be, és TRUE-t jó adatbevitelnél.
Ez valamiért az alábbi Példa oldalon valamiért nem müködik. A makró müködik, de nem (jól) kapom vissza a Function által beállított RETURN értéket.
Mégegyszer a beszúrásról...
Nem beégetett határ, mert a beszúrt lapokra másolt adatok mennyiségétől és/vagy a párhuzamosan megnyitott adatbázistól függ, hogy mikor áll le (amunkám során a 71-es lapnál). A példát csak azért írtam, hogy üres lapokkal is megcsinálja(több mint 256-nál). Miután a makró laállt, kézzel sem lehet munkalapot másolva beszúrni! A munkafüzet bezárása és megnyitása után tovább működik a beszúrás, másolás akár makróból, akár kézzel. Kerülő megoldás lehet több is, de ettől a probléma fennáll.
Natloz
Hello Mindenki!
Visual Basicben kérem a segítségeteket..
Több lapot szeretnék beszúrni egy munkafüzetbe, és azokat átnevezni, majd adatbázisból feltölteni.
Egy határ után leáll...
Kézzel sem enged beszúrni...
Mentés után sem...
Jött a jó öreg Microsoft módszer: bezár-megnyit-működik!
Mi lehet a hiba oka ???
Pl.:
sub X()
for i= 1 to 500
sheets("Munka1").copy before:=sheets(1)
sheets("Munka1 (2)").name=i
next i
Ez kb i=260-nál leáll...
Csak bezárás után „folytatható”
Hány_számjegy Azt adja meg, hogy hány számjegyre kell a számot kerekíteni.
· Ha a hány_számjegy nagyobb, mint 0 (nulla), akkor a szám a megadott számú tizedesjegyre lesz kerekítve.
· Ha a hány_számjegy 0, akkor a program a számot a legközelebbi egész számra kerekíti.
· Ha a hány_számjegy kisebb, mint 0, akkor a számot tizedesvesszőtől balra kerekíti.
Számszerűsítenem kéne vizuálbézikben, hogy melyik cellán áll éppen a kijelölés.
Szóval ha az aktív cella mondjuk a "b3", akkor adjon vissza valami olyat, hogy row=3 column=2.
Lényegében a target tartalmazza az utolsó billentyűt. Ezért azt csak leellenőrzöm.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.OnKey "{ENTER}", "MyProcedure"
If Target = "a" Then
z = MsgBox("Igen a volt!")
Else
z = MsgBox("Nem a volt!")
End If
End Sub
A példádban az activecell viszont már az új cellatartalomra mutat, de nem tudom kiolvasni melyik celláról kerültem ide.
Public Sub MyProcedure()
If ActiveCell = "a" Then
z = MsgBox("Igen a volt!")
Else
z = MsgBox("Nem a volt!")
End If
End Sub
Lényegében a példád jó és működik is, ha a kitudnám találni melyik celláról kerültem a jelenlegi aktív cellára. Ha van valami ötletet, akkor szívesen fogadnám. Köszi a segítséget.
Szeretném a Data/Validation menüpontban egy makró függvénnyel ellenőrizni a beadott értéket.
Ezen célból:
1. Megírtam a függvényt a Sheet1 lapra: Lényege: Páratlan oszlopba páratlan számot, páros oszlopba páros számot szabad beírni
Function atver() As Boolean
oszl = ActiveCell.Column
omar = oszl - 2 * Int(oszl / 2)
emar = ActiveCell.Value - 2 * Int(ActiveCell.Value / 2)
If emar = omar Then
atver = True
Else
atver = False
End If
MsgBox "atver function visszadott érték: " & atver
End Function
2. Definiáltam egy nevet: "ell" Refers to "=Sheet1.atver()"
3. A data/validation kiválasztottam a Custom ellenőrzési feltételt, és a Formula mezőbe beírtam az "=ell" szöveget.
"Error Alert" mezőbe beírtam a megfelelő hibaüzenetet.
Tapasztalat: A program meghívja a rutint (msgbox korrektül írja ki a visszaadott értéket),
de ennek ellenére vagy továbbengedi a hibás értéket is (Error alert-ben definiált üzenet nem jelenik meg), vagy a jó értéket sem fogadja el, és akkor is kiirja a hibaüzenetet, amikor nem kéne.
Kérdés: Én feledkeztem-e el valamiről, vagy az Excel hülye-e egy kicsit?
Maga a móricka tábla
az "alma" értékhez megkeresi az a1:c10 táblában a 3. (C) oszlopban a hozzátartozó értéket. a végére a ;0 azért kell, hogy csak a teljes egyezőség esetén adja meg a 3. oszlopból az értéket, ne a legközelebbi megfejtéshez (pl. ha "alma" nincs, de van "alva", az amellet szereplő értéket ne tegye be, ha "almát" keresel)
Ok, tehat, az egyik worksheet kodjahoz, amelyen szeretned kovetni a valtozast, beirod ezt a kodot:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.OnKey "{ENTER}", "MyProcedure"
End Sub
Ez azt csinalja, hogy amikor a worksheeten akarmilyen valtozas is tortent, akkor ha a valtozas enterrel volt elkuldve, meghivja a MyProcedure nevu procedurat.
Beinsertalsz egy modult, es oda pedig beirod a MyProcedure nevu procedurat.
Mondjuk:
Public Sub MyProcedure()
If ActiveCell = "a" Then
z = MsgBox("Igen a volt!")
Else
z = MsgBox("Nem a volt!")
End If
End Sub
Tehat, ha amikor az aktiv sheeten, entert nyom, akkor ha az adott cellaba "a" kerul, akkor azt irja ki igen a volt, ha pedig barmi mas, akkor azt hogy nem a volt.
lolka_bolka!
Nekem nem sikerült a worksheet_change fuggvenyt es az application.onkey -t összehoznom. Valami segítséget kérhetnék tőled vagy valaki mástól?
Segítség, kérem! Az oszlopok betűi helyett számok vannak, a cellaértékek nem abszolútak hanem valami "=S[-4]O" mi ez? Iszonyú nagy láma vagyok, tudom, de egyszerűen nincs ötletem, sugóban sem találtam semmit...köszönöm
A celletartalom ellenőrzése nem lenne rossz megoldás, de sajnos nekem kb 3-400 ilyen cellába kellene beírnom az ellenőrzéseket. A másik rossz ebben az egészben, hogy időközönként a cellák mennyisége változik kb. 100-150 cellával. Valami egyszerű megoldásra gondoltam, de ha nem megy, akkor valami más progiban kell gondolkodnom. Különben köszi jorabszolga.
Nem listbox-ban vagy valamiben vagyok, hanem egyszerűen egy új lapon az excelben.
A B C
1 0 1 0
2 1 0 1
Az ábrát szemléltetésnek szántam, de táblázatot azt nem tudok ide rajzolni. Magyarán a Worksheet-nek nincs olyan paramétere, legalább is nem tudok róla, amivel a billentyűleütést kiolvasom. Például B1 cellában állok, és ki szeretném nullázni az értéket. Lenyomom a nullát, erre az első sorban levő többi cella értéknek át kellene váltani 1-re. Kérdés a cellában az, hogy történt billentyűleütés vagy nem, és ha igen mi volt az. Remélem a problémámat elég érthetően leírtam, ha tudd valaki, akkor segítsen nekem. Előre is köszi.
Private Sub UserForm_Initialize()
ListBox1.ColumnHeads = True '2. sorban van
ListBox1.ColumnCount = 3
ListBox1.RowSource = "a3:c24" '3. sortól a lista
ListBox1.BoundColumn = 1
ListBox1.ControlSource = "a1" 'üres cella
End Sub
A kérdésem a következő: Ha egy cellán állok, és oda adatot szeretnék bevinni és ott ellenőrizni az adat bevitelét, akkor ezt hogyan lehet megoldani. Magyarán történt-e billentyűleütés, és ha igen, akkor mi volt az adat. Ha tudtok valami megoldást, akkor írjátok meg.
Köszi.
Erre olyan listát mutat a listadoboz, hogy egy listaelem 3 oszlopra tagolódik. Például a következő három oszlopra: dolgozó neve, otthoni címe, telefonszáma. Tehát kiválaszthatod a listából, hogy
Kis Pista|Budapest, XVI. Farkas u. 10|06 20 100 7060
Másik, amit beállítottam, hogy
"ColumnHeads=True".
Erre megjelenik egy fejléc, ide írhatod az oszlopok címeit.
Dolgozó neve|Otthoni címe|Telefonszáma
No, a kérdés az, hogy hogyan kell a fejlécbe írni?
Segítsetek lécci, fontos lenne.
Excelben csinálok dialógusablakot.
Létrehoztam egy Listbox-ot, beállítottam, hogy több oszlopos legyen, valamint azt is, hogy legyen fejléce, az alábbi képen látható módon. Arra viszont sehogy sem sikerül rájönnöm, hogy hogyan tudok a fejlécbe írni. Nem tudja valaki?
Itt egy kis illusztráció:
[A hivatkozott kép már nem található meg a tar.hu-n] Köszi.
Nem a kitöltött cellák közül kéne "jobb alsó sarokban lévő", hanem annak a címe kellene, amelyiknek a tartalma legutoljára változott!!
(akár billentyüzetről, akár programból)
(valamiféle application.activesheet.lastupdated.address!)
range -nek lehet nevet adni, named range,
es a legutolso cellat is ki lehet olvasni, ha tudsz angolul, akkor par hozzaszolassal elobb ajanlottam egy weboldalt, ballagj el oda.
Amikor aktiválodik a worksheet_change, akkor az activecell már az új mező, amire tövábbléptem. Ez nem is baj ha a tab-bal vagy enter-rel léptem tovább és a default irány a jobbra következő mező. Ekkor az activecell.previous megadja az elöző mezőt.
De mi van akkor ha egérrel (akár véletlenül) egészen máshova pozicionálok?
Akkor honnan tudhatom, mi volt az utolsó (billentyüzetről) módosított mező ??
(904)-es hozzászólásomban felvetettem egy problémát: Szerettem volna, ha egy ellenörző eljárás automatikusan (Enter, tab, stb után) végrehajtodna.
Ez Tiba és a "Worksheet_change" függvény segítségével sikerült is.
Viszont egy pár bakiba (végtelen ciklus) azért belefutottam.
Az ellenörző rutin ugyanis ugyanazon a lapon módosított volna más mező(ke)t is, amik úgyszintén kiváltották a worksheet_change eseményt, miközben az "activecell.address" nem változott...
Kérdéseim:
1. Ki/be lehet-e kapcsolni egy ilyen esemény figyelését? Hogyan?
2. Van-e olyan metodus, eljárás, ami visszadja az adott lapon utoljára módosított mező cimét, és ami nem feltétlenül egyenlő az activecell.address-szel? Mi lenne ez?
3. Lehet-e egy RANGE-nak nevet adni, és olyan föggvényt deklarálni, ami nem a worksheet_change eseményt aktiválja, hanem ezt a "Range_change" eseményt?
Ha a fentiek közül bármelyikre lenne megoldás, a program elegánsabb (villodzásmentesebb) lehetne.
Select Case LCase(ActiveCell) 'Mi a feltetel.
Case "no"
With Selection.Interior
.ColorIndex = 5
.Pattern = xlSolid
End With
Case "yes"
'Ide majd az 5 helyere a masik szin kell
Case Else ' Other values.
'Ezt ki is hagyhatod, csak azert irtam ide
'hogy ha minden mas esetben valami mast kell csinalnia,
'akkor ez hajtodik vegre.
End Select
Azert Lcase mert akkor mindegy hogy No NO vagy no, megtalalja.
A macro felvevo nagyon jo dolog, ha felveszed vele, amikor beszinezel egy cellat, ott lesz, hogy mit csinaltal!
És olyat lehet függvényezni, hogy ha egy adott oszlopban a cella értéke "NO", akkor azt a cellát színezze kékre, ha "yes", akkor sárgára, minden más esetben ne színezze be?
vakker lehalok, excelben megy, word alatt már nincs ilyen függvény, baszki, ezt nem hiszem el.
§:-))))
Valakinek 5lete, hogy word alatt mi lehet a varázsszó?
Köszönöm a segítséget, de a worksheet_change eljárás elszáll.
Az alábbi 3 rutint írtam be a worksheet-hez:
Private Sub Worksheet_Activate()
MsgBox "worksheet_activate"
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox "worksheet_selectionchange"
End Sub
Private Sub Worksheet_change() MsgBox "worksheet_change"
End Sub
Használat során viszont az alábbi hibaüzenetet kapom egy szép messagebox-ban:
"compile error:
procedure declaration does not match description of event or procedure having
the same name"
Ha a worksheet_change rutint átnevezem (például worksheet_onchange -re),
akkor a hibajelzés eltünik, viszont akkor sem aktiválodik a rutin, de a két másik rutin
müködik.
Átverésként tudom használni a "worksheet_selectionchange" rutint.
Beírom az értéket, RETURN-nel továbbmegyek ez kiváltja a selectionchange eseményt, és ott
leellenörzöm a activecell.previous tartalmát és visitok, visszapozionálok, ha hiba van.
Maximalistaként szeretném tudni, hol kell valamit inicializálni, törölni, hogy az
emlegetett worksheet_change rutin (esemény) is müködjön!
Köszi a segítséget: szkripnyik
Ps: Ezen üzenet írása közben vettem észre a "selectionchange" eljárás paraméterét, és azt, hogy a "worksheet_change" eljárás is ugyanazt az input paramétert várja!!! :o)))))
Másrészt ugye ide olyan makrókat praktikus írni, amely valóban minden cella módosításakor le fog futni. Olyan makró, amely erre a lapba ír az esetek majdnem 100%-ban értelmetlen.
fix a könyvtárak darabszáma? bár ha nem, akkor is tudsz futtatni egy progit amelyik az összes alkönyvtárat benyalja az agyába, oszt egy drop down keretein belül (ugyan nem fastrukúrában) dialog-ban választhatóvá teszi.
Ez nem az igazi, mert ugyaen ez kiírja a könyvtárak nevét egy adott helyen, de ehhez még egy csomó mindent kell írni, hogy tudjon a csóka le föl rohangálni a struktúrába, drive-okat tudjon váltani, és vissza is kapjam a válsztása eredményét.
Kell lennie egy olyan utasításnak, ami ezt helyettem megcsinálja.
pl:
myval = melyik_konyvtarra_gondol_a_user()
ekkor a csóka mint az intézőnben odasétál a megfelelő könyvtárhoz, megnyomja az OK gombot, én pedig visszakapom a myvql-ba, hogy d:\szerzodesek\partner1\
itt van például a következő, ez szépen feladja a fáj/megnyitás menűpontot valami ilyenre gondolok, csak nekem könyvtár neve kell, és ne nyissa meg, csak tudjam kitallózni a könyvtárat.
' Display the names in C:\ that represent directories.
MyPath = "c:\" ' Set the path.
MyName = Dir(MyPath, vbDirectory) ' Retrieve the first entry.
Do While MyName <> "" ' Start the loop.
' Ignore the current directory and the encompassing directory.
If MyName <> "." And MyName <> ".." Then
' Use bitwise comparison to make sure MyName is a directory.
If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
Debug.Print MyName ' Display entry only if it
End If ' it represents a directory.
End If
MyName = Dir ' Get next entry.
Loop
Tudna nekem valki segíteni. Istennek se találok olyan utasítást, amivel a felhasználó kap egy ablakot, ahol kitallózhatja magának a megfelelő directoryt, és én azt kapom vissz eredményként.
Eddig inputbox-al kértem be a könyvtárnevet, de lusták a felhasználók, én meg láma vagyok VB-ben
Valami getdir() szerű függvényre gondoltam.
Lenne egy bonyolultabb mezőellenőrzésem, amit makróban meg is írtam. CTRL-billentyűre jól is müködik, de szeretném, ha valamiféle OnChange automatizmussal magától müködne.
Próbáltam a DATA/VALIDATION (Adatok/érvényesítés) menüben megadni az eljárás nevét (SUB-ként is Function-ként is) de nem megy.
Itt a topicban láttam hivatkozást a "worksheet_onchange" eseményre, de nem sikerült életre keltenem, biztos rossz helyen akartam definiálni.
Van egy workbook-om, amiben vannak linkek 2 másik workbookra. Na most az a gondom, hogy a linkek frissítését szeretném manuálisra állítani, de az Edit/Links.. menüpontban a "Maunual" beállítás szürke, azaz disabled státuszban van. Mi a fenét kell csináljak, hogy át tudjam kapcsolni manuálisra ?
hmmm. Na erről beszéltem, ez azért elegánsabb.
Lehet, hogy kéne már vennem egy profi Excel könyvet, amiben alaposan kitárgyalalják a VBA lehetőségeit is ?
Tudtok ilyen könyvet ? Lényeg, hogy az angol nyelvű excelhez legyen írva.
Bocsi, csak saját tudatlanságomat akartam szemléltetni. Én ilyen current, active tulajdonságot kerestem, de nem találtam. A select sor select oszlop eszembe sem jutott.
Az az igazság, hogy nem én vagyok itt a nagy spiler. Én csak ugatom a témát, általában magamtól jöttem rá néhány dologra, VBA-t is csak a makrorekorderből, illetve a helpből tanultam.
Úgyhogy lehet, hogy van ennél szebb, elegánsabb megoldás, de amit leírtam attól még működik, mégpedig pont úgy, ahogy te szeretnéd.
Label, igen az a cimke, ennek is vannak eventjei (eseményei) pl. DblClick.
Köszi. Szóval nincs olyan parancs hogy current.cells vagy active.cells ... vagy mit tudomén ... nehéz ez nekem .... És most jön az igazi label cimke őőőő valami rémlik, agyalok ha nem jön az ihlet kérdezek. :-))
Ez a megoldás egyébként arra emlékeztet, mikor egy nagy ventillátort installálsz a vitorláshajódra és avval fújod a saját vitorládat, hogy haladjon előre a hajó :-))))
Cells(Selection.Row, Selection.Column).Select
Kicsit idétlenül hangzik, de működik :) Visszaáll a kijelölés az eredeti cellára
Másik megoldás, hogy nem pushbuttonnal csinálod, meg, hanem egy Labelt teszel ki, (annak a hátterét eleve olyan színre állítod be amilyenre szinezni akarsz) és mondjuk a label dblclick event-re állítod be magát a szinezést. Ilyenkor nem kell trükközni a cella újraselectjével.
Köszi, köszi azt gondoltam hogy a cellaformázásal is megy. A másik problémámra is kaphatok irányt.Még pedig hogy a kijelölés vissza álljon oda ahol volt a háttér szinező makró után, amit néhány hozzászolással elöbb kaptam.
Nekem Mo összes városa kellene, és ilyet nem találtam. Egyetlen Magyarország térkép van, amely egy objektum (a megyék ugyan be vannak rajzolva, de nem tudok hozzájuk értéket rendelni).
Az excelnek van valamilyen terkep szolgaltatasa (Microsoft Map).
Amikor egy feluleten (festmeny) merheto intenzitas ertekeket (megvilagitas) kellett abrazolnom, egyszeruen beraktam a kepet a grafikonterulet hatterenek, es egy buborék diagramon abrazoltam az xy koordinatak segitsegevel.
Ezt szerintem egy terkeppel is siman meg lehet tenni.
Ha az álalad küldött karaktersorozat az A1-es cellában van, akkor
B1: =HELYETTE(A1;" hr ";":")
C1: =HELYETTE(B1;" min ";":")
D1: =HELYETTE(C1;" sec";"")
A számformátum miatt (tizedes pont, vessző, ez nem biztos, hogy nálad is kell:
E1: =HELYETTE(D1;".";",")
Így az E1 (vagy a D1) valódi dátum, amit formázhatsz akár úgy is, ahogy most van nálad, és simán sorba tudod rendezni. Ha a képleteket megértetted, akkor az egészből lehet egy képletet is csinálni (egymásba ágyazva őket), ekkor nehezebb ugyan megérteni, de kevesebb cellában lesz képleted.
De hátha tudtok segiteni. Egy celláben ez van:14 hr 05 min 07.0 sec Hogyan tudom megértetni az excell-el a hogy ez egy idő(pont), hogy rendezhessem nagyság (vagy hossz, nem voltam jó magyarnyelvből sosem) szerint.
OK, ezt hogy kell? Nem hangzik túl bonyinak.
Kijelölöm az oszlopokat és lekérdezem az egyező dolgok nevét és darabszámát? Hol találom ezt meg? Vagy külön kell valamit csinálni?
Másképp:
Ha van sok szöveges cellánk, amik gyártókat sorolnak fel, pl.
Sony|
Panasonic|
Elekta|
...stb.
Ezek gyártanak többféle terméket:
pl.
Sony|PD-100
Sony|DXC-300
Sony|SLV-223
Panasonic|NV-FS100
Panasonic|NV-FS200
JVC|akármi
Most árulja el valaki... hogy több munkafüzet 1-1 oszlopában szereplő szövegek közül szeretném EGY másik munkafüzet 1-1 oszlopában látni az előforduló szövegeket és azt, hogy melyikből hány darab van a megjelölt táblában.
Gyakorlatban ez így néz ki:
Hát kb. így nézne ki, ha az egész sort akarod színezni:
Function Szinez()
ActiveSheet.Unprotect 'Ez oldja fel a védelmet
Rows(Selection.Row).Font.ColorIndex = 3 'Ez a piros kódja
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 'Ez meg újra levédi
End Function
Ha csak egy cellát akarsz szinezni, akkor
ezt kell használni:
Cells(Selection.Row, Selection.Column).Font.ColorIndex = 3
Nem védtem le külön passworddel, mert nálunk nincsenek rossz szándékú userek :)
ja bocs ez csak a fontokat szinezi, ha az egész cellát akarod akkor:
Köztes megoldás, ha egyszerre egy módosítást végzel (pl. vastag lesz a betű), majd a "Korrektúra" eszköztáron megnyomod a "Következő megjegyzés" gombot, majd az F4-et. Így továbbra is kézzel csinálod, de azért már gyors lehet.
Adott egy megörökölt excel file, teletűzdelve cellamegjegyzéssel.
Lusta ember nem birja szusszal, hogy órákat töltsön el a megjegyzések betütípusainak átformázásával, de mégis ez lenne a feladat.
Tudom, hogy a cellmegjegyzést nem erre találták ki, de talán az alkotók is akkor használják, ha már nincs hova beirni a nyomoritott táblázatba azt a járulékos, fontos adatot.
1. keress két cellát, amit egész biztosan nem fogsz módosítani,
2. írd bele az értékeket, amiket a legördülő menüben szeretnél felkínálni,
3. menj abba a cellába, ahol ezeket használni akarod,
4. válaszd az Adatok / Érvényesítés menüpontot
5. "Beállítások" fül, Megengedve: lista,
6. a "Forrás"-nál add meg a 2. pontban kitöltött celláidat
7. a többi füleken megadhatsz figyelmeztetéseket, mindenféle egyebet
+ a legördülő cuccal "védett" cellákba lehet képletet is írni: amennyiben a képlet eredménye az engedélyezett értékeket veszi fel, elfogadja
Na látom nem csak nálunk van ilyen szinezés. (Pedig Én azt hittem). L-Gee betudnád ide copyzni a vba codot. Ha megtoldanátok annyival hogy az egészsor szinezze ki amelyiken a kijelölés áll. Ne mondjátok hogy irjam meg, mert nekem másképp jár az agyam mint a programozok-é. :)
Egyelőre most úgy oldottam meg, hogy felraktam 3 pushbuttont a sheet-re és mindegyikhez rendeltem egy szinező makrót, mert itt összesen csak 3 féle színállapota lehet a celláknak. A szinezés előtt feloldom a védelmet utána rögtön vissza is rakom. Ez megoldotta a makrótiltás problémáját is a file megnyitásakor, mert, ha nem engedélyezi a user, akkor szinezni sem tud :-)
Ez most így jónak tűnik.
Ha nem nagy a fájl, akkor a munkalapot lemásolod egy elrejtett munkalapba (legjobb a VeryHidden érték!).
Ez egyébként újabb kérdéseket felvet (hogyan tartod karban), de ettől tekintsünk most el. Ha van olyan megoldás, amihez ez nem szükséges, akkor hajrá.
A munkalaphoz írsz egy Worksheet_Change makrót. Ez akkor indul, ha módosítják a cellát (a szín és a formátumbeállítás nem számít ebből a szempontból módosításnak). Sajnos az előző értéket nem tudod kiolvasni, de a másik munkalapból már igen. Minden Worksheet_Change-nál az aktív cella formuláját egyenlővé kell tenni a másolt lap formulájával:
Arra is fel kell készülni, hogy ha a felhasználó letiltja a makrókat, akkor mi van. Ez egyszerű, mert le kell védeni a munkalapot, és egy Workbook_Open VBA kóddal feloldani a védelmet. Ha nem mehetnek a makrók, akkor semmit sem tud módosítani.
Workbook_Close-val vissza kell állítani a védelmet.
Hol lehet beállítani Excel XP-ben, hogy a nyil a cellakijelölot és ne az egész képernyot léptesse odébb (pl. most ha nyomok egy jobb nyilat, és a A osztlop volt elol látható, akkor a nyil megnyomása után a B oszlop lesz az elso) Nincs véletlenül lenyomva a Scroll Lock gomb a billentyűzeteden? :))
Üdv
József
Hol lehet beállítani Excel XP-ben, hogy a nyil a cellakijelölot és ne az egész képernyot léptesse odébb (pl. most ha nyomok egy jobb nyilat, és a A osztlop volt elol látható, akkor a nyil megnyomása után a B oszlop lesz az elso)
hol tudom, vagy tudom-e beállítani azt, hogy egyszerre mindig csak egy Excel legyen nyitva. Pl, ha a prt kiterjesztésű file-hoz Ecxel-t rendelek defaolt-ként, akkor minden nyitásra új progit nyit meg.
Most meg a diagram... :))
Szóval, minden szép és jó, de ha a File menüben a Megjelenítés Weblapként funkciót választom, akkor minden jó, csak a diagram nem jelenik meg a böngészőben. Már láttam ilyen hibát, de nem tudom, hogy kell megoldani. Biztosan tuja valaki, hogy mit kalibráltak el a microsofték...
Ööööööööööööö... majd legközelebb folytatom a tanulást, mert ez most határidős. Inkább megcsinálom "kézzel". De nagyon köszi! Mert amúgy sokat gyorsítana a melón!
A MAX() meghatározás jól működik, csak az FKERES-nél a függvényt veszi alapul, nem az értéket. :-/ Azt nem lehet beállítani, hogy ne a pl. MAX('1.'H2:H6) -ot lássa értéknek, hanem azt a számot, amit meg is jelenít? Így akármit is csinálok, mindig vagy #NÉV, Vagy #HIÁNYZIK jelenik meg.
Felvettem egy makrót: "A"-fülben kijelöltem minden második oszlopot és átmásoltam a "master" - fülbe. Aztán lejáccottam a makrót: erre megcsinálta ugyanazt. Hogyan tudom megmondani neki, hogy az összes többi fülből is szedje át a master-fülbe egymás alá ugyanazokat a sorokat?
Tiba!
Köszönöm, mindjárt kipróbálom.
Azt a MAX()-os dolgot nem értem. Meg tudom egy másik táblán jeleníteni a valamelyik táblán lévő maximum értéket tartalmazó SORT is?
Tehát azt mondom, hogy =MAX(H4;'1.'!H1:H4), akkor az 1. munkafüzet H1-H4-ig terjedő cellákból megmutatja azt, amelyik a legnagyobb értékű.
Ehhez hogyan rendelem hozzá a hozzá tartozó sor elején lévő szöveget?
Van 16 munkafüzetem 1 doksin belül. Mind a 16 munkafüzetben van 8 sor, melyek elején név található, majd pontszámok következnek. A sorok végén szum()-mal összesítettem a sorban található pontszámokat.
Szeretnék egy 17. munkafüzetet, ahol megjelenik mind a 16 munkafüzet 1-1 legmagasabb összpontszámú sora. Tehát egy 16-os összesítőt szeretnék EGy lehetséges megoldás:
Minden egyes munkalapon készíts az első sorban
egy ugyanolyan fejlécet fejlécet Név-1.pontszám-2. pontszám -...-Összpontszám -Munkalap
A Munkalap oszlopot minden lapon töltsd ki az adott munkalap nevével.
Készíts kimutatást (Data/Pivot table report vagy Adatok/Kimutatás...), ahol adatforrásnak a Multiple Consolidation Ranges/Több tartományt adj meg.
Egyenként add hozzá munkalapok adattartományait a fejléccel együtt.
Definiáld a kimutatást ROW/SOR -ra ráhúzod a Munkalap-ot, a DATA/ADAT részre az Összpontszámot. Az Összpontszám címkére duplán kattintva állítsd be a MAX függvényt.
Ekkor elkészült egy olyan kimutatásod, mely munkalaponként tartalmazza a legnagyobb Összpontszámot.
A DGET/AB.MEZŐ függvény segítségével maximális Összpontszámhoz keresd ki nevet.
Az Fkeres függvény (vlookup) számára csak akkor kell sorban lenni az értékeknek, ha az utolsó paramétert IGAZ-ra vagy 1-esre állítod. Ha HAMIS vagy 0 az utolsó paraméter, akkor pontosan keres. Értékeknél persze érdekes lehet, de ki kell próbálni, szövegnél nem téved. Ha pl. az eredeti fájlban beképletezed, hogy ha a MAX(érték) = aktulis sor értéke, akkor "I", egyébként "N" (lehetőleg az első oszlopba, de ez csak segítség, nem kell), akkor arra mehet az Fkeres függvény.
Heeelp! :))
Sziasztok! Egy igen egyszerű feladatot szeretnék ezzel a rettenetes excellel megoldani, de sehogy sem boldogulok. Nem értek hozzá, de nem ez a lényeg.
Van 16 munkafüzetem 1 doksin belül. Mind a 16 munkafüzetben van 8 sor, melyek elején név található, majd pontszámok következnek. A sorok végén szum()-mal összesítettem a sorban található pontszámokat.
Szeretnék egy 17. munkafüzetet, ahol megjelenik mind a 16 munkafüzet 1-1 legmagasabb összpontszámú sora. Tehát egy 16-os összesítőt szeretnék-> Név összpontszám. Próbáltam az FKeres-t, de mindig hibás eredményt ad, mert növekvő sorrendbe kéne neki rendezni a sorokat. grrr... Próbáltam segédtáblát csinálni, de a függvények miatt mindig rossz értéket adott a progi a végén. Most akkor mi a fészkes fenével lehet ezt a hótprimitív műveletet elvégeztetni?
A sorok és oszlopok cseréje nem jöhet szóba, mert a megjelenítés muszáj, hogy Név - pont - pont - pont - végeredmény rendszerű legyen, soronként.
Tehát, plusz egy munkafüzetbe átvinni 16 másikból a legnagyobb végeredményű sor Név és Végeredmény celláját.
Köszönöm.
Hogyan tudom elvégezni legegyszerűbben a köv. feladatokat Excelben?
Adott egy több fülből álló adatbázis, amely fülekben található adatbázisok homogének. Minden második páros sorban vannak csak rekordok. Ezeket szeretném egy új fülben egyesíteni a rekordok egymás alá másolásával, de úgy, hogy mindegyik fülben előbb végezze el az Excel azt, hogy szúrjon be még 2 oszlopot (mezőt), az egyik mezőbe vigye fel az adott fül nevét (mindegyik rekordnál ugyanazt), a másikba pedig egy értéket egy olyan cellából, ami a rekord fölötti páratlan sor egyik cellájában van.
A kínai számológépek is kettes számrendszerben számolnak
Már nem emlékszem, hogy vettem észre, a lényeg hogy általában a kijelzett számok +1 max 2 tizedes pontossaággal számol
A másik meg az, hogy az átváltáshoz nekem ment kerekítve is
Neked miért nem megy?
Egyébként próbáld meg fordított logikával:
milyen pontosat akarsz?
mp:
n=60*60;
mp:=Round(Szog*n);
p:=mp div 60;
s:=p div 60;
mp:=Round(mp -p*60);
p:=round(p-s*60);
Egyébként van olyan programnyelv, ami tizes számrendszeben számol csak ez a módszer nagyon lassú a kettes alapú számítógépen.
De ha akarod pár ezerért megcsinálom a unit-ot akár VBA alá is
1. Eszközök/Makró/Visual Basic Editor vagy ALT+F11
2. Beszúrás/Modul
3. Indexen szöveg kijelölése, Másolás. A Visual Basic Editorban beillesztés.
4. A cellát WorkSheet..... sorban tudod megváltoztani.
5. Vissza az Excel táblára, egy cellába beírod, hogy
betu = ""
If szam = 0 Then
szam2szoveg = "nulla"
Exit Function
End If
s = Format(szam, "0")
j = 1
While s <> ""
i = Len(s) - 2
If i < 1 Then i = 1
s2 = Mid(s, i, 3)
s = Left(s, i - 1)
s3 = ""
If Len(s2) = 3 Then
s3 = s3 + j1(Asc(Mid(s2, 1, 1)) - 48)
If Mid(s2, 1, 1) <> "0" Then s3 = s3 + j100(0)
s2 = Right(s2, Len(s2) - 1)
'delete(s2,1,1)
End If
If Len(s2) = 2 Then
If Mid(s2, 2, 1) = "0" Then
s3 = s3 + j10(Asc(Mid(s2, 1, 1)) - 48)
Else
s3 = s3 + j10a(Asc(Mid(s2, 1, 1)) - 48)
End If
s2 = Right(s2, Len(s2) - 1)
End If
s3 = s3 + j1(Asc(Mid(s2, 1, 1)) - 48)
If s3 <> "" Then s3 = s3 + j100(j)
If (betu <> "") And (szam > 2000) Then kot = "-" Else kot = ""
betu = s3 + kot + betu
j = j + 1
Wend
szam2szoveg = betu
End Function
Van olyan adatbáziskezelő, amelyik nem 2-es számábrázolással, hanem tizessel tárol. Ez ha jól értem, azt jelenti, hogy a vázolt esetekben nem téved (két tizedesjegyű számokat ki tud vonni egymásból hiba nélkül). Ugyanakkor kiváncsi vagyok arra, hogy a 10-es számábrázolás mellett az alábbi számítási művelet hogyan néz ki, mert Excel-ben (helyesen) így:
Ez a feladat egyébként sok ember számára gondot okozna, ha kockás papíron kellene kiszámítani.
Bár most, hogy próbálgatom újabb érdekes adalék: a középső 3,33... cellát értékként újra bemásolva a harmadik cella értéke nem változik (ez eddig OK). Ha beleszerkesztek (F2 + Enter), akkor pedig igen.
Na ezt magyarázza meg valaki. Mikor mit tárol?
Lehet, kollega, hogy te "lesz*rod", de emiatt a "kis" probléma miatt összedől a ház, mert nem számít rá senki. És ha a drága autó amiatt rohad le, mert kiesett a volán, hát vágtasson a gyártó, és bocsánatért esdekelve csinálja meg.
Egyébként, ha egy Excel nem tud helyesen kivonni, akkor milyen pontos (milyen MEGBÍZHATÓ az eredmény) a normális eloszlás (vö. Gauss) meghatározásakor?
dres
Regen megorultem az ilyen gondolkodasmodtol es emberektol akik ugy gondolkodtak, hogy en mindent le*arok, ha fizettem mukodjon. Ezek azok az emberek, akik ha lefullad a kocsi, meg nem tolnak, inkabb varnak 2 napot, amig egy masik orszagbol odajon a gyarto, mert fizetett erte.
Most megoregedtem :) (26) es mar van egy par olyan dolog, amikor az ember azt mondja, hogy ha fizettem erte, raadasul irrealisan sokat, akkor mukodjon.
Ma mar egy alap gepet 256M memoriaval adnak el, 1G alatt mar nem nagyon gyartanak procikat, lassan ott tartunk, hogy nano technologiara epult vinyok meg memoria lesz.
Ezek utan bocsasson meg a vilag, lesz*rom, de hadd ne kalkulaljam bele minden egyes szamitasba, hogy lehet hogy tevedni fog a program.
Mellesleg, a kinai szamologepek nem 2-es szamabrazolassal mukodnek ?
A probléma valóban a 2-es számábrázolás, de a kiküszöbölése 2-es számábrázolás mellett is megoldható lenne. A tengerentúliaknak annyit kellene tenniük, hogy az adat tárolását lebegőpontos 15 karakteren ábrázolják, míg a számításokat lebegőpontos 18 karakteren kellene kiszámolni, ugyanis így tudjuk meg az eszközünk határát a vásárláskor (tényleg 15 számig jó lenne az eredmény). A probléma ennél még mélyebben van. Normális esetben a programozók nem foglakoznak saját számábrázolással, hanem a fejlesztő nyelv fordítója által adottakat használják. Nagy valószínűséggel a Visual C++-ban kellene átírni a lebegőpontos számábrázolás rutinjait.Igaz, ekkor minden változatás nélkül csupán csak újra kellene fordítani az összes problémás programot, és minden OK lenne. Legfeljebb, a régi fájlformátumhoz kellene új beolvasó rutinokat írni.
Üdv
József
Kedves L-Gee!
Viszont nem értettem amit a példafüggvénnyel kapcsoltaban írtál. Én azt csak egy viccnek szántam, hogy hogy nézne ki a VBA, ha azt is magyarosították volna. Semmi komoly programozástechnikai megfontoltság nem vezérelt :-)
De módszertanilag mit szúrtam el benne ? Bocs, úgy látszik olyan vagyok, akinek mindenről AZ jut eszébe:))
Rövid példa:
A=0
B=-9.6E-16 (mondjuk egy számítás eredménye, amit valóságban szintén nullának kell tekinteni pl. egy pénzügyi számításnál)
A függvényed erre azt hozza ki, hogy "Nagyobb", közben a valóságban "Kisebb"-et kellene visszaadnia(egyenlőségnél az ELSE ágra kellene ugrania).
Üdv
József
Helló!
Nekem nagyon nagyo negyszerű kérdésem van. Ha egy cellába egy függvényt írok, akkor a függvénybe hogy tudom lekérni azt, hogy mi a cella sora és oszlopa? (mármint, attól függően, hgoy mi a sora és oszlopa, attól függően kap értéket, és ezt függvényben hogy írom be? )
Köszi
Áron
Lenne 1 aprócska gondom excelben. Van egy táblázat, abban néhány x érték, és a hozzá tartozó y értékek. Ebből kelle 1 diagrammot csinálni (eddig még megy). De. A végeredmény kb. egy 1/x fv-nek nézne ki (x>0), de csak diszkrét pontok, nem összekötendők.. Azonban néhány érték eltér picit-nagyon ettől a képzeletbeli vonaltól. Ezért még az is feladat, hogy egy kb. tendencia függvényt is ábrázolni kellene, ami kb. előrejelzi a további lehetséges értékeket.
No és én ezzel akadtam el nagyon. A dolog sűrgős lenne, remélem tudtok segíteni, ha lehet szájbarágós módon.
Nem értek egyet azzal, hogy ezt az állapotot el kell fogadni. Igenis felháborító, hogy az Excel a 75.45-ből nem képes a 75-öt és a 0.45-öt kivonni. Ilyet rendes adatbáziskezelő nem tesz. Érdekes ugyanakkor, bár nem foglalkoztatok vele, hogy ugyanígy téved a Windows számológépe, az MS Access (szerintem az MS SQL is, bár ott még nem néztem), sőt a Star Office is.
A probléma valóban a 2-es számábrázolás, de a kiküszöbölése 2-es számábrázolás mellett is megoldható lenne. A tengerentúliaknak annyit kellene tenniük, hogy az adat tárolását lebegőpontos 15 karakteren ábrázolják, míg a számításokat lebegőpontos 18 karakteren kellene kiszámolni, ugyanis így tudjuk meg az eszközünk határát a vásárláskor (tényleg 15 számig jó lenne az eredmény).
Mar valamit kavartak a kozpontban az eredeti rendszer beallitasan, azota felismeri az Excel is rendesen, nekem lokalisan semmt nem kellett tennem. Azert koszi!
köszi a legbegőpontos számábrázolás és korlátairól írt összegzésedet. Világos volt és érthető. Pontosan ilyen magyarázatra gondoltam.
Viszont nem értettem amit a példafüggvénnyel kapcsoltaban írtál. Én azt csak egy viccnek szántam, hogy hogy nézne ki a VBA, ha azt is magyarosították volna. Semmi komoly programozástechnikai megfontoltság nem vezérelt :-)
De módszertanilag mit szúrtam el benne ?
dres,
ja. Ott én is az INT függvénnyel oldanám meg.
FOK=INT(ASIN(0,713352385)) ebből semmi probléma nem lenne.
Hali
Megtudná nekem irni vk., hogy lehet excellbe
pl a1 blokkhoz hozzarendelni egy jpg-t, ugy
hogy lathato legyen a fájl neve, s csak akko
lássam a képet, ha rákkattintok?
Ne haragudj, hogy beleszólok, de én akadtam fel ezen a problémán. Okfejtésed világos (biztos, én nem értek hozzá), de a helyzet hasonlít ahhoz, amikor a műtét sikerült, csak a beteg nem bírta ki. Ha megengeded, egy EXCEL nekem ne indokolja, 100 ezerért, hogy miért nem adja - ebben az esetben - egy gagyi zsebszámológép pontosságát. Van-e valami megoldás, javítóprogram vagy egyéb? Nem haragszom, ui. semmi közöm a MS-hez, nem én írtam az Excelt. A probléma oka 0,3 ábrázolása, az általad írt probléma ugyanígy fennáll 32,3-127,3 bármely x,3 alakú számra(csak az első 200-at néztem meg), ami több, mint feltűnő ui. 32=25, míg 127=27-1. Sőt, 45,300000001-re is már a jó megoldást adja.
Generikusabb felvetésed, hogy miért kell ezzel a felhasználónak foglakoznia, érthető, de engedd meg, hogy azt mondjam, hogy bármely eszköz(nemcsak programra gondolok, lehet egy szerszám , vagy autó is stb.) használójának illik tisztában lenni eszköze korlátaival. A modern felhasználói programok próbálnak minnél jobban használója keze alá dolgozni, a csillogó külső alatt elsikkad a korlátok hangsúlyozása. SZVSZ az informatikai alapoktatásnak lenne feladata, a gyártó cégek saját érdekükben nem fogják ezeket propagálni.
Annyit tehetünk, hogy ezeket a hibákat jelentjük a gyártónak, és bízunk, hogy a következő változatban már kijavítják.
Ha ez vigasztal, mint Excel Ultra Power User (:))) életemben nagyon sokszor találkoztam már számábrázolásból eredő bosszantó problémával.
Üdv
József
elég fű vagyok az excelhez. kéne írnom egy makrót, amelyik egy tábla végéhez hozzáfűz n sort. a sorokban - néhány konstans adat mellett - van egy dátum-mező, amelynek egyesével kéne növekedni egy kezdő- és végdátum közt. a makrórögzítés + az eredmény megbámulása módszerrel nem lettem sokkal okosabb...
Kedves Jozsef!
Ne haragudj, hogy beleszólok, de én akadtam fel ezen a problémán. Okfejtésed világos (biztos, én nem értek hozzá), de a helyzet hasonlít ahhoz, amikor a műtét sikerült, csak a beteg nem bírta ki. Ha megengeded, egy EXCEL nekem ne indokolja, 100 ezerért, hogy miért nem adja - ebben az esetben - egy gagyi zsebszámológép pontosságát. Van-e valami megoldás, javítóprogram vagy egyéb?
dres
Engedj meg, hogy udvariatlan legyek és egyszerre válaszoljak két felvetésedre.
De remélem hozzászól valami számítógép-agyban igen jártas ember is és megmondja, hogy miért van ez így. Engem is érdekel. A probléma oka alapvetően valós számok belső számábrázolása A valós számokat ún. lebegőpontos módszerrel ábrázolják, ami alapja, hogy a valós számot kettes számrendszerbeli normál alakjában írjuk fel. Pl. 45,3 tizes számrendszerbeli normálalakja 4,53*101, ahol 4,53 az ún. mantissza az 1 a karakterisztika, ugyanez kettesszámrendszerben kb. 1,01101010011..... *25, ... jegyek mutatja meg a számábrázolás pontosságát. Technikailag a vessző előtti egyes jegyet el szokták hagyni ui. az mindig egyes kell lennie és az előjelbittel helyettesítik (0 pozitív,1 negatív). Az így modosított mantisszát leggyakrabban 4 bájton ábrázolják, kb. így név ki:
00110101 0011.... ........ ........ .Az ötödik bájton a karakterisztikát szokás ábrázolni. Amennyiben matisszára felhasznált bájtokat növeljük, nő a pontosság, a karakterisztikára szánt bájtok növelésével a nagyság-kicsiség tartományt tudjuk növelni.
Az ilyen fajtaszámábrázolásnak van pár következménye:
van legkisebb és legnagyobb valós szám
vannak egymás melletti valós számok,
ez a távolság nagyságrend függő
A említett problémát a tízes-kettes-aztán újra tízes számrendszerbe való konvezió okozza, Egyébként nagyon sok ilyen szám van, ahol ez előjön.
Fuggveny Eldont(A Mint Egeszszam, B mint Dupla) Mint Karakterlanc
Ha A > B akkor
Eldont="Nagyobb"
Kulonben
Eldont="Kisebb"
Vege Ha
Vege Fuggveny
Ha esetleg tanultál-tanítottak programozni, és erről nem szólt a tanárod, akkor sürgősen adasd vele vissza diplomáját.:))
Az előbb említett c. pont alapján programozás probléma megoldása a következő
Fuggveny Eldont(A Mint Egeszszam, B mint Dupla) Mint Karakterlanc
Ha A - B> Epszilon akkor
Eldont="Nagyobb"
Kulonben
Eldont="Kisebb"
Vege Ha
Vege Fuggveny
Ahol Epszilon egy pozitív (valós) szám, amit a feladatban szereplő A és B nagyszágrendjéhez kell igazítani. Egyébként ez a feladatok túlnyomó részében jól belőhető.
Üdv
József
IF = HA
ROUND = KEREK :)
DCOUNT = AB.DARAB
DCOUNTA = AB.DARAB2
DOLLAR = FORINT
SUM = SZUM
SUMIF = SZUMHA
TEXT = SZÖVEG
TIME = IDŐ
UPPER = NAGYBETŰS
VALUE = ÉRTÉK
VLOOKUP = FKERES
WEKDAY = HÉT.NAPJA
Hmmm... hogy mik vannak?! amikor én voltam katona, akkor még szó sem volt NATO-ról, úgyhogy legfeljebb jó szovjet elnevezéseket ismerek, bár már azt se sokat :-) Méghogy Scud-B...
round a magyar excelben ? hmmm... passz. Talán KEREKIT ? Ezen mindig is kiakadok, hogy milyen hülye ötlettől vezérelve kellett magyarosítani. Még jó, hogy a Visual Basic-et nem magyarosították :-)
El is jatszom a gondolattal :-)
---------------------------------
Fuggveny Eldont(A Mint Egeszszam, B mint Dupla) Mint Karakterlanc
Ha A > B akkor
Eldont="Nagyobb"
Kulonben
Eldont="Kisebb"
Vege Ha
Nem. Tapolcán volt egy R-300 -as rakétadandár, ennek a NATO kódja SCUD-B. Hatótávolság max. 300 km, max. hatóerő 200 kT. Mi felrobbantottuk ezeket, az oroszok csináltak belőle 100 t teherbírású autódarut. 8 indítóállványunk volt.
persze 29 és 30 perc között naná, hogy van különbség, de ez csak akkor jön ki, ha az INT azaz egészrész függvényt használod, mert ez a 29.99999999999999999999-ből is gátlástalanul 29-et csinál. ROUND-ot kell használni oszt jóvan, vagy ha holdraszállunk akkor nem kerekítünk :-)
De egyetértek veled, engem felhasználót nem kell, hogy meghasson a gép lelki világa, 0.3 az 0.3 legyen.
De remélem hozzászól valami számítógép-agyban igen jártas ember is és megmondja, hogy miért van ez így. Engem is érdekel.
Egyébként mi az, hogy SCUD-B-nél szolgáltál ? Ámerikában élsz ?
Állj meg, állj meg Toldi...
Számold át a dolgot. A hiba ugyan a 30 perc helyetti 29 miatt csak 1 szögperc, ez 0,016666667 tized fok, ez 0,000290888209 radián, a tangense 0,000290888217, szorozd 6 milliárddal, és rengeteg kilóméter eltérést fogsz kapni. Úgyhogy ne szállj fel erre az űrhajóra. (Bocs, évekig SCUD-B -nél szolgáltam, az csak 300 km-re ment, és ott is csak 2 perc volt a megengedett irányzási hiba. 6 perc felett pedig statáriálisan tökönrúgtak)
dres
Ha úgy írod, hogy a INT((45.3-45)*100) föggvény eredményül 29-et ad vissza, akkor lehet, hogy hamarabb megértem :-)
Ez tényleg bug-nak tűnik. De az INT függvény nem a matematika szabályainak megfelelően kerekít, csak egyszerűen levágja a tizedes jegyeket. Ez pedig aligha megengedhető egy holdraszállásnál :-)
Viszont amiért mégiscsak rábíznék egy holdraszállást az excel pontosságára:
-A Plútó bolygó a földtől durván 6 milliárd km-re van.
-Célozzuk meg a plútó bolygót, tegyük fel, hogy pont 0.3 fokban kell kilőni rá a rakétát.
-És számoljuk ki az eltérést:
delta=tan(radians(0.3)*6000000000km)-tan(radians(45.3-45)*6000000000km)=0.29*10^-7km azaz durván 0.3mm !!! ennyivel arréb fog landolni az űrhajó. Ez azt jelenti, hogy gyakorlatilag 6 milliárd kilométerről simán beletalálsz egy kulcslyukba :-)
Szerintem ez megengedhető hiba egy plútóexpedíció során :-)
Nem védeni akarom az excelt, csak eszembe jutott.
Mindenesetre a jövőben mégjobban kerülni fogom az INT füddvényt.
Sajnos az a helyzet, hogy akáhány tizedesig számol, az eredménynek 0,3-nak kell lennie. Ez ugyanis nem végtelen tizedes tört. Bármelyik zsebszámológép, ha ezt elvégzed -miközben szintén töméntelen tizedesig számol- 0,3-t ad.
DE: ha szeretnéd tudni, hogy mennyi 45 fok 30 perc színusza, úgy, hogy ne te számold ki fejben hogy ez 45,5 fok (ebből lehet radiánt csinálni, amiben az excel számol) már fel fogsz kenődeni erre a hibára. Mert: beírás A1-be 45,3000
A2: =Int(A1) ez 45,00000 ehhez adjuk majd a tizedfokokat
A3: A1-A2 ez 0,3
A4: A3*100 ez a percek száma mutat 30-at (mögötte még egy rahedli tizedes),
A5: Int(A4) ez a percek száma a tizedesek nélkül, ha elosztanám 60-al, az már tizedfok. ámde mutat neked a szarházi 30 helyett 29-t, és bukik a szögfüggvény. Na ezzel indíts ürrakétát.
dres
Szerintem ez arra vezethető vissza, hogy az excel nem képes 15 számjegynél többet kezelni, mint ahogy a specifikáció is írja:
"Number precision: 15 digits"
pl. ha azt mondod =123456789012345.00+0.33
az mégis ugyanaz marad.
Biztos valami belső számábrázolási megoldás miatt van ez így. Majd valami szoftver/hardver guru megmondja a tutit.
Hát ez van, de evvel a pontossággal még szerintem nyugodtan földkörüli pályára lehet állítani egy műholdat :-)
Aszondja:
A1-be: 45,3
A2-be: 45
A3-ba: =A1-A2
ha 16 tizedes pontosan nézitek meg, az eredmény:
0,2999999999999997
Erre mit mond Bill Gates? Vagy bárki, aki tudja a megoldást? (A Micosoft online-help a problémát sem érti.)
Kösz, dres
Ha egy alkalommal kell, akkor ehhez nem kell makrózni. Néhány képlettel gyorsabban megvagy.
Magyar Excel esetén javaslom a SZÖVEG.KERES, angol esetén a TEXT.FIND függvényt.
P.:
=HA(HIBÁS(szöveg.keres("ö",C1, 1));"";C1
esetén ha a C1-es cellában van "ö" betű, akkor beírja a C1-es értékét, ha nincs, akkor nem. Megteheted, hogy miután egy új oszlopba bemásolod a 2500 sort, kicseréled benne az ékezetes karaktereket "ö"-re (ekkor nem kell egymásba ágyazott függvényekkel bajlódni).
Van egy excel makrókkal kapcsolatos gondom, mégpedig az, hogy nem ismerem a működésüket :-)
Node: Valójában arról van szó, hogy egy kb. 2500 soros szövegben angol és magyar nyelvű sorok követik egymást és külön oszlopba kellene válogatni a különböző nyelvű szövegeket.
Kb. annyit kellene tenni, hogy az ékezetes betűket tartalmazó cellákat eggyel jobbra tolja a makró, illetve más keresési feltételek alapján meg lehessen határozni, hogy mely oszlopba kerüljön a szöveg (pl. _of_, _and_ etc. -> angol oszlop, éáűőúöüóí -> magyar oszlop).
Ezt oldjátok meg. Láccólag eccerű, de itt szenvedek vele egy órája.
Van egy riport, amit egy másik applikácóból importáltam Excelbe (Siebelből). Az egyik mező számokat tartalmaz. A gond az, hogy az Excel textként értelmezi, bármit próbálok (regional settings, format cells/Number, stb.), mivel a thousand separator-e space, és ez megzavarja az excelt. Íly módon nem tudom szummázni, érték szerint sortolni, stb. Ha minden mezőből egyesével kiütöm a space-t az ezres helyiértékről, onnantól azt a mezőt jól ismeri fel. A gond az, hogy az adatbázis többszáz rekordból áll. Makrót is próbáltam írni, de az se műxik rendesen, nem azt veszi, amit akarok.
Mi a megoldás, hogy ne kelljen külön 1000 mezőből kiütnöm a space-t?
szerintem nem elotte kell hanem utana.
megcsinalod a connect stringet, az meg nem jelent semmit. majd kiadod neki, hogy:
OnError Goto Error_Handler
Aztan miko megprobalod megnyitni az adatbazist, de nincs connection, akkor ugye elmegy az error_handler -hez, aztan ott azt csinalsz amit akarsz. Ha meg van connection, akkor folytatod tovabb ahogy akarod.
Köszi szépen.
Eddig bennem fel sem merült, hogy mikor magyar Excelben függvényt vagy makrót írok, hogy ilyen magyar dolgokat beírjak. Úgy látszik, szerencsém volt.:))
Üdv
József
szerintem erre gondolt pl.:
- ez megy a magyar és az angol excelben is
ActiveCell.Formula = "=CELL(""address"")"
- ez viszont csak a magyarban
ActiveCell.Formula = "=CELL(""cím"")"
irok egy makrot, es az mas excellel nem megy, mert az angolban bold, a magyarban meg kover. hat normalis dolog ez ? Nem nagyon értem, hogy mire gondolsz. VBA-ban függetlenül a magyar változattól mindig "angolul" kell programozni.
Üdv
József
szerintem ez az egyil legnagyobb baromsag amit valaha is kitalalhattak, hogy lemagyarositottak.
aki szamitogeppel dolgozik, az vegye a faradsagot, hogy parszaz szot megtanul angolul.
irok egy makrot, es az mas excellel nem megy, mert az angolban bold, a magyarban meg kover. hat normalis dolog ez ?
Nem tudja véletlenül valaki közületek, hogyan lehet azt megoldani, hogy magyar excelem ellenére a képleteket angolul kezelje? Magyarán angolul adhassam meg, és angolul is láthassam munka közben. (Office XP-m van) Szerintem, sehogy. Annyit megtehetsz, hogy ha átállítod a Regionális beállításokat USÁ-ra, akkor a vesszőt és tizedespontot használhatsz pontosvessző és tizedesvessző helyett.
Egyébként, ha nem hardcore pénzügyi, statisztikai elemzéseket csinálsz, elég egyszerűen (angol-magyar fordítás) rá lehet jönni a magyar függvénynevekre. Pénzügyben vannak olyan fordítások, amitől az ember haja égnek áll:((
Üdv
József
Viszont ami a kezdeti lelkesedésemet lelohasztotta, hogy nem sikerült group by-olni, valamint aggregát függvényeket használni :(
Tényleg így van, vagy csak én vagyok szerencsétlen ? Ilyen feladatokra inkább a Pivot-tábla (Data/Pivot table report vagy Adatok/Kimutatás vagy Kimutatás diagram) megfelelő. Sőt, ott akár külső adatbázist is használhatsz forrásként, Excelben csak az összesítés eredménye lesz. (Ha a külső adatforrás SOL Server 2000 OLAP service-ből jön, akkor még szuperebb dolgokat csinálhaszt:)))
Üdv
József
Nem tudja véletlenül valaki közületek, hogyan lehet azt megoldani, hogy magyar excelem ellenére a képleteket angolul kezelje? Magyarán angolul adhassam meg, és angolul is láthassam munka közben. (Office XP-m van)
Eléggé fontos lenne, remélem tud valaki segíteni! Előre is köszi!
köszi, igazad van kicsit felületes voltam és nem néztem meg alaposan. Tényleg lehet jókat csinálni evvel a criteria range-el. Viszont ami a kezdeti lelkesedésemet lelohasztotta, hogy nem sikerült group by-olni, valamint aggregát függvényeket használni :(
Tényleg így van, vagy csak én vagyok szerencsétlen ?
A másik, hogy a frissítése kicsit körülményes az így kapott táblának és a tábla alatt a már kitöltött cellákat nem shifteli lejjebb, hanem felülírja.
Sajnos ezzel az autofilterrel nem lehet olyan szofisztikált dolgokat megoldani, mint kellene, azért a tippet köszi. Nem is az autofiltert, hanem az Andvanced filtert javasoltam. Egytáblás lekérdezésben 99%-ig ugyanazokat a dolgokat meg tudod oldani, mint SQL-lel. A szűrőtartomány (Criteria range) segítségével tetszőleges logikai feltételt meg tudsz adni.
Üdv
József
Köszi, erre én is gondoltam, de azért nem ment, mert én szerkeszteni próbáltam a queryt, miközben ment a makrorekorder. Így viszont nem rögzített semmit. De az általad javasolt módszerrel, már látom, hogy állítja be paramétereket létrehozásnál, aztán rájöttem, hogy kell állítani a propertyket egy meglévő táblánál is :
With ActiveSheet.QueryTables("ExternalData tábla neve")
...
...
...
Köszi mégegyszer.
Jozsef,
Sajnos ezzel az autofilterrel nem lehet olyan szofisztikált dolgokat megoldani, mint kellene, azért a tippet köszi.
1. Makrórögzítés
2. Get external data
3. Query, mintha másik fájl lenne
4. Makrórögzítés vége
5. A fájl nevét javítsd ki, hogy változóból hozza, előtte a változót tedd egyenlővé a fájl nevével.
Valóban nem külső adatforrást keres, csak itt nem lehet queryt írni (azaz pl. nem lehet feltételeket írni, hogy csak ezeknek megfelelő adatot hozzon le). Vagy legalábbis nekem nem sikerül.
van excelben egy 'named range'-em nevezzük adatbázis-nak, csak nem szeretem ezt a kifejezést erre.
Ugyanebben a fileban egy Riport nevű sheet-en meghatározott kritériumoknak megfelelően szeretnék egy lekérdezést csinálni ebből az 'adatbázisból' -> Get External data. Legalábbis én csak ezt a módját ismerem. A problémám az, hogy a get external datánál meg kell adni, hogy melyik fájlból akarom a lekérdezést csinálni, persze teljes elérési útvonallal. Ilyenkor ugye kiválasztom ugyanazt a filenevet, amiben éppen dolgozom.
Hogyan lehetne megoldani, hogy ne másik fájlban akarjon a adatbázist keresni ?
Mondhatnám viccesen Get Internal data :)))
Azért kéne ezt inkább így megoldani, mert, ha átnevezem a file-t, vagy más elérési útvonalra kerül, akkor már nem fog működni és manuálisan kell majd át. Ráadásul szerintem így ótvar lassan lehet módosítani a query-n.
Még egy kérdés, VBA-ban hogyan lehet hivatkozni ezekre a query táblákra, illetve ezek property-jeire ?
Function IsJoFormatum(szSzoveg As String) As Boolean
Dim ev As Integer, ho As Byte, Sorsz As Integer
IsJoFormatum = False
szSzoveg = Trim(szSzoveg)
If Len(szSzoveg) <> 11 Then Exit Function
If Mid(szSzoveg, 5, 1) <> "/" Then Exit Function
If Mid(szSzoveg, 8, 1) <> "-" Then Exit Function
If Not (IsNumeric(Mid(szSzoveg, 1, 4)) And IsNumeric(Mid(szSzoveg, 6, 2)) And IsNumeric(Mid(szSzoveg, 9, 3))) Then Exit Function
ev = Val(Mid(szSzoveg, 1, 4))
ho = Val(Mid(szSzoveg, 6, 2))
Sorsz = Val(Mid(szSzoveg, 9, 3))
If (ev < 1900) Or (ev > 2050) Then Exit Function
If (ho < 1) Or (ho > 12) Then Exit Function
If (Sorsz < 1) Then Exit Function
IsJoFormatum = True
End Function
Ja. Valamit csináltam az Adatok érvényesítése menüponttal, de ott a Képlet sorral volt gondom. Logikai eredményű képletet kell beadnom a Súgó szerint, de milyet? A képletek között formátumra vonatkozót nem találtam. Szöveggel leírva:
Ha a beírt formátum "év/hó-háromszám" akkor igaz egyébként hamis.
Kérdés annak aki nagy Excel guru:
Hogyan tudom azt elérni, hogy a táblázat első sora ne csússzon fel, ha gördítem a lapot lefelé. Szóval görgetésnél mindíg látszódjon a fejléc (1. sor) és csak a többi gördüljön. Már láttam ilyet egy táblában, de nem tudom hogyan lehet megcsinálni, pedig jó lenne.
Más: adott oszlopba (A) csak és kizárólag a kövewtkező formátumú számot akarom beíratni:
2002/08-001
Tehát négy számjegy pervonal két számjegy kötőjel három számjegy.
Hogyan tudom elérni. Légyszi ha lehet mindkét esetben alapos leírást, vagy mintafájlt kérnék.
Tomathos "szerintem már a 3000 körül járhatsz"
A lustaságom az egyetlen biztos pont ebben a világegyetemben! Inkább gondolkodom 3 napig, mithogy 10 percet is feleslegesen dolgozzam. :-)
De ebben a kérdésben gyorsabban találtam megoldást: A kérdéses oszlopot az kiinduló excel táblából a Notepad-be másoltam, onnan pedig a másik excelbe, és láss csodát: működik. (Valamint ismét megállapítottam, hogy az Excel és az M$ hülye.)
A megoldásokat értékelve saját magamnak adom az ezüstérmet, és Há-é az arany! (A nevezők csekély száma miatt több érmet nem osztok ki!)
Köszi az external data tippet, feltétlenül kipróbálom, ahogy egy kis levegőhöz jutok, most egyéb feladatokkal terheltek le :(
De az connect stringgel kapcsolatban még biztos lesz kérdésem.
Hello,
szerintem már a 3000 körül járhatsz, hátha segít ez: :-)))
Sub Format()
Dim Adat As Single
Range("A1").Select
While Not IsEmpty(ActiveCell.Value)
Adat = ActiveCell.Value
ActiveCell.Value = Adat
ActiveCell.Offset(1, 0).Select
Wend
End Sub
Kaptam egy excel táblázatot. Itt az egyik oszlop "szám"formátumát szeretném megváltoztatni, de valamiért nem hajtódik végre, csak ha minden cellába külön-külön bekattintok, majd Enterezem. Viszont van ~3400 cellám.
Meg lehet ezt a problémát kevés manuális munkával oldani?
Sub breakit()
Dim i As Integer, j As Integer, k As Integer, l As Integer, m As Integer, n As Integer
On Error Resume Next
For i = 65 To 66
For j = 65 To 66
For k = 65 To 66
For l = 65 To 66
For m = 65 To 66
For i1 = 65 To 66
For i2 = 65 To 66
For i3 = 65 To 66
For i4 = 65 To 66
For i5 = 65 To 66
For i6 = 65 To 66
For n = 32 To 126
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & _
Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
MsgBox "One useble password is " & Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
a = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
Exit Sub
End If
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
End Sub
Szasztok!
Van valakinek használható excel password elimináló programja, amit a lapvédelem feloldására lehetne használni? Barom kollégáim idegeimre mennek a hülyeségeikkel, hogy az egészet levédik, nem tudok számolni az egyébként üres cellákban a tábla mellett, még egy rohadék megjegyzést se tudok beszúrni. A másik munkafüzetbe kopizást meguntam és a csatolások miatt nem is túl praktikus megoldás...
Emilben lécci...
Sub Lekérdez()
Dim Utasítás, Hónap As String
Dim ConString As Variant
Hónap = InputBox("Kérem a lekérdezendő hónapot. pl:200105")
If Len(Hónap) = 6 And IsNumeric(Hónap) Then
Sheets("Adat").Select
Cells.Select
Selection.Clear
With Selection.Font
.Name = "Arial CE"
.Size = 10
End With
Selection.PageBreak = xlNone
Range("A1").Select
Utasítás = "SELECT FROM WHERE "
ConString = "ODBC;DRIVER={Microsoft ODBC for Oracle};UID=malacka;PWD=libamaj;SERVER=orac;"
With ActiveSheet.QueryTables.Add(Connection:=ConString, _
Destination:=Range("A1"), Sql:=Utasítás)
.Refresh
End With
End If
End Sub
Az utasítás változóba összevarod a lekérdezést, majd azt futtatod.
Van-e ötletetek a következőre.
Egy excel sheetre a get external data segítségével egy adatbázisból válogatok le adatokat. Namost a query feltételein csak magában a query editorban (ms query) tudok változtatni. Hogyan lehetne azt megcsinálni, hogy a feltételt, vagy inkább csak a feltételben szereplő értéke(ke)t az excel egyik cellájából vegye ? A query editorba bemenni a usereknek és ott átírogatni ezt-azt kicsit bonyolult lenne, ráadásul nekem is jobban tetszene, ha tudnék ilyen megoldást.
Szevasztok!
Megnyitok egy dbf állományt Excelben, és ilyeneket kapok: KISN- OTTM+R NËRA
Tehát az ékezeteket nem kezeli. Hol a csudában lehet beállítani a karakterkészletet?
Hogy egeszen pontosan mi, fogalmam sincs ;)
Az van, hogy kapcsolatot tudsz teremteni mindenfele programokkal ODBC drivereken keresztul.
Pl:
Sub ADO(ByRef sSQL As String, ByRef rsADO As Object, Side)
Dim MyTraceFile As String
Dim cnADO As New ADODB.Connection
With cnADO
If .State = adStateClosed Then
.ConnectionTimeout = 5
.ConnectionString = "Driver={MySQL};SERVER=" & MySQLHost & ";DATABASE=" & MySQLDatabase & ";UID=" & MySQLUser & ";PWD=" & MySQLPassword & ";OPTION=16387;"
If Side = 1 Then
.CursorLocation = adUseClient
Else
.CursorLocation = adUseServer
End If
.Open
End If
End With
With rsADO
'.Open "set SQL_BIG_TABLES=1", cnADO
.Open sSQL, cnADO, adOpenDynamic, adLockOptimistic
End With
End Sub
Egy global valtozoban megadom, hogy mi a MySQLUser, MySQLHost, MySQLDAtabase, MySQLPassword.
Ezek utan, mondjuk van egy MySQL szerverem, es szeretnek kiiratni az excel soraiba eredmenyeket.
Akkor asszondod neki, hogy:
str_q = "select nev from tabla where id between 1 and 1000"
Call ado(Str_q,rsADO,0)
Do While Not rsADO.EOF
Activecell = rsADO!nev
rsADO.MoveNext
Activecell.offset(1,0).select
Loop
rsADO.CLose
es akkor ez a connectionstring -ben megadott parameterek alapjan kapcsolodik a szerverhez, majd megcsinalja a lekerdezest, es az rsADO recordsetbe berakja az eredmenyt.
Utana pedig amig tart az rsADO addig kiirja a recordsetben szereplo item -eket.
De meg egy csomo mas mindenre is jo, es lehet vele mindenfele mashoz is csatlakozni, pl Access adatbazis, MsSQL, Dbf, stb... csak mindenhol mas connectionstring kell, ugye mert mindenhol meg kell adni a megfelelo odbc drivereket es parametereket. Lehet odbc DSN -nel is mahinalni, de IMHO az nem olyan jo, mert akkor mindig csesztetni kell az ODBC.ini -t, vagy manualisan letrehozni a bejegyzest.
hat, en most adtam el egy videoteka programot, minden benne van ami egy videoteka eletehez kell, egy deka formula nincs benne, csak formok, es kod. szinten csinaltam mar egy full leltar programot is, szinten 1 darab formula nincs benne, csak form+kod, es az adatok mindket esetben adatbazisban vannak, elobbinel access, masodiknal MySQL szerver, formokrol vezerelheto mindket program, sheet -et nem is latsz csak reportolasnal...
eleg sokat szarozok adatbazisokkal, es rajottem, hogy ezerszer egyszerubb megoldani egy feladatot excelVBA+MySQL+ADO -val, mint ha allandoan attolnek mindent linuxra, majd ott kis perl scripteket irogatnek...
az excel sheeteken minden infot kirakhatok, lepkedek vegig soronkent, es azt csinalok vele amit akarok.
szamomra tehat az excel nem mas, mint egy k*rva jo fejlesztoi kornyezet :)
/persze azert nem egeszen :P/
>> "Ezt a legkenyelmesebben cgi progival lehet megoldani, web-es eleres is lesz - rendelni is lehet. "
>Ebben nincs igazad, mert eléggé szubjektív. Amit írtál számomra nem jelent többet, minthogy Te cgi progival könnyebben meg tudnád oldani a feladatot.
Valamint valószínűleg az Excel lehetőségeit akarják demonstrálni ezzel és nem egy éles alkalmazást iratni.
>> "Ertem én, hogy az excel-t akarjak gyakoroltatni, de miert nem olyan feladattal amire az excel való ? "
>Az Excel 64k-s sorainak limitjéről én ugyanezt gondolom: miért akarja valaki túllépni a 65 ezer sort, ha az Excel nem erre való?
Egyrészt különböző trükkökkel azért átléphető a 64k-s határ, másrészt ez egy valóban jó példa az Excel kevéssé használt funkcióinak megismerésére.
Javaslom, hogy alaposabban nézd meg az FKERES függvényt! Ezzel simán meg tudod oldani, a rendelők és a pizzák adatainak átemelését.
A részösszeget próbáld meg az Adatok|Kimutatás-sal megoldani. A többi is mind megoldható "helyben", ehhez nem kell semmilyen szkript vagy egyéb varázslat.
A 64k-s rekord limit elvileg átléphető, mert egy objektum tulajdonsága, de ha meg is lehet csinálni, nem javaslom: bármilyen probléma előbukkanhat, hiszen senki sem készült fel rá.
Logikailag persze átléphető a sorok számának limitje, ehhez azonban programozni kell.
Ezt a legkenyelmesebben cgi progival lehet megoldani, web-es eleres is lesz - rendelni is lehet.
Ertem én, hogy az excel-t akarjak gyakoroltatni, de miert nem olyan feladattal amire az excel való ?
Sziasztok!
Van egy problémám, sürgössen kéne nekem ennek a feladatsornak a megoldás a jobb jegyhez. A környezetem már mindent megtett de eredmény még nem született. Ha valaki tudja a megoldást, kérem segítsen:
Készítsünk el egy pizza rendeléseit végző Exel adatbázist.
1. A következő munkalapokat hozzuk létre, és töltsük fel legalább 4 sornyi adattal:
- Megrendelők a tulajdonságaikkal: telefon, cím stb.
- Rendelhető áruk a nettó áraikkal.
2. Hozzunk létre egy új munkalapot, mely a rendeléseket rögzíti:
- első oszlopában a rendelés tátuma,
- utána lévő oszlopokba a telefonszám beírása után jelenjen meg a kereső függvény segítségével a vevő összes adata,
- hasonló módon a megrendelt pizza nevének beírása után annak nettó ára, az Áfa értéke és a bruttó ára.
3. Töltse fel legalább 15 rekordal ezt a munkalapot , két nap adataival, az előző két munkalap felhasználásával.
4. Részösszeg nevű munkalapra készítse el a dátum, majd a telefonszám alapján a nettó, az Áfa és a bruttó árak részösszegeit.
5. Adatbázis függvény és adattábla segítségével a Darab munkalapra számolja ki minden megrendelő nevéhez összes megrendelésének darabszámát.
6. Hozzon létre látványos kördiagramot a Darab munkalapon az ott található adatok alapján.
7. Készítsen Kimutatás nevű munkalapra kimutatást, melyről leolvasható, hogy az adott nevű személy melyik pizzából hányat rendelt. Szűrőként használja a dátumot.
8. Készítsen Kimutatás 2 munkalapra kimutatás diagramot, mely a nevekhez mutatja az által elköltött bruttó árak összegét.
9. Készítsen saját ötlete alapján legalább kettő a 4.-8. feladatokhoz hasonló feladatot, mindegyiket újabb munkalapra.
Még egy kérdés. lehet-e valahogy olyan custom függvényt írni, ami egy "munkalap referenciát" ad vissza, vagyis így lehetne meghívni egy cellában: "=MyFunc()!A1:A2".
A myfunc meg ugye pl. a "Munka2"-re (vagy másra, és ez a a lényeg) adna egy ref-et.
Lehet ilyet?
Juj, nagyon remélem.
Valamit nagyon szarul csinálok, úgyhogy egy belép?szint? kérdés: excel munkafüzetbe szeretnék saját függvényeket kreálni.
tehát, Alt+F11 megnyom, "thisworkbook"-ba felveszem az alábbi szöveg? rutint:
Public Function Ejha()
Ejha = 1975
End Function
na, és ez nem csinál semmit sem.
Ha beleírom a munkafüzet valamelyik mnunkalapján egy cellába azt hogy "=Ejha()" akkor nem jelenik meg semmi sem. Illetve csak az hogy "#NEV".
Ez tudom hogy trivialis dolog. legyszi segitsen valaki. Koszonet.
Egyel elegánsabb megoldás, ha a for ciklus így néz ki:
For i = 670 To 1 Step -1
Ekkor ugyanis valóban annyi ciklust csinál, mint ahány sor van, nem szükséges a P változó, valamint az i = i -1 és az Exit for sor sem.
Ja, és egy ciklus gyorsabban fut le.
Sub ures()
p = 1
For i = 1 To 670
p = p + 1
Range("A" & i).Select
If ActiveCell = "" Then
ActiveCell.EntireRow.Delete Shift:=xlUp
i = i - 1
End If
If p = 670 Then Exit For
Next
End Sub
a p végértékét is be kell állítani és akkor működik kiválóan
lolka bolka
köszi a makrót, addig jól működik amíg még talál
nem üres sort,de azután nem hajlandó megállni.
Sub ures()
p = 1
For i = 1 To 5000
p = p + 1
Range("A" & i).Select
If ActiveCell = "" Then
ActiveCell.EntireRow.Delete Shift:=xlUp
i = i - 1
End If
If p = 5000 Then Exit For
Next
End Sub
inditáskor az utolsó nem üres sor 667 volt,
a For i = 1 To 670 beírásával azt hittem jó lesz,
elindítva szemmel láthatóan azt csinálta amit vártam, de 336 utolsó nem üres sor után a 337
sorban nem állt le. gondolom a 670-ik sort akarta
elérni . Mit javítsak át ? / előre megsaccolhatatlan hogy a teli sorok száma mennyi lesz/
köszi
L
Eleve excel-ben van, hisz azt mondja text file -bol keszitett excel tabla.
De ha mondjuk text filebol akarna igy excelbe importalni az ures sorokat kihagyva akkor valami ilyesmi lenne, most a szintaktika lehet, hogy hibas lesz, mert ezt nem probaltam ki:
Sub Kivesz
myfile="C:\myfile.txt"
Open MyFile for Input as #1
Do While not eof(1)
Line Input sor 'Azt hiszem igy van, de most fejbol nem tudom
if sor <> "" Then
Activecell = sor
Activecell.offset(1,0).select
End IF
Loop
Close #1
End Sub
Ez meg soronkent olvassa be a text filet es ha ures sort talal, akkor azt nem irja be a text file-ba.
Elkepzelheto, hogy az ures sor az nem "" hanem Chr(10) & Chr(13) vagy csak Chr(13) ez debuggolasnal kiderul.
p = 1
For i = 1 To 5000
p = p + 1
Range("A" & i).Select
If ActiveCell = "" Then
ActiveCell.EntireRow.Delete Shift:=xlUp
i = i - 1
End If
If p = 5000 Then Exit For
Next
End Sub
Ez a kovetkezot csinalja.
Egy ciklusban elindul az a1 - az a5000 -es cellaig
Ha ures sort talal azt kitorli, de akkor az i erteket csokkenteni kell egyel, hiszen ha ket ures sor van egymas alatt, akkor amikor az elsot kitorli mondjuk a 20 sorban akkor a 21 sorban levo sor a 20 sorba kerul tehat a kovetkezo loop -nal azt atugorna, igy viszont figyel ra.
Ebben az esetben viszont ha mondjuk a 4999 sortol mar ures sorok vannak csak akkor orokke futna a ciklus, tehat beallitunk egy p valtozot is, ami folyamatosan szamolja, hogy igazibol ha nem csokkentenenk az i erteket hol tartana a ciklus es amikor eleri az 5000 -et, akkor kilep a ciklusbol.
2) Sort-olással rendezed úgy a táblázatot, hogy egymás alá kerüljenek az üres sorok (amennyiben a nem üres soroknak egyik mezője sem üres, akkor ez könnyű: bármelyik oszlopra szortolhacc)
3) kitörlöd az egymás alá került üres sorokat
4) visszarendezeed a táblázatot aszerint, ahogy eredetileg volt
5) visszakopizod .txt-be.
Ez a modell több kikötést tartalmaz, úgyhogy lehet, hogy a te esetedben nem nyerő! Ebből látszik, hogy lámer megoldása :)
Sziasztok!
Adott egy txt file-ból készített excel tábla,
sok-sok szöveggel és adatokkal. Az üres sorokat
hogyan lehet kiszedni ? /nem manuálisan, mert
1600 - 2000 sor van, abból kb 4 - 500 üres/
Köszi
L
Van egy oldal az excel.freeweb.hu, eleg kezdetleges... Anno volt valami vb.freeweb.hu vagy vbzone, mar nem emlekszem, de az aztan kesobb teljesen bedoglott...
Tiba:::
ötletes, de sajnos egy lépéssel lemarad. a függvényes cella az n. inputra mutatja az (n-1)-ik értéket.
akkor máshonnét mutatnám be a problémát:
van egy cella, ez a fönök. manuális inputtal bekerül egy AB_CD számpár. a _ space-t jelöl, figyelmetlen user esetén el is maradhat: ABCD. 'A' (meg az összes többi is) lehet nulla.
ezt az inputot kell szétbontanom valahogy AB és CD-re, attól függetlenül, hogy van-e space vagy nincs, illetve hogy az első jegy 0 vagy nem (tehát 3-5 karakter lehet a hossz, összevissza)
a stringet kóddal vizsgálgatni nincs idő, valahogy pure függvényekkel kéne megoldani. szóval ez lenne, tisztelt szakértők.
Function beviteli_ertek(barmi As String)
beviteli_ertek = VBAProject.Munka1.TextBox1.Text
End Function
Ha beírod a VBAProject.-et, akkor a többi választható.
A "barmi" azért szükséges, hogy a frissülés működjön.
Bármely cellába hivatkozd be a "beviteli_ertek" függvényt, amelyet a felhaszálói csoportban találsz meg. A "barmi" a link cellára mutasson, így ha a link cella változik, akkor a függvény a TextBox-ból olvassa ki az értéket.
az a konkrét szitu, hogy a link cellát változtatom, az változtatja a textboxot. erre a lépésre szükség van egyebek miatt, a lényeg az, hogy a link cella tartalma nem minden esetben használható a kötött formátuma miatt, a textbox.text-et kéne használni.
workbook change-t nem akarok használni, igy is tele van realtime frissülö linkekkel, olyan az egész, mint egy stroboszkóp, ráadásul nagyon gyorsnak kéne lennie, ha lehet semmi kód.
cellából nem lehet textbox.text-re hivatkozni valahogyan?
??
Nem teljesen értem. Ha a link cellát használod, akkor tudomásom szerint azonnal a link cellában kell látni a TextBox tartalmát.
Ha a link cella tartalmát változtatod, változik a TextBox tartalma és viszont.
Innentől kezdve már nem kell a TextBox tartalmára hivatkozni, hanem a link cellára is hivatkozhatsz.
problémám a köv.: adott egy textbox, ami a sheet1 felett lebeg valahol. namost, hogyan tudok cellából hivatkozni a textbox tartalmára? a linkelt cella már felhasználva, pontosabban a link cella tartalma határozza meg a textbox tartalmat, amit tetszőleges cellából szeretnék kiolvasni. sajnos a linkelt cellából történő módositás ugyan módositja a textbox.text-et is, de nem generál textbox_change eseményt. ötlet?
szevasztok, arra kérnék megoldást, adott stringből hogyan lehet eltüntetni az akárhol előforduló space-eket? beépitett függvényt keresnék, már igy is nagyon lassú az egész :(
üdv.
Van egy munkafüzetem, amiben a sheetek egy egy emberhez tartozó táblázatot tartalmaznak.
A rendszer, amiből előállítják, nem képes arra, hogy egy egy sheetet elnevezzen az ember nevével, és ráadásul még csak nem is ABC sorrendben vannak a sheetek.
A kérdés: van rá mód, hogy valami automatizmussal átnevezzen egy egy sheetet az adott sheet adott cellájának tartalmával?
Köszönöm szépen! Sajnos, még kezdő vagyok az ilyen rutinok használatában, ezért segítenél abban, hogyan kell használni? Pl. a B3 cellába írt szöveget, hogyan lehet villogtatni?
csemegézzél! Néhány megoldás más Excel newsgroupokból:
1.
Dim RunWhen As Double
Sub StartFlash()
RunWhen = Now + TimeSerial(0, 0, 1)
Application.OnTime RunWhen, "FlashText"
End Sub
Sub FlashText()
With Range("A1").Font
If .ColorIndex = xlColorIndexAutomatic Then
.ColorIndex = 3
Else
.ColorIndex = xlColorIndexAutomatic
End If
End With
RunWhen = Now + TimeSerial(0, 0, 1)
Application.OnTime RunWhen, "FlashText"
End Sub
Sub StopFlash()
Application.OnTime RunWhen, "FlashText", , False
End Sub
2.
Create a new style, Flash, using Format / Style / Add, making Flash
define Font only.
Then format the cells you want to flash to have style Flash using
Format / Style
Then run procedure Flash, below. To stop it run procedure StopIt.
Dim NextTime As Date
Sub Flash()
NextTime = Now + TimeValue("00:00:01")
With ActiveWorkbook.Styles("Flash").Font
If .ColorIndex = 2 Then .ColorIndex = 3 Else .ColorIndex = 2
End With
Application.OnTime NextTime, "Flash"
End Sub
Sub StopIt()
Application.OnTime NextTime, "Flash", schedule:=False
ActiveWorkbook.Styles("Flash").Font.ColorIndex = xlAutomatic
End Sub
3.
Try this for cell A1 that will flash ever second for 59 seconds...
Sub flash()
Dim a As Integer
For a = 1 To 59
If a - 2 * Int(a / 2) = 1 Then
Application.OnTime Now + TimeValue("00:00:" & a), "Onon"
Else
Application.OnTime Now + TimeValue("00:00:" & a), "Offoff"
End If
Next a
End Sub
Sub Onon()
[A1].NumberFormat = "General"
End Sub
Sub Offoff()
[A1].NumberFormat = ";;;"
End Sub
The formula a - 2 * Int(a / 2) = 1 simply checks to see if the counter is
even or odd. It works like the MOD() function but I don't think VBA does
MOD().
Sziasztok,
volna egy kérdésem: hogyan lehet egy help fájlt rendelni az általam írt függvényekhez? Legalább annyi kéne, hogy a függvényvarázsló némi információt írjon ki, mint a normál, beépített függvények esetében. Átböngésztem már a vba súgóját, de abban nem találtam erre utalást.
Üdv.
mp
Valóban az automatikus formázás az oka a dolognak (amit szerintem nem lehet kikapcsolni). Az én megoldásom szerint az egész tartományt meg kell szorozni 1-gyel. Két hátránya van: az üres cellából 0 lesz, illetve a képletek mögé odaírja a "*-1"-et.
Programból még lehet használni a
.cells(sor, oszlop).formula = .cells(sor,oszlop)
újraképletezést.
lehet hogy negykepu, de az egyenlosegjelek egyenlosegjelekre cserelese nem nagy szellemi kihivas. Miutan rajovok persze, hogy a dokumentacio kutyagumit sem er, es ennyi erovel kvarkokat is szamolhatnek egy homokozoban.
igen, vegul is:
a sendkeys az tul lassu volt.
lett helyette az, hogy minden munkalap minden sheetjen az '=' sztringet lecserelem '='-re. Vagyis ugyanarra.
Hat erdekes dolog ez a programozas. A goblein varras joval egzaktabb dolog.
nekem szokott az is működni, ha újraformázom az oszlopot. Azaz data, text to columns, itt marad az egész cella, de a formátuma general. Hátha így könnyebb.
utolsó megoldásként használd a Sendkeys-t, hogy az F2+Entert automatikusan csinálja, de amúgy biztos vagyok benne, hogy van normalis megoldás is, de azt nem tudom
nem, semmilyen ilyen jellegu opcio nem szamit, ha ujraszmoltatom explicit az sem szamit, egyedul az f2+enter trukkel sikerul barmi frissulest elernem az adatokban.
A gondom és az ehhez kapcsolódó kérésem a következő:
Excel 2000-em van aminek nagyon örülük, mert régebben mikor megnyitottam egynél több Excel-féjlt, akkor azok külön-külön megjelentek a tálcán, és egy egyszerű klikkeléssel tudtam az egyikből a másikba menni. Kb egy hete 'magától' (mondom én persze) megszűnt ez a fícsör, és most már nem rakja ki a tálcára külön-külön a fájlokat, s emiatt csak a 'Window'-menüponton keresztül tudok váltani a fájlok között.
érésem: Hogy tudom visszaállítani ezt a számomra igen júzer-frendli opciót (Egyszerre 4-5 fájllal dolgozom). Köszi!
hello, nem tudok zoldagra vergodni egy dologgal:
delphibol Com-mal szolitom meg az excelt. Elindul, nyitok egy uj workbookot eg ysablon alapjan. A sablonban van egy munkalap, amiben hivatkozasok vannak egy masik (!!meg nem letezo!!!) munkalapra. Peldaul '=RPT4545!B4'. A hivatkozott munkalapokat a delkhis programbol hozom letre. Na a hiba az, hogy, nem frissulnek a hivatkozasos cellak. Semmilyen calculate/ujraszamol parancsra. Viszont, ha beleallok egy ilyen cellaba, F2-t nyomok, nem csinalok semmit!, es enmtert utok egyszeruen, akkor egybol felfrissul a tartalom. De csak ez az egy cella.
LATOTT valaki ilyet valaha? Mi lehet erre a megoldas? Elore is koszonom, ha valaki tud mondani valami hasznalhatot.
Open "c:\fajl.txt" For Output Access Write Lock Write As #1
For lap = 1 to ThisWorkbook.Worksheets.Count
For i = 2 To ThisWorkbook.Workshets(lap).cells(1,1).CurrentRegion.Rows.Count
utolso_oszl = ThisWorkbook.Workshets(lap).Cells(1,1).CurrentRegion.Columns.Count - 1
For j = 1 To utolso_oszl
Write #1, Cells(i, j).Text;
Next
Write #1, Cells(i, utolso_oszl)
Next
Next
Close #1
Ha nem azonos a felépítésük, akkor külön kell nyitogatni a text fájlokat.
A fájlokat szép sorban meg kell nyitni és bezárni (újabb for ciklus).
Elöször csináld meg a grafikont csak az egyik adatsorral. Ha kész jelöld ki a második adatsort tartalmazó cellákat > Copy > klikk a a grafikonra és illeszd be mint új adatsort a Secondary axis-re.
Sziasztok!
Szeretnék egy egyszerű megoldást találni arra, hogy egy xls táblát úgy tudjak lementeni csv-ben (vagy akár xls-ben), hogy az eredetileg benne tárolt rengeteg munkalap egy munkalapba mentődjön le... (több száz adat különböző módon csoportosítva kb.: 40 db xls, ezen belül 30-60 munkalap ezt akarom PocketPC-re átemelni)
Elore is elnezest, ha mar volt.
Egy olyan grafikont szeretnek kesziteni, amely ket adatsort jelenitene meg, ugy hogy az egyiket a baloldalhoz rendelne, a masikat a jobboldalhoz (remelem ertheto volt:o)). Idoben valtozo ket dolgot kellene abrazolni egy grafikonon. Az egyik adatsor 10-es nagysagrendu (foleg 10 es 20 kozotti ertekkel), a masik 10^-5 es 10^-8 kozotti tartomany. Biztos, hogy lehet ilyet, mert lattam, de en meg nem tudtam megcsinalni.
A kívánt .xls-t tedd be az excel XLStart alkönyvt
árába (valahol itt találod: "C:\Program Files\Microsoft Office\Office10\XLStart").
De ez csak arra megoldás, hogy az excel indításakor ez töltődjön be. Ha a New-t nyomod egy már futó excel-nél, akkor ugyanúgy egy tök üres Book1 fog bejönni.
Ugy, hogy van egy default file, amit az excel neked book1.xls neven ad fel, nem tudom pontosan melyik, ha azt modositod, akkor minden uj file olyan lesz.
Egyebkent mindenkinek tudom ajanlani ezt a linket, kegyetlen jo, levlista is jo, mindig segitenek mindenben, archivul is jo...
Ez egyszeru.
Mondjuk ha minden ertekhez hozza akarsz adni 1 -et, akkor igy:
For i = 1 to 200
If Activecell.Value <> "" Then
azenvaltozom = Activecell.value
End If
Azenvaltozom = Azenvaltozom + 1
Activecell.Offset(0,1).Value = Azenvaltozom
Activecell.Offset(1,0).Select
Next
Ahol Azenvaltozom valtozoba kerul az aktiv cella erteke.
De en ilyenekre a
Do While Activecell <> ""
Loop
ciklust hasznalom, ami mindig addig megy, amig van adat az egymas alatti cellakban, igy nem kell megszamolni, hany sort akarok.
Es ha kozvetlen cellara akarsz hivatkozni, akkor meg
Sziasztok, a következő lenne a kérdésem:
Hogyan lehet azt Visual Basicben elérni, hogy beolvassa az excel táblázat egy celláját és az értékét kiirassam egy másik változóba. A cella sorát mindig egy for ciklus változója adná meg, az oszlopa állandó.
Ne a sheet kódba írd a függvényt, hanem egy module-ba. Ha nincs a workbooknak module-ja, akkor megkeresed a VBA-ban jobb gombbal rákattintasz a workbook "Microsoft Excel Objects"-re, Insert/Module. Majd kiválasztod a létrehozott module-t és ide írod a függvényt
Kérdés mindenkihez:
Hogyan lehet azt megcsinálni, hogy mikor egy új munkafüzetet nyitok, akkor ez egyből egy olyan munkafüzet legyen, aminek a fejléce és lábléce már ki van töltve egy template-nek megfelelően.
Nem azt a megoldást szeretném alkalmazni, hogy File/New és akkor válogatni a template-ekből, hanem, mikor elindítom az excelt már ez legyen a Book1
koszi. igen, erre gondoltam, a bibi nem is ezzel van (ezek szerint), hanem azzal hogyha beirom egy cellaba, hogy "=blabla()" akkor azt mondja hogy "#NÉV?". That's the problem.
Lehet hogy abban a vb micsodaban nem jo helyre irok valamit? Sosem hasznaltam meg. Ja, es a masik, hogy helpet nem talalok errol sehol sem.
Public Function blabla() As Integer
blabla = 1975
End Function
Function Kivon(a,b as integer) as integer
Kivon = a - b
End Sub
Ezekutan a z = 2 lesz.
A fuggveny ket parametert kap, a -t es b-t, jelen esetben a erteke s erteke lesz, b erteke pedig p erteke. Kivonja egymasbol a ket szamot, es ezt rakod be a fuggveny neve nevu valtozodba.
Hello, azt szeretnem tudni, hogy hogy lehet olyat csinalni, hogy:
egy excel munkafuzetbe irni egy sajat fuggvenyt, ami mondjuk egy szamot ad vissza? Probalkozok az F11-el elohozhato VB ablakban, de nem akar sikerulni.
Én úgy szoktam csinálni, hogy
1. egymás alá másolom mindhárom oszlopot
2. pivot táblával a "sorok"-ba is és az adatmezöbe is behúzom ezt az egy oszlopot, aztán
3. csak a pivot tábla elsö oszlopát használom fel, ami a legkisebb közös többszörös.
(lehet, hogy az összemásolt oszlpot célszerü elötte növekvö sorrendbe rendezni...)
Húú, megpróbálom, de nem garantálom, hogy lépésről lépésre menni fog (a magyart fordításokaért meg abszolute nem vállalok felelősséget).
Tehát kijelölöd a táblázatot/oszlopot, aztán
1. "Adat" - menüpontban a "részösszeg"-opció;
2. Itt az első rublikába megadod neki azt az oszlopot, amelyikben a 0-k s az egyek el vannak szórva;
3. Kiválasztod mondjuk a "növekvő"-gombot
4. Leokézod az ablakot.
5. A bal oldalon megjelennek plusszok.
6. Összehúzod a legfelső plusz-gombbal úgy, hogy csak a részösszegek látszódjanak.
7. kijelölöd a táblázatot/oszlopot
8. Ctrl+g ("Go To...- magyarban nem tudom, hogy az-e; asszem "Ugrás..." magyarban a "Szerkesztés"-menün belül)
9. 'Speciális'-gomb
10. beklikkeled, hogy "csak a látható cellákat"
11.OK
12. Utána azt mondod, hogy "Szerkesztés"-"Másolás"
13. Átmész egy új munkafüzetbe, és ott azt mondod, hogy "Szerkesztés-Beillesztés"
14. kijelölöd az új táblázatot/oszlopot
15. "Adat"- "Rendezés"
16. megadod neki, hogy a kérdéses oszlop szerint rendezze
Most egymás alatt lesznek az egyesek totáljai. Ebből le tudod olvasni, hogy hányszor volt olyan, hogy a total 2,3,4 ill. 5. (Pl. ahányszor a totál 2, annyiszor volt 2 db 1-es egymás alatt az eredeti táblázatban).
Hogyan lehet egy háromoszlopos Excel-táblázatból (amely táblázat oszlopaiban vannak azonos elemek, de mindegyikben van olyan, amelyik a másik kettőben nincs)egy külön munkafüzet egy oszlopába leképezni az első táblázat oszlopainak legkisebb közös többszörösét??
(Azaz szerepeljen benne az első három oszlopból az összes olyan sor, amelyik legalább az egyikben szerepel)
kösz előre is, de én ennél butább vagyok, hogy ezt megértsem,meg magyar excelem van. Igy ha lépésről lépésre leírnád akkor azt nagyon nagyon megköszönném.
nyomsz egy subtotalt, aztán egy "Visible cells only"-val átmásolod a subtotal-rekordokat tartalmazó táblát egy új fülbe. Leválogatod azokat a rekordokat, ahol az egyeseket adja össze, és megnézed azu értékét: amennyi az értéke, annyiszor szerepelt az egyes egymás alatt. Ezeket már egyszerű összesíteni.
Sziasztok!
Van egy kis problémám, remélem tud valaki segíteni.
Szóval, van egy oszlop amiben csak 0-sok és 1-ek vannak elszórva. engem az érdekelne, hogy hányszor fordulnak elő a következő esetek: 2-szer van 1-es egymás alatt, 3-szor, 4-szer, 5-ször.
Ha valaki tud segíteni, kérem irjon a czbhu@freemail.hu-ra. Köszönöm
Igen, azzal próbálkoztam én is. Kitaláltam ugyan valamit, de elég bonyolult, remélem, valakinek van egyszerübb ötlete is.
Én úgy tudom elképzelni, hogy mondjuk a st. norm eloszlásnál 0-50%-ig nézem a kumulált valszinűségeket, és 50-100%-ig pedig a komplementer valószinűséget, aztán az adott valszinüséghez meghatározom az eloszlásfv. értékét, majd gyártok egy hosszú táblát, amiben az egyes eloszlásfv értékekekből annyi kerül egymás alatti sorokba, amennyi a relativ gyakoriságuk. Ezután, ha a rand()-dal (ami, ha jól tudom, egyenletes eloszlást produkál) az ilyen módon elkészült vektor (?) megfelelő elemére mutatok, valami kis szorzásos büvészkedéssel, akkor hoppá, máris normális eloszlásból válogatok. Mármint, ha az ilyen módon kapott eloszlás persze normálisnak bizonyul, de addig nyomkodom a makrót, amig az lesz.
Remélem ez nem marhaság, és szóval ennél kéne valami rövidebb.
Heló. Szerintem valahogy a =NORM.ELOSZL() függvénnyel kéne operálnod, csak sajnos a statisztika tanulmányokat már olyan régen magam mögött hagytam, hogy nem t'om, hogyan. Olvasd a súgót szorgalmasan...
excelben kéne n számú véletlen, (standard) normális eloszlásból származó mintavételt produkálnom, de fogalmam sincs, hogyan, remélem valaki tud segiteni.
perfag,
köszi, ezt nem akarom mindannyiszor megcsinálni, ahányszor pivot táblát gyártok. Az lenne a jó, ha a Beállítások-ban, vagy valahol meg lehetne tenni, hogy örökre (:-)) az "ezres tagolás, nulla tizedes" lenne a pivot tábla alapértelmezett számformátuma. Ezt nem találom. Azért köszi.
Excel 97-ben úgy vélem tudom:
Kimutatás Varázsló 3. lépésében miután az Adat mezőbe húztad a mezőt, kattints rá kétszer és a megjelenő párbeszédablakban válaszd a Számforma..-t
vagy:
A kész kimutatásban jelöld ki a kívánt mezőt és a Kimutatás eszköztáron kattints a 3. ikonra, ennek neve Kimutatásmező.
hiába tettem át ott is ugyanolyan xar volt, DE később találtam egy csomó olyan grafikus objektumot benne, amiknek a vízszintes kiterjedése nulla volt és ezért nem látszódtak. Ezt kitörölve minden helyreállt.
Ha tényleg nincs benne több pivot-tábla, méretes képletek, ilyesmi, akkor valszeg a kitörölt objektumokkal van a baj. (Nekem egy powerpointos prezimben voltak excel táblák és miután eltüntettem öket, továbbra is mentette a ppt-het az egészet és nem csökkent a mérete.) Próbáld meg a munkalapot áttenni egy új dokumentumba. Ha tényleg nem nagy a cucc, egyszerübb átmásolni egy új fájlba az egészet.
Van egy exceltáblánk, ami valamitől kezelhetetlenül lassú lett. Nincs benne függvény, semmi extra, szóval egy holt egyszerű A4-es lapra ráférő tábla. Voltak benne néhány kép, azt hittem valamelyik esetleg túl nagy, de kitöröltem az összes képet, WordArt objektumot belőle. így már ccsak a kopasz tábla maradt a mérete mégis 6 mega és bármit változtatni rajta kb. 2 percig tart. Valami "beragadhatott" benne, hogyan lehetne észheztéríteni ?
Ha ez egyedi eset lenne, akkor megcsinálnánk újra, de az a baj, hogy 1-2 havonta mindig újra előjön a probléma ennél a táblánál.
Régebben volt már itt a topicon felvetve ez a probléma:
Miként lehet megkerülni azt, hogy az excel megkérdezze a makrót tartalmazó xls megnyitásakor, hogy biztos tuti frankó trusted forrásból való az xls. (A Security level-t low-ra állítani nem működőképes dolog, mert sok gépen lenne használva az xls file)
Akkor nem sikerült megoldani a problémát (csak megkerülni úgy, hogy csak a makró engedélyezésekor maga a makró tette láthatóvá a táblát).
Most én is belefutottam egy ilyenbe, de nekem nem túl frankó ez a megkerülő megoldás. Az egyetlen dolog, amire rájöttem, hogy ha az xls az excel XLStart könyvtárában van (vagyis az excel indításakor megnyílik a file), akkor nem kérdezi meg, hogy engedélyezem-e a makrót.
Sikerült azóta esetleg valakinek kitalálni valamit erre?
Sziasztok!
Tudja valaki, hogy hol lehet azt megadni, hogy milyen legyen a pivot tábla alapértelmezett számformátuma, hogy ne kelljen mezönként beállítani mindig?
Csak azért angolul, mivel a fránya gépem csak így beszél. A gond nem a hatvány felírása, hanem a fv.varázsló használata. Ott nem egyértelmű a hatványfüggvény angol neve Angol változatban a hatványfv: POWER(x,y)
pl. öt a harmadikon: =POWER(5,3)
de ugyanilyen jó a =5^3 is
Üdv
József
Csak azért angolul, mivel a fránya gépem csak így beszél. A gond nem a hatvány felírása, hanem a fv.varázsló használata. Ott nem egyértelmű a hatványfüggvény angol neve.
Azért köszi.
Henry
Nem tudom. Olyat probaltal mar, hogy atmasolod a ws -re, es onnan lokalisan probalod megnyitni ?
Egyebkent nem tudom miert, nalunk egy csomoszor suxol a samba. Van, hogy egy kis ppt vagy excel filet ugyanigy vagy fel-egy percig nyit meg, neha meg hasit... /ezt most csak ugy irtam../
smbmount-tal felcsatolom a Linux-os gép megosztott könyvtárába.
Tehát
1 - az excel-lel függ össze, mert SO nem csinálja
2 - NT4 szerverrel függ össze, mert, de az NT4 WS-el is összefügg, mert.
Brühühü... fogalmam sincs...
800MHz NT SBS 4.0 SP6a-n egy 1300 rekordos kis (200k) xls file.
450MHz NT WS 4.0 SP6a W2k excel.
1 hete kb:
Mentés közben 35mp-re lehal az excel (a macskával ki lehet satirozni a képernyőjét) - időnként arról szövegel, hogy mexakadt a szerverrel a kapcsolat, meg néha, hogy a mentés rendben, de nincs memória megnyitni. (Van vagy 20MB szabadon) Ha txt-t csinálok, akkor is u.e. van, de más progi, pl notepad gyorsan menti agyanazt a file-t amit az excel lassan.
W32-es SO5.2 viszont gyorsan ment.
Ha Linux alá felcsatolom a file-t és tovább exportálom, akkor gyorsan ment az excel is.
Ez épp lehetne megoldás, de kicsit fapados. Igazából úgy kell megoldani, hogy egy excel file-ba feltöltjük az adatokat, Accessben pedig egy "gombnyomással" és néhány paraméter megadásával előállítjuk a komplett kimutatást. A köztes lépések (pl másolás értékként) már nem túl felhasználó barátok. És nem is elegáns így átadni egy rendszert :))
Bár, ha egy eljárás kilépéskor csinálna egy ilyen másolást... hmmm. ezt ki is próbálom.
köszi szépen, tök jó ! Pontosan erre gondoltam. Mindjárt implementálom is a kódba.
Mindenki,
újabb kérdés következik :)
Bocs, de kaptam egy feladatot, melyet licenszelési okok miatt sajnos excelben kell megoldanom. (Különben vennünk kéne kb. 10 Access licenszet)
Így most az adatbevitel excelen keresztül folyik majd több gépen és a riport generálás lesz csak accessből egy gépen.
És a probléma:
Az excelben egy sheetre kerülnek fel az adatok az adatbevitel során. Ezen a sheeten néhány mezőt VLOOKUP függvény tölt ki az adott sor bizonyos mezői alapján.
Ezt a sheet-et linkelem be accessbe. Na most ez a hülye access azokra a mezőkre amelyekben vlookup függvény van mindenképpen azt hiszi, hogy numerikusak, hiába vannak benne szöveges adatok. És természetesen ezeket a mezőket hibásnak érzékeli, mert ugye string típust nem tud egy double mezőben értelmezni.
Ha tudtok segítsetek, mert így úgy néz ki, hogy több napos fejlesztés bukik meg ezen a hülyeségen.
ahol,
Caption: a menü, almenü, funkció neve
before: melyik menü elé kerüljön, ha jól sejtem ezt meg lehet adni after-ként is.
OnAction: végrehajtandó subrutin
Levenni a menüt pedig valahogy így lehet:
Sub MenütLevesz()
For Each MenüNév In MenuBars(xlWorksheet).Menus
If MenüNév.Caption = "&Saját Menü" Then
MenüNév.Delete
End If
Next
End Sub
Egy kicsit atirtam a tegnapit es nekem ez egyszerubbnek tunik:
Public Function IsFormula(rngInput As Range) As Byte
If rngInput.HasFormula = True _
Then
IsFormula = 1
Else
IsFormula = 0
End If
End Function
Ezt a fuggvenyt a tablazathoz tartozo modulban kell elhelyezni es a cella (pl. A1) felteteles formazasanal a képlet értéke opcional kell beirni:
=isformula($A$1)=1
Sub formulak()
Worksheets("Sheet1").Range(Cells(1, 1), Cells(100, 100)).Select
Selection.SpecialCells(xlCellTypeFormulas).Select
With Selection.Font
.ColorIndex = 55
End With
Worksheets("Sheet1").Range(Cells(1, 1), Cells(100, 100)).Select
Selection.SpecialCells(xlCellTypeConstants).Select
With Selection.Font
.ColorIndex = 1
End With
End Sub
Viszont nem lehetne valahogy optimalizálni ? "Nagyon sokáig" tart, mire lefut a kód, illetve szeretném kikerülni, hogy én adjam meg a range-et.
CurrentRegion egyelőre elvetve, mert vannak a táblázatban üres sorok, oszlopok is és ezeken túl nem működik.
Indítsd a formulak eljárást a táblázat valamelyik belső cellájából.
Sub formulak()
Selection.CurrentRegion.SpecialCells(xlCellTypeFormulas).Select
With Selection.Interior
.ColorIndex = 5
.Pattern = xlSolid
End With
End Sub
Szép kérdés.
Sokat próbálkoztam vele.
Irtam egy fuggvenyt ami egy range objektum formula tulajdonságát (ez az adott cella tartalma) megnézi, és ha +-= az első karakter akkor 1-et ad vissza, ha ettől eltérő, akkor 0-t.
Ezt a képletet beírtam egy cellába, és inputként a később kiszínezendő cellára hivatkoztam benne.
Ezután a feltételes formázásnál ennek a cellának a tartalmát vizsgáltam. Sajnos ezt a függvényt nem tudtam direktben elhelyezni a feltételes formázás képletében, mert hibát üzent.
Üdv p.
ennek alapból fel kéne kuporodnia a karakterkészletbe, de a fene sem ismeri ki magát már ebben a dzsungelban:(
Help!
Miért csinálja azt az excel egy táblázatban, hogy néha elfelejti az egyszer már beírt dolgokat, ugyanabban az oszlopban. Egy kb. 1000 soros táblázatban vergődök és az 5-6 századiknál már NEM MINDIG emlékszik a "pasi" nevére, akit mondjuk az első sorban már egyszer beírtam, pedig az első néhány karakter beütése után -néha már az első, ha nincs olyannal kezdődő több- már fel kéne ismernie és be kéne raknia emlékezetből. Ja, Excel97 SR-2. Bosszantó, nagyon.
sajna nem működik :( elvileg nemrég volt servicepack upgrade nálunk, de lehet hogy az én gépem kimaradt. Mindenesetre ráuszítottam a szakembereket a feladatra.
Persze mindez csak NT+SP4-től (ha jól emlékszem) felfelé.... Ha ennél lejjebb vagy, akkor kéne egy update.
De léteznek kiegészítő progik akár w3.1-hez is. Nézz körül a microsoft.hu frissítései között.
véletlenül a Window (Ablakok?) menüpontjának legfelső menüjére kattintottál "új ablak??" ekkor duplikálja a filédet. így nemtetted el, s újranyitáskor is duplán nyílik meg. Nyisd meg, majd zárd be a kettest, és mentsed le az eredetit. így helyre áll a világbéke.
lehetséges-e olyan chartot készíteni, amelyben a gridline-okat külön lehet formázni, pl. bizonyos határértéken túl a gridek legyenek pirosak és vastagok, egyébként meg mittomén, szaggatott fekete.
txt fájlokat készítenék a beszkennelt nyilvántartólapokról. Ha azok megvannak, azokat csoportban dolgoznám fel.
Ennek a probléma kikerülésén kívül más praktikus oka is van:
A txt fájlok archiválásával később ellenőrizhető az esetleges eltérés oka (szkennelési (karakterfelismerési) vagy feldolgozási).
Másrészt az esetleges kézi korrekciók más munkafázisban történnek.
Jó eséllyel az azonos lapokról azonos felépítésű fájlok készülnek (mondjuk kiváncsi vagyok, hogy a táblázat különböző beosztásai hogyan jönnek vissza, de biztosan azonosan).
Küldenél egy ilyen progit magánba (szakmai érdeklődés)
Üdv mindenkinek!
Egy olyan kérésem lenne, Hogy:
CSináltam az Excel-ben egy raktárnyilvántartó munkalapot.
Azt hogy lehetne megoldani, hogy a scannerről közvetlenül a prg-be kerüljön az adat.
Jó, legyen:
Lehet gyalog is, erről bővebbet a Súgóban: Lista szűrése az Irányított szűrő paranccsal
(
Lista:
Hasonló adatokat tartalmazó munkalapsorok feliratokkal ellátott sorozata, ...
A "lista" kifejezés egy munkalap összefüggő tartományát is jelentheti. stb.
)
A Te esetedben:
Adatok menü, Szűrő, Irányított szűrő parancs
A párbeszédablakban:
Más helyre másolja választókapcsoló,
Listatartomány mezőben a szűrni kívánt cellatartományt adhatod meg.
Szűrőtartomány mezőben a szűrőfeltételeket tartalmazó cellatartományt kell megadnod.
(Valahol oldalt kell lennie egy két cellás tartománynak, a felső ugyanaz legyen, mint a C1-ben, az alsó pedig az x)
Hova másolja: megadod hova akarod az x-es soraidat átmásolni.
Vagy:
Adatok menü, Szűrő, Autószűrő parancs
C oszlop felett kijelölöd a lenyílóban az x-et, a szürt adatokat kijelölöd, másolod és beilleszted.
Kösz a segítséget, bár ez nekem rendesen latin, mert én csak egy kis júzer vagyok.Majd megmutatom a rencergazdánknak.
A fogalmazásom valóban pontatlan, volt mappa=munkalap.
bocs és kösz
Egy lehetőség:
E kicsiny gyöngyszem az adat munkalap A1:D10 tartományából másolja át x munkalapra
azokat a sorokat melyek C oszlopában egy x van.
Feltételek:
az x legyen az aktív munkalap
az aktív cella legyen a C oszlopban, e sortól indul az adatok importja.
Sub x()
Dim x As Range
Set x = ThisWorkbook.Worksheets("adat").Range("C1:C10")
For Each c In x
If c.Text = "x" Then
With ActiveCell
.Offset(0, -2) = c.Offset(0, -2) 'A oszlop
.Offset(0, -1) = c.Offset(0, -1) 'B oszlop
.Offset(0, 1) = c.Offset(0, 1) 'D oszlop
.Offset(0, 2) = c.Offset(0, 2) 'D oszlop
'stb. - persze a legjobb lenne walami For .. Next
.Offset(rowOffset:=1, columnOffset:=0).Activate
End With
End If
Next c
End Sub
> Azt szeretném megtudni, hogy megoldható -e az, hogy ha én pl.a C oszlopban x-el jelölök meg valamit,
> akkor az összes x-el jelölt sor átmásolódjon egy x nevű mappába.
Igen, meg.
(
Azért jó lenne tudni Te mit is értesz mappa alatt az Excelben!
Munkalap
A Microsoft Excel legfontosabb dokumentuma, amelyet adatok tárolására és kezelésére használunk.
A munkalap sorokba és oszlopokba rendezett cellákból áll, és mindig egy munkafüzet része. Más néven számolótábla.
Munkafüzet
A Microsoft Excelben munkafüzetnek nevezzük azt a fájlt, amelyben dolgozunk, és az adatainkat tároljuk.
Mivel minden munkafüzet több lapot is tartalmazhat, a különféle, de összetartozó adatokat egyetlen fájlban rendezhetjük el.
)
lenne egy exceles problémám, hátha van valaki aki már korábban megküzdött vele...
van egy táblázatom melyben számok által megnevezett dolgokról mindenféle információk szerepelnek.
én ezt a számot használom egy másik táblázatban olymodon, hogy szinten vlookupal rengeteg adat közül ezt - tehát a számot - megjelenítem. Ehhez a megjelenített számhoz szeretnék az előnek említett adatbázisból hozzárendelni egy bizonyos másik adatot - de valamiért ez nem jön össze. nekem úgy tűnik, mintha függvény eredményével nem tudna számolni másik függvény - ill. nem tud rá hivatkozni.
félek nem voltam érthető, de így a gép előtt ülve is elég necces megérteni... :)
Azt szeretném megtudni, hogy megoldható -e az, hogy ha én pl.a C oszlopban x-el jelölök meg valamit, akkor az összes x-el jelölt sor átmásolódjon egy x nevű mappába.
> ... az újra telepítés segitett, de csak másodikra. Az első után még az 5 helyett 5,00 helyzet volt.
???? Ennyi miatt újratelepítesz? Uramatyám! Mennyi időd van!
> (azt nem írtam, hogy mind ez az Office xp "műve" volt.)
(Persze!)
Köszi az érdeklődést, ill. segitséget. Valójában az újra telepítés segitett, de csak másodikra. Az első után még az 5 helyett 5,00 helyzet volt. Azután pedig "csoda" történt. :-))
Még egyszer köszi. (azt nem írtam, hogy mind ez az Office xp "műve" volt.)
Ha százalékosra formázol, akkor előre gondolja, hogy ha 2-t írsz be, akkor az 2%-ot, azaz 0.02-t jelent. Ha ezután nem százalékra formázod, akkor a 0.02-t látsz.
Tehát a tippem a következő:
Bevitelnél azt gondolja, hogy %-ot akarsz írni, megjelenítésnél nem. Szerintem ez nem normális működés, amin úrrá kell lenni egy cellaformázással vagy az Excel újraindításával.
Ha nem segít, akkor kotorászni kellene a beállítások között, ami szerintem nehéz ha nem tudod, hol kell. Ha egyszerűen újra tudod telepíteni, akkor az segíthet.
Ha a formázás segít, az Excel újraindítás nem, akkor az Ezközök/beállítások menüben meg kell találnod a megfelelő alapbeállítást.
Tudom nagyon gyermeteg probléma, de két napja nem bírok vele. bármely cellába be írok egy közönséges számot pl.: 2, helyette ez jelenik meg: 0,02. Csak én ronthattam el valahol, de hol? Bocsi.
Egész egyszerűen nem bír vele.
Ha jól emlékszem, néhányszor korrekt módon közli, hogy túl sok sor (thát az MS szerint is limitálva van), néha viszont tényleg ezt produkálja. Nem érdemes ennek kijavításával foglalkozni, mert nem fog menni.
Ha nincs Access vagy nem szereted, akkor jöhet a fránya részösszeg, vagy egy makró általi előaggregáció. Az is segíthet, hogy néhány jól megfogható tulajdonságot leszűrsz, és egy másik lapra kitéve erre csinálsz kimutatást. Ha három részbe leszűröd, akkor három kimutatással (szerencsés esetben) ugyanott vagy, mint az eredeti feladat, ha jól sikerült kiválasztani a leszűrendő oszlopot.
Érdemes lehet kipróbálni Jozsef megoldását Access helyett (ha nincs) szövegként elmentve, és azt külső adatforrásként kezelni.
Kedves L-Gee!
Én is találkoztam már az általad említett problémával. Én végül is úgy oldottam meg, hogy a többezer soros adatforrást kiexportáltam Access-be, és a pivottáblát külső adatforrásból készítem el. Azóta egyszersem fagyott le pivottáblánál.
Üdv
József
Nagyon egyszerű tábláknál nem akad ki, de azt vettem észre, hogy minél több sorból áll az alaptábla, annál nagyobb a valószinűsége, hogy kiakad. pl. egy 3-4 ezer soros táblánál kb 50%-os a kiakadási arány, 10.000 sorosból pedig már teljesen reménytelen pivot táblát csinálni.
vagy rossz telepítés, vagy hibás alaptábla okozhatja a hibát. próbáld ki egy egyszerű, pár soros alaptáblán a frissítést. ha ott is fagy, újra kell telepíteni az Excelt. Ha nem fagy, rossz az alaptábla.
Nekem frissítéstől sosem halt me. "mástól azonban igen gyekran:( "
Van valakinek ötlete, hogy a Pivot táblák frissítését mivel lehet megbízhatóbbá tenni ?
Az esetek 50%-ban előjön lefagy tőle az excel és előjön Dr.Watson :(
és van, mikor hiába indítom újra az excel-t ötödszörre, akkor is lefagy. És sajnos a kollégáim gépén is ezt csinálja.
Köszönöm! Fantasztikus, működik! És ugyanígy a többi mátrixművelet is.
Apró megjegyzés: ezt a Ctrl+Shift+Entert ki nem találtam volna magamtól, a súgóban pedig nem találtam utalást rá.
Súgóban a tömbműveletek témánál lehet találkozni vele.
Itt a lényeg:
ki kell jelölni az eredménymátrix megjelenítéséhez szükséges cellatartományt, beírni a mszorzat függvényt, és CTRL+SHIFT+ENTER-rel kell befejezni.
Kedves József!
A CTRL+SHIFT+ENTER variáció melyik lépésnél szükséges? Meg van a két mátrix: A és B, képletünk: =MSZORZAT(A;B), eredményként csupán a bal felső értéket adja ki.
Semmilyen leírásban (Súgó, kézikönyv...) nincs megfejtés!
Écsapa
köszi szépen, de ez egy kicsit körülményes így, másrészt olyan darabos lesz a nyomtatás, mint amilyen a képernyő. Nekem igényes fotóminőségre van szükéségem.
Kérem világosítsatok fel, hogyan lehet az excelben mátrixot mátrixszal szoroztatni! A 97-es Office exceljében van egy "MSZORZAT" nevezetű munkalapfüggvény, aminek ezt kellene csinálnia. Egy párbeszéd-ablakban sorba egymás után írva meg is jelenik a helyes eredmény (a sorok elemei ponttal, a sorok pontosvesszővel elválasztva), de ugyanezt nem tudom a munkalapon megjeleníteni. Mi a teendő?
"Abban szeretném a segítségeteket kérni, hogyan lehetne egy excel sheetet kinyomtatni, nem printerre, hanem meghatározható felbontású jpg file-ba."
Tedd fel 1 Web oldalra es mentsdle onnan, jpg vagy bitmap-ba
nezd meg ezen a cimen:
http://members.tripod.com/logix11/id39.htm
Van egy kis gond ezzel a libary-val: otthon működiik, a munkahelyemen nem (??). Sem akkor, ha az alapértelmezett levelezőprogram Lotus Notes, sem ha Outlook Express. Van valami tipped (ha egy weblapon a mailto: -t használom, akkor helyesen megnyitja a Lotust, és a címzettbe beírja, amit kell)
Udv, tavolrol sem VB programozas, meg ilyesmire vonatkozi ka kerdes, de hat ha mar egyszre excel a neve a topicnak. Szoval, az van, hogy van egy nagyon regi excel fajlom, nem biztos de talan meg 4.0-as excelben irtam evekkel ezelott. Jelszovedett is a tabla. Most elobanyaszom az arvhivumbol, megakarom nyitni, es: bekeri a jelszot, berirom, es egy hang nelkul kiszall magabol az excel, egyszeru4en eltunik (ohne hibajelzes). Namost: lehet ezzel valamit csinalni? Nekem az is jo, ha valaki tud valami progit ajanlani, ami egyszeruen csak egy txt formaba dumpolja az excel tabla tartalmat. Mar annak is nagyon orulnek. (es gondolom nem ole-vel, vbagy com-mal operal, mert az ugyanigy nem fog menni.)
Elore is koszi, ha valaki segiteni tud.
cool, nézegegtem, bár sok helyre kell elküldenem az Excel fájlt, és nem fogják bekattogtatni a libaryt. Bár ha jól emlékszem, elég ha én hivatkozok rá a modell elején (már ha ugyanott vannak a megfelelő fájlok)
a legegyszerübb ha a VBA editor Tools>Referencies-nel bejelölöd az MS Access type library-ját is (mar ha van a gépen Access) és akkor rendelkezésedre áll az Access teljes objektummodellje. Ebben van egy ilyen:
Tud valaki VBA-ból (vagy NT 4.0-ból, amit VBA-val meghívok) e-mailt küldeni standard levelezőprogrammal vagy Lotus Notes-szal(az nem jó, hogy az Outlook-ot nyitja, és kézzel be lehet írni valamit)?
Attól függ, hogy mennyire van felkészítve az eredeti lap a rendszeres lekérdezésre. Nézd meg a "Microsoft Investor Tőzsdeindex.iqy" fájlt, és próbáld ki.
Én próbálkoztam már ezzel, és sajnos jpg fájlba csak grafikont sikerült exportálni. Jpg fájlt még kézzel sem sikerült csinálnom közvetlenül Excelből.
Ha nagyon erre van szükségem, akkor PaperPort-ra nyomtatok, az teljesen OK, a kép átmegy, csak kézzel kell elmenteni jpg-be.
Erre szerintem jó bármilyen fax program (általában fekete-fehér lesz), vagy valami hasonló.
Tehát nekem a tippem: telepíts olyan nyomtatót, amely képet készít, és nyomtass rá a hagyományos módon.
hogyan lehetne azt megcsinálni, hogy egy cellába egy adott website bizonyos sorának bizonyos számú karakterétől kezdve bizonyos számú karakterét rakja bele?
Elöször a dokumentumban definiáljál bookmarkot (tetszöleges számút definiálhatsz) és utána már a hyperlinket be lehet állítani akármelyik bookmarkra.
Ekkor valószínü, hogy a doksiban meg fog jelenni a Web toolbar, amin ha a Back-re klikkolsz akkor visszavisz egyböl a kiinduló excel cellába.
Hogyan tudom elérni azt, hogy egy mező hypertextjére kattintva a hyperlink megnyisson egy Word doksit, de ne az elején, hanem mondjuk a 6. oldal közepén levő alcímnél? (Odáig még nekem is megy, hogy a hyperlinkkel megnyittatom a doksit, de az mindig az elején van.) Illetve ez a hivatkozás hogyan tud oda-vissza működni? (Tehát a doksiban kattintok az alcímre, akkor hogyan fog előugrani nekem az abc.xls 2 munkalapján az 567. sor?)
Azzal, hogy a PWD1 és PWD2 változókat valamely munkalapokon (is) tárolod, valahogy így:
pwd1="wd"
pwd2=thisworkbook.worksheets(1).cells(2,1)
pwd3=thisworkbook.worksheets(1).cells(3,2)
pwdtot=pwd1&pwd2&pwd3
Ekkor ugyanis a munkalapot is fel kell törni, ami szintén nem lehetetlen, de nehezebb.
egymásba ágyazott IF-fel meg lehet oldani.
A függvény nem igaz részébe egy másik IF-et kell írni.
A következö formula ok ír ki ha az A3 cella D-t vagy R-t tartalmazz, az összes esetben "nem ok"-ét.
=IF(A3 = "D";"ok";IF(A3="R";"ok";"nem ok"))
Azt hiszem egymásba ágyazni csak 7 szintig lehet. Ha több kell, akkor vagy vlookup vagy saját függvény VBA-ban.
Hogyan lehet befüggvényezni az olyan IF logikai függvény- szerű problémát, ahol nem egy, hanem két logikai teszt van? Konkrétan úgy lehetne leképezni a problémám, hogy ha az 'A' - oszlopban az érték 1, akkor a 'B' oszlopba írjon 'x'-et, ha az 'A'-ban az érték '2', akkor a 'B'-be legyen 'y', minden más esetben pedig a 'b'-be 'z'-t írjon.
Ha a lent leírt módon írjátok be a jelszót, akkor sajnos szövegfájlként olvasva, "password" szóra rákeresve azonnal megvan! Kipróbálható pl. Norton Commanderrel, Notepaddal!
Semmi háború. Hol volt itt a nagyképüség?
Azért mert egy ügyfél véletlenül átír egy mezőt, én nem akarom újra küldeni neki ezt a kalkulációt, így gondoltam jobb levédeni.
Egyébként azért akartam eltüntetni a menüpontokat mert nem volt más ötletem(béna voltam nem találtam a passwordot)
Köszi
ezt a passwordot nem találtam a súgóba biztos én voltam béna.
Csak a véletlen módosítás ellen akarom védeni, nem akrom midig újraküldeni ha véletlenül elrontják.
Ráadásul magát a makrót is el lehet hide-olni jelszóval. Úgyhogy a felhasználó a makró megtekintésével sem fog rájönni a jelszóra. Más kérdés, hogy vannak progik, amik arra szolgálnak, hogy az excel jelszavait megfejtsék, de hát ha csak nem szupertitkos információkat rejt a munkafüzeteted :), akkor nem kell attól tartani, hogy egyszerű felhasználó feltöri a file-t. Meg hát nyilván akinek küldöd a file-t nem az az érdekük, hogy szándékosan ártsanak.
> ... ha makróból szabadítom fel a védelmeket nem tudok jelszavat megadni ...
Ezen az egyetlen pontos és szabatosan megfogalmazott gondolatodon kellene továbbmenned:
(
mert a többi nagyképűség:
> ... vevőknek lesz kiküldve, ebben csináltam jó sok hivatkozást....Mivel nem akarom, hogy elcsesszék ...
illetve hülyeség:
> eltüntetném az eszközök/védelem és az eszközök/makró menüpontot akkor ez már elég védelem lenne a kezdő felhasználók ellen
A felhasználók ellen??? Az Excel az együttműködésről szól, nem a háborúról.
)
Lenne egy lérdésem.
Van egy munkafüzetem, ami vevőknek lesz kiküldve, ebben csináltam jó sok hivatkozást....Mivel nem akarom, hogy elcsesszék tettem rá munkafüzet védelmet meg lapvédelmet. De a makróim munkalapot szúrnak be, törölönek, sort rejtenek el, jelenítenek meg, igy a makróból kell ezen müveletek elött ki meg bekapcsolgatni a védelmeket. Ez eddig müködik, de ha makróból szabadítom fel a védelmeket nem tudok jelszavat megadni, tehát bárki ki tudja kapcsolni a védelmet és elcseszheti a munkalapokat.
Arra gondoltam ,hogy ha a munkalap megnyitása esetén eltüntetném az eszközök/védelem és az eszközök/makró menüpontot akkor ez már elég védelem lenne a kezdő felhasználók ellen.
El lehet tüntetni őket?(és hogyan?)
Vagy valaki tud valami más megoldást erre a védelemre?
Rájöttem, de a többiek még nálam is kevesebbet konyítanak hozzá, és tuti, hogy el fognak kefélni valamit.
Szóval az igazi az lenne, ha csak szűrőgombra kellen klikkelniük majd a listából kiválasztani a feltételt.
Megoldható valahogy, hogy a jelszóval levédett sheeten működjön a szűrés?
Ugyanis a nagytudású kollégák által használt sheeten szeeretném megvédeni néhány cella tartalmát.
Amikor levédem a sheetet:
-nem pipálom ki a Contets-et akkor működik a szűrés, viszont a cellák is módosíthatóak
-kipipálom a Contets-et ekkor a kijelölt cellákat nem lehet módosítani (ez jó), viszont a szűrés nem működik