-
Fototrend
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
Delila_1
Topikgazda
válasz zsotesz81 #6694 üzenetére
Beírod a neveket, és az Űrlap eszköztárról teszel melléjük 10 jelölőnégyzetet.
Mindegyikhez megadod a cellacsatolást: F2, F4 ... F20. Ezeknek a betűjét írhatod a háttér színével.
Az F1-be írod a felosztandó összeget, a D2-be pedig az ábrán látható képletet, amit lehúzol a D20-ig.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
zsotesz81
senior tag
válasz Fire/SOUL/CD #6698 üzenetére
Igen, egy ilyen formot kellene valahogy meghívni, a nevek és jelölőnégyzetek száma lehet állandó (a max az úgyis 10). Pontosabban a nevek attól függnek hogy az adott cellában milyen név van (A5-A14-ig vannak a nevek).
-
Delila_1
Topikgazda
-
zsotesz81
senior tag
válasz Delila_1 #6705 üzenetére
Csak az a bajom, hogy már ezt nem tudom hova rakni, ennek nem akarok külön munkalapot sem. Egyébként ez arra kéne, hogy pókerben döntetlennél a kasszát azonos arányban ossza szét a döntetlent elérők között. Ez mondjuk elég ritka, ezért akarom úgy megcsinálni, hogy gombnyomásra feljöjjön egy form, ott bepipálni azokat a játékosokat akiknél döntetlen van, majd a formon megnyomni egy gombot és a lóvé eloszlik. A formot már megcsináltam csak nem tudom hogy kell meghívni. Az előbb próbáltam egy active x parancsgombbal, alapból be volt írva a kódba, hogy load userform1 (nem változtattam meg a form nevét), de nem történik semmi.
-
félisten
válasz Delila_1 #6707 üzenetére
Hali!
Bocs, hogy megint "beleugatok", de ez nem a megfelelő megoldás, azaz ez így ahogy leírtad, úgy látszólag megy, de True értéknél hiba lesz.(Nem vagyok otthon, nem tudom kipróbálni, csak emlékezetből írok)
Szóval egy parancsgombról így lehet meghívni a Form-ot.
Helytelen
Private Sub CommandButton1_Click()
UserForm1.Show True
End SubA modal paraméter az vbModal vagy vbModeless értéket vehet fel.
zsotesz81
vbModal esetén amíg az ablak(Form) be nem csukódik, addig nem lehet a munkafüzethez férni, vbModeless esetén meg igen.Helyesen
Private Sub CommandButton1_Click()
UserForm1.Show vbModal
End SubFire.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Delila_1
Topikgazda
válasz Fire/SOUL/CD #6708 üzenetére
Nem True értéket kell megadni, nem is azt írtam.
A pénz elosztása után bezárják a formot, amit a jobb felső sarkában lévő X-szel is megtehetnek.[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
zsotesz81
senior tag
válasz Fire/SOUL/CD #6708 üzenetére
Köszönöm a segítségeket, egyébként True értékkel tényleg hibát ad.
-
félisten
válasz Delila_1 #6709 üzenetére
Hali!
Igen, de ez ebben az esetben nem bevett szokás, hogy megnyitott form mellett lehessen módosítani a munkafüzetben..
Akkor szokás ezt alkalmazni, ha pont az a cél, hogy a form pl információkat jelenít meg folyamatosan a munkafüzet változásait követve.Szóval nem katasztrófa a False használata(De mint megerősítettek a True hibát dob), ezért inkább akkor vbModeless a False helyett... Ez ilyen programozástechnikai elv(hogy ilyen rondán fogalmazzak) és nem csak Excel hanem más programnyelvek területén is teljesen alap eljárás)
Fire.
UI: Nálatok sem működik a PH helyesírás ellenőrzése HSZ írásakor?
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
zsotesz81
senior tag
Még egy kérdés, a formomon a label-ek feliratánál hogy tudom azt megcsinálni, hogy mindig pl. az A1 cella értéke legyen. Addig eljutottam, hogy Label1.Caption és gondolom ez után kellene a cella. De egyenlőségjellel nem ment, ha simán utánaírtam úgy sem volt jó.
UI.: Nálam működik a helyesírás ellenőrzés
[ Szerkesztve ]
-
Delila_1
Topikgazda
válasz zsotesz81 #6713 üzenetére
Ez a furcsaság az Excel logikájából fakad. A False a 0 megfelelője. Ezért van például, hogy az FKERES függvénynél akkor keres pontosan, ha az utolsó paramétere False, Hamis, vagy 0.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
félisten
válasz Delila_1 #6715 üzenetére
Hali!
Igen ez valós probléma néha, ezt elkerülendő mindig azt a konstanst/típust stb kell/célszerű használni, ami úgymond a nagykönyvben meg van írva és itt nem a súgóra gondolok, mert a súgóban is lehet találni olyan leírást, amivel biztosan nem működik egy adott függvény pl.
Fire.
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Lackó86
tag
válasz Fire/SOUL/CD #6698 üzenetére
Szia!
Igen Az lenne a cél h mindig felfelé kerekítsen!
Akár még úgy is h a számok vége 5 15 20 25 30 35 40 45 .......köszi a -1 est
[ Szerkesztve ]
jambi
-
félisten
válasz Lackó86 #6717 üzenetére
Hali!
Hát ezt nem teljesen értem... Szóval akkor ez lenne a szitu, pl
30 - nincs kerekítés
30,000001 - kerekítés 40-re
35 - kerekítés 40-re
39,999999 - kerekítés 40-re
40 - nincs kerekítésHa igen, akkor beépített kerekítő függvényről nem tudok, ami ezt megcsinálná, azonban természetesen megoldható. Leírom hogyan, Te meg próbáld meg ezt képlettel kifejezni.
Ha szám maradék nélkül osztható 10-el, akkor az adott szám kerül a cellába
Ha maradék képződik, akkor a szám egész része+10 kerül a cellábaEgy kicsit törd a kobakod...
Fire.
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
WildBoarTeam
aktív tag
Üdv!
Olyan képletre és formázásra lenne szükségem, ami a következő feltételeknek megfelel:
1. Túlóra számításhoz kell
2. Adott két oszlop (idő formátum) pl: 8:00, 18:30.....
3. ha A1 8:30 és B1 10:30 akkor C1-be ne 2:00 kerüljön, hanem 2,0.
4. ha A1 22:00 és B1 01:30 akkor C1-be hozzon a 3,5-öt.Tehát a lényeg, hogy ne idő formátumban hozza az eredményt, hanem számként.
Próbáltam ilyesmi képletet, de a 4. lépésben leírtakra nem jól számolt:
=HA($A1<$B1;24-$A11+$B11;$B11-$A11)*24
tehát, ha B1>A1, akkor 555,5-öt hozott eredménynek (a 4-es példával) és nem 3,5-ötKipróbáltam úgy is, hogy az A és B oszlopot számmá formáztam.
majd így módosítottam a képletet:
=(HA($A23<$B23;0-$B23+$A23;$A23-$B23-1)*24)*(-1)
A -1-el való szorzás itt azért kellett, mert negatívként hozta az értékeket.
És ha olyan sorhoz ért, aminél üres az A és B oszlop, akkor 24-et adott értéknek (bár ez egy HA() függvénnyel kiszűrhető).Kérdés:
Lehet ezt egyszerűbben megoldani?blabla
-
ulrik19
tag
válasz WildBoarTeam #6720 üzenetére
Szia!
a 4. példánál szerintem január 30-cal számol, ezért van hiba.
[ Szerkesztve ]
...az élet igazságos, mert pl. akinek rövidebb az egyik lába, annak hosszabb a másik...
-
WildBoarTeam
aktív tag
válasz ulrik19 #6721 üzenetére
Nem az a baj...
Végig mentem a képleten a képletkiértékelővel és azt látom, hogy számként kezeli a kapott időértékeket, így a =HA($B1<$A1;24-$A11+$B11;$B11-$A11)*24 nem jó, Mivel ilyen esetben a 24:00 = 1.0 és a 0:00 = 0.0.
Így a 22:00 = 0.916, a 01:30 = 0.0625 értékű. Tehát, ha igaz feltétel teljesül, a 24-ből való kivonás okozza a hibát (24-0.916+0.0625 és ez megszorozva 24-el = 555.5). Kicseréltem a 24-et 1-re és jól számol....Mindenesetre köszi a tippet.
[ Szerkesztve ]
blabla
-
Lackó86
tag
-
félisten
válasz Lackó86 #6723 üzenetére
Hali!
Persze hogy jó, ha 0-ra vagy 5-re felfelé kell kerekíteni pl
30->30
31->35
32,333->35
35->35
36,4545->40Ha esetleg "10-re" kerekítenél, akkor csak cseréld le a kódjában az 5-ösöket 10-re
=kerek.fel(a1/10;0)*10Fire.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Lackó86
tag
válasz Fire/SOUL/CD #6724 üzenetére
Köszönöm ! Nektek!
Örülök, h még vannak Jófej emberek! Fire/SOUL/CD & Delila_1
[ Szerkesztve ]
jambi
-
Lackó86
tag
Ha írnátok egy könyvet azt hiszem meg is venném!
jambi
-
zsotesz81
senior tag
#6714-re nem tudtok valami megoldást?
-
félisten
-
Fehér Mancs
tag
-
zsotesz81
senior tag
válasz Fire/SOUL/CD #6728 üzenetére
köszöntem
-
Lackó86
tag
Sziasztok!
? a következő:
Egy számsorból (oszlop), kiválasztani egy adott számhoz legközelebb eső számot (cellát)!pl.: 1
2
3
4
5
Szóval ezekből pl. 2,2 höz mi esik a legközelebb? (és ezt egy cellába kiírja)
Mint tudjuk h 2 hözElőre is köszi!
üdv.: Lackó!
jambi
-
félisten
-
félisten
válasz Fire/SOUL/CD #6732 üzenetére
Az a "[/M]"nem kell persze, csak sikerült kiakasztanom a PH szerkesztőjét...
Fire.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Lackó86
tag
-
Imy
veterán
Sziasztok!
Hogyan lehet azt megcsinálni, hogy ha egy adott egy cella, egy dátummal. Ha a dátum régebbi, vagy egyenlő a maival akkor pl. legyen piros, a dátum későbbi mint a mai, akkor pedig legyen zöld. -
ulrik19
tag
szia!
Feltételes formázás.
Pl.: beállítod pirosra (ez lesz az alapszín) a cellát
majd: feltételes formázás/a képlet értéke: =A1>MA(), formátuma pedig zöld, vagy amit akartok(Természetesen A1 helyére a cellát önmagát kell írni, amit formázol épp)
[ Szerkesztve ]
...az élet igazságos, mert pl. akinek rövidebb az egyik lába, annak hosszabb a másik...
-
félisten
Hali!
Itt képben(kicsit másképp) a feltételes formázás, amit Ulrik19 is javasolt
(Annyiban más, hogy nem kell cellaszínt alapban beállítani)A régebbi Excelben(tényleg régebbiben pl Excel 97) nem kellett feltételes formázás elég volt ennyi pl =HA(A1<=MA();PIROS;ZÖLD)
Sajnos(vagy nem sajnos) az újabbakban csak a feltételes formázás marad, vagy saját függvény készítése.Fire
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
WildBoarTeam
aktív tag
Üdv!
Makróban, hogyan tudom megírni úgy több lap törlését, hogy...
1. ne kérdezze meg mindegyik után, hogy törlöm-e.
2. és másrészről a lapok végéről addig töröljön, amíg el nem ér pl. a "Vége" nevű lapig. (a törölni kívánt lapok száma változhat, viszont az utolsó lap, ami még kell, az a 9.)ilyesmire gondoltam elsőre, de a 3. lap törlése után hibára fut:
vege = 14
For lap = 10 To vege
Sheets(lap).Select
ActiveWindow.SelectedSheets.Delete
'ide kellene az a rész, ahol igen-t mond a törlés megerősítésre.
NextAz itt a másik baj, hogy ez csak fixen 5 lapot töröl(ne), így gondoltam arra is, hogy a vége értékének az utolsó lap számát adom, de nem tudom hogyan...
Előre is köszi.
[ Szerkesztve ]
blabla
-
félisten
válasz WildBoarTeam #6738 üzenetére
Hali!
1 .A törlést rakd a DisplayAlerts True/False "közé"
Application.DisplayAlerts = False
Sheets(Sheet_Neve).Delete
Application.DisplayAlerts = True2. A ciklusban indexel is lehet hivatkozni a Sheets-re, mint ahogy teszed is. Az aktuális Sheets neve is lekérhető, értelemszerűen ha a neve "Vége", akkor kilépsz a ciklusból.
Fire.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
ulrik19
tag
válasz WildBoarTeam #6738 üzenetére
A for ciklusnál a törlés azért lehet problémás, mert ha törlöd pl. a 10-est, akkor a "helyébe lép" a 11-es. (Hiszen így is marad a sorban 10 elem). Mivel ezután Te a 11-est törlöd (for ciklus), értelemszerűen újabb előrecsúszás lesz. Vagyis mire a 14-hez érnél, már nincs is 14-es a korábbi törlések miatt.
1) for ciklus, de visszafelé (pl. sheets.count megadja elvileg a munkalapok számát)
2) while ciklus...az élet igazságos, mert pl. akinek rövidebb az egyik lába, annak hosszabb a másik...
-
WildBoarTeam
aktív tag
válasz Fire/SOUL/CD #6739 üzenetére
Köszi a DisplayAlerts-t.
Viszont nekem az lenne a lényeg, hogy ne fixen 14 legyen a vége.
Ami állandó, hogy van 9 lapom, ami kell. Ezek adataiból készítek még lapokat (+5-7db lapot), amik használatuk után már nem kellenek, és ezeket akarom törölni.
Szóval azt szeretném valamilyen formában elérni, hogy az utolsó állandó lapom, ami a 9. lap (pl: "Adat" névvel) utáni lapokat (ezeknek a száma változó) törölje. Viszont a vege változónak, hogyan adom be az utolsó lap indexének értékét?
Főleg, ha nem tudom a nevét a lapnak....
Amúgy jó megoldás a For-Next rá? Ha jól tudom a For-Next a kezdő értéktől megy a záróig, de azt nem tudom, hogy itt mindegy-e, hogy a kezdő nagyobb-e a zárónál
például ez helyes?:
For lap = 14 To 10
....
Next
vagy csak így jó?.
For lap = 10 To 14
....
Next
Ara rájöttem, hogy nekem nem jó az alsó verzió, mivel minden ciklusban növeli a lap értékét 1-el viszont közben csökkennek törlés után a lapfüleim is.Lehet az kellene, hogy mindig az utolsó lapot jelölje ki és törölje, amíg el nem éri az "Adat" lapot... na még gondolkodok...
blabla
-
félisten
válasz ulrik19 #6740 üzenetére
Hali!
Jogos és logikus észrevétel, de megoldható for - next ciklussal is(persze ha ez/így kell WildBoarTeam-nek)
Private Sub CommandButton1_Click()
start_sheets = 2
Sheets(start_sheets).Select
Application.DisplayAlerts = False
For i = start_sheets To Sheets.Count
If ActiveSheet.Name = "Vége" Then
Exit For
Else
ActiveSheet.Delete
End If
Next i
Application.DisplayAlerts = True
End SubMeg kell adni, a kezdősheet indexét(lehet ezt is módosítani persze), a ciklus végig szalad kezdőindex-től a Sheetszámlálóig és törli(nem kérdez), ha menetközben megvan a "Vége" nevű Sheets, akkor kiugrik a ciklusból.
Az teljesen jó meglátás volt, hogy úgymond törlés után "balra elmozdulnak" a lapok, és más indexet kapnak, épp ezért törlöm(dolgozom) mindig az aktuális sheets-el, merthogy az lép a helyébe.
Fire.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz WildBoarTeam #6741 üzenetére
Hali!
Akkor összefoglalom, adott egy munkafüzet benne 9 darab FIX munkalappal az elején(ezek indexe 1-től 9-ig van). Ezek állandóak, nem törlődnek. Ezen felül létrehozol különböző számú munkalapot, amik nyilván a 10-es indextől kezdődnek. Az a feladat, hogy a 9 FIX munkalapon felül az összes munkalap törlése kerüljön, számától, nevétől függetlenül.
Ha ez a szitu, akkor csak egy minimális változtatás a korábbi kódon és kész
Private Sub CommandButton1_Click()
start_sheets = 10
Sheets(start_sheets).Select
Application.DisplayAlerts = False
For i = start_sheets To Sheets.Count
ActiveSheet.Delete
Next i
Application.DisplayAlerts = True
End SubFire.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
WildBoarTeam
aktív tag
válasz Fire/SOUL/CD #6743 üzenetére
Na mire beírtam az előző hsz-t, már jött is megoldás, miért fut hibára.((6740#) ulrik19) köszönöm.
Igen Fire tényleg erre gondoltam. Csak először még nem igazán gondoltam át hogyan is kellene neki működni (de hát addig próbálgatja az ember, amíg meg nem unja, vagy meg nem oldja).
Delila_1 segített sokat a makróknál egy régebbi feladat kapcsán és miatta kezdtem beleásni magam jobban a VBA-ba, csak még az "elején" vagyok és sok megoldást még én sem ismerek...
Köszönöm.blabla
-
zsotesz81
senior tag
Makróval azt hogy lehet leírni, hogy ha a P5-P14 közti cellák valamelyike egyenlő "all in"-el akkor esemény?
Ill. excel függvényekre hogy lehet hivatkozni makróval?
Pl. ezt hogy lehet leírni: A2-es cella legyen egyenlő MAX(D$5$14).[ Szerkesztve ]
-
Delila_1
Topikgazda
válasz WildBoarTeam #6741 üzenetére
A visszafelé haladó ciklusnál meg kell adni azt, hogy csökkenjen a ciklusváltozó értéke.
Ez most független az előbbi feladatodtól:for i=20 to 5 step-1
A lépésszámot növekvőnél is megdhatod, ha pl. minden 5. sorban kell valamit végrehajtanod:
for sor=2 to 80 step 5
Csökkenőnél: for sor=80 to 2 step-5
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Badb0y
addikt
Meg lehet azt oldani, ha ven egy cellám, aminek az értéke valamiből ki lett számolva, tehát az értéke nem 534 hanem pl =($e4+$e5) ugye a tartalma, hogy megtartsa a számot hívatkozás nélkül ? Tehát a cellában amikor ráállok ne ez legyen hogy =($e4+$e5) hanem csak a szám amradjon meg. Nem tudom érthető-e.
Ugye megolldható, mert ha nem hülyét kapok
Minőségi laptopok https://notebookokhu.business.site/
-
félisten
Hali!
Magyarul el akarod tüntetni a cellá(k)ból a képleteket úgy, hogy csak a képlet által generált érték maradjon...Ha igen, akkor egyszerűen megoldható.
Kijelölöd a szükséges cellá(ka)t(lehet egész oszlop stb), jobb egér, másolás, ismét jobb egér, irányított beillesztés, csak értéket válaszd
Vigyázz, mert ha így csinálod, akkor "saját magára" másol, a képletek elvesznek. Értelem szerűen, a kijelölés/jobb egér/másol után kijelölhetsz másik helyet is a celláknak, akkor oda kerülnek az értékek az irányított beillesztés után.Fire.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
zsotesz81
senior tag
válasz Delila_1 #6746 üzenetére
Szia!
Ez sajna csak részben működik úgy ahogy szeretném. Azt vettem észre, hogy akkor fut le jól a kód ha rögtön az első játékosnál szerepel az all in. Ha mondjuk a 2. és 3. játékos között van döntetlen (all in mellett) akkor olyan mintha símán kihagyná a for ciklust és számolna úgy ahogy egyébként akkor kell ha nincs all in. Így néz ki a kód:
For i = 5 To 14
If Cells(i, 16) = "All In" Then
Call döntetlenallin
Unload Me
Exit Sub
Else
Cells(1, 9) = Cells(1, 8) / pipaszam
Call döntetlenszamolasEnd If
NextValami 5let?
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Ozeki Kft.
Város: Debrecen