-
GAMEPOD.hu
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
Mutt
aktív tag
Hello,
Ha jól értem akkor kvázi egy függvény táblát akarsz csinálni, amely megad egy adott értékhez egy másikat.
Ha létezik egyértelmű képlet amely segítségével számolható az eredmény, akkor 3 megoldás is van:
1. Az egyik oszlopban felsorolod a bemeneti értékeket (10%,20% stb), majd mellette a képlettel elvégzed a transzformációt.
2. Használod az Excel Adattábla opcióját (Adatok fül Adateszközök csoportjában van).
3. UDF (user defined function) létrehozása VBA-ban és annak használata.Ha nincs zárt képlet a transzformációra, akkor marad a Célértékkeresés, amely viszont egyszerre csak egy bementi és kimeneti adattal boldogul, így nem fogsz tudni vele igazán haladni.
Ha többet megosztasz velünk, akkor lehet hogy konkrét megoldásokat is tudunk adni.
Üdv.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Mutt
aktív tag
Hali,
Ez esetben a következő makró tud neked segíteni:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vLastRow As Integer
Dim wSheet As Integer
If Target.Address = Range("Input").Address Then
'ha az utolsó lapon vagyunk akkor létrehozunk egyet
If ActiveSheet.Name = ThisWorkbook.Sheets(Sheets.Count).Name Then
wSheet = ActiveSheet.Index
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(wSheet).Activate
End If
'megnézzük az utolsó munkalapon az utolsó használt sort
vLastRow = Application.WorksheetFunction.CountA(ThisWorkbook.Sheets(Sheets.Count).Range("A:A")) + 1
'az utolsó sor alá A és B oszlopba beszúrjuk a kezdő és végértéket
ThisWorkbook.Sheets(Sheets.Count).Range("A" & vLastRow) = [input]
ThisWorkbook.Sheets(Sheets.Count).Range("B" & vLastRow) = [output]
End If
End SubA kódot a munkafüzetbe kell tenned, ahol van az adatsorod. A bemeneti (változó) cellád nevezd el "input"-nak, az eredményt pedig "output"-nak. Ezek után ha a bemeneti cellád módosítod, akkor a kód az utolsó munkafüzeten (és annak is az A-oszlop utolsó sorában) elkezdi gyűjteni a bemeneti és kimeneti adatokat.
A fájlt feltettem ide: http://www.filedropper.com/fuggvenytabla
Az Adatmentés fülön van ami neked kell.Az első fülön egy másik megoldás van, amellyel egy már létező táblázatból tudod kikeresni az értékeket.
Ez most nálad ne biztos, hogy műkődne, de hátha ebből is tudsz vmit hasznosítani.üdv.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
sztanozs
veterán
Miért kell Range(bevétel)? A bevétel-nek már magában is Range típusúnak kell legyen...
Hogy definiálod a bevétel változót?
Csináld inkább ezt:
Sheets("Alap").Range("G9").Copy
Dim bevétel as Range
Set bevétel = Sheets("Munka2").Range("E4")
bevétel.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=FalseVagy még egyszerűbben:
Sheets("Alap").Range("G9").Copy
Sheets("Munka2").Range("E4").Select
Selection.PasteSpecial Paste:=xlPasteValuesAmúgy nem árt leellenőrizni, hogy mi az aktív workbook, ha nem az, amire számítasz (nincsenek ilyen Worksheet-ek rajta), azon is simán elhasal - vagy mást csinál, mint amit szeretnél...
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Mutt
aktív tag
Hello,
...amikor a "next" második köre következik, akkor a kapott eredményeket A2-től D2-ig rakosgassa, majd a harmadik körben A3-tól D3-ig, és így tovább....
Használd a Cells(sor, oszlop) tulajdonságot.
pl. a lenti példa az elsö 15 sor első 4 oszlopába tesz egy véletlen számot.
For sor = 1 To 15
For i = 1 To 4
Cells(sor, i) = rnd()
Next i
Next sorMásik megoldás lehet ez:
For sor = 1 To 15
Range("A" & sor & ":" & "D" & sor) = Rnd()
Next sorA lényeg a "A" & sor, amely A1, A2 stb. hivatkozást állít elő.
üdv.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Mutt
aktív tag
Hello,
Ha nem megy felülről, akkor próbáld meg alulról.
A Sheets("Munka1").Range("A:A").End(xlDown).Offset(1, 0).Select rész helyett használd ezt
Sheets("Munka1").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).SelectSajnos egyszerú megoldás az utolsó használt cellára/sorra/oszlopra nincs Excelben, mivel be tudnak zavarni az üres sorok, a szűrők, a rejtett oszlopok. Ezen az oldalon van pár tipp azért.
üdv.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
-
Fferi50
őstag
Szia!
Nézd meg a sorszám függvényt. Ha azt beírod a B oszlopba, megmondja neked, hogy az A oszlopban levő szám hanyadik a sorrendben, növekvő vagy csökkenő sorrendet is választhatsz.
=sorszám(A1; $A$1:$A$100;0) növekvő sorrend szerinti helyet mutatja, ha az utolsó paraméter 1 akkor csökkenő sorrend szerinti helyet.
Figyelj rá, hogy a második paraméter dolláros legyen.Üdv.
-
Fferi50
őstag
Szia!
Le tudod tesztelni - ha legalább WIN7-ed van. Meg tudod nyitni többször is az Excel programot új és új ablakban, amibe behívhatod a közös használatú fájt.
A kérdésedre a válasz: Nem tud olyat az excel, hogy az A1 cella után az A2 cellába írjon a másik felhasználó., ha az A1 már "foglalt".
Ha mindhárom felhasználó ír az A1 cellába valamit, akkor az ütközés kezelési szabály dönti el, mi legyen az értékkel: lehet a saját értéket hagyni, lehet a másik felhasználó értékét és lehet egyenként felülbírálni, hogy melyik érték maradjon meg.
Az ütközés (konfliktus) kezelés szabályait pedig a közössé tétel során tudod meghatározni.Érdemes egy kicsit beleolvasni a helpbe is, bár nem túl bőbeszédű.
Üdv.
-
Fferi50
őstag
Szia!
Ez a jelenség az Excel számtárolási sajátosságaiból adódik, a lebegőpontos tárolás miatt a "sokadik" tizedesjegyekben eltérés lehetséges.
Bővebben is olvashatsz erről több helyen is (bocsi, de most nem tudok linket csatolni).
Egyébként gondolom tudod, hogy az Excel 15 értékes számjegyet tud tárolni, ha ezen túlnyúlik a szám, akkor a többi mind 0 lesz, függetlenül attól, hogy éppen mennyit írtál arra a helyre (természetesen szöveg formátummal ez nem így van).Üdv.
-
azopi74
addikt
Meert az excel lebegőpontos formában tárolja a számokat így pl ha 1.111111111112-ből kivonsz 1.111111111111 -et, akkor azt csinálja, hogy először konvertálja lebegőpontosra minkét decimal értéket, kivonja egymásból, és utána visszaalakítja decimal-ra. Így aztán nem 0.000000000001 - et fogsz kapni, hanem 0.00000000000100008890058234 -et. Ha ilyen pontosságú számításokat akarsz végezni, akkor nem az excel az eszközöd, inkább valami komolyabb adatbáziskezelőt használj, azok képesek sokkal nagyobb precízióval dolgozni (akár 128bites pontossággal).
-
Zola007
veterán
Köszönöm srácok
D5, Mutt, Fferi50egy újabb probléma merült fel, névszerint hogy a másik táblázatban több oszlopban vannak az adatok
Se az index, se az indirekt nem nagyon fogadja el, ha több oszlopot akarok beadni
Mindig jobbra haladva kellene egy adott oszlop adott tartományát átvizsgálni, ha ez tele, akkor ugorjon a következő megadott tartományra és ha az nincs tele, akkor az utolsó nem üres cella értékére lenne szükség.
Ha ez az tartomány is tele van, akkor megint a következőre, stb.Ez is meg lehet oldani még makró nélkül?
Másodsorban azt szeretném kérdezni, hogy valami jó anyagot tudnátok ajánlani a függvényhasználatok megtanulásához és makróíráshoz?
Egyrészt zavar, hogy nem értem hogyan is működik amit írtok megoldást.
Másrészt gyakran futok ilyen problémákba és a topikot nem akarnám mindig ezzel terhelni + nekem is jobb lenne, ha instant meg tudnám oldani.[ Szerkesztve ]
Mʏ ᴘʜɪʟᴏsᴏᴘʜʏ ɪs: Iᴛ’s ɴᴏɴᴇ ᴏғ ᴍʏ ʙᴜsɪɴᴇss ᴡʜᴀᴛ ᴘᴇᴏᴘʟᴇ sᴀʏ ᴏғ ᴍᴇ ᴀɴᴅ ᴛʜɪɴᴋ ᴏғ ᴍᴇ. I ᴀᴍ ᴡʜᴀᴛ I ᴀᴍ ᴀɴᴅ I ᴅᴏ ᴡʜᴀᴛ I ᴅᴏ. I ᴇxᴘᴇᴄᴛ ɴᴏᴛʜɪɴɢ ᴀɴᴅ ᴀᴄᴄᴇᴘᴛ ᴇᴠᴇʀʏᴛʜɪɴɢ. Aɴᴅ ɪᴛ ᴍᴀᴋᴇs ʟɪғᴇ sᴏ ᴍᴜᴄʜ ᴇᴀsɪᴇʀ. - Sɪʀ Aɴᴛʜᴏɴʏ Hᴏᴘᴋɪɴs
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest