2417
megoldást keresek erre a problémára
  • norbre
    #2094
    sziasztok,

    itt bent a melóhelyemen már 3 kollégánál van egy olyan jelenség, hogy nagyon lassan számol át bizonyos táblázatokat a 2013-as verzió (ugyanaz nálam megnyitva 2010-ben problémamentes)
    A 2013-as Excelnél ezek pár munkalapos táblázatok, nincs külső hivatkozás, pár soros adattáblák vannak néhány diagrammal, nem tartalmaz makrót sem, vagyis semmi extra, mégis másodpercekig számol valamit.
    Sajnos a táblázatokat nem oszthatom meg, de van valakinek esetleg ötlete, találkozott már ilyesmivel valaki?

    Köszi
    Utoljára szerkesztette: norbre, 2015.05.26. 11:11:13
  • Delila1
    #2093
    Ilyen drága virágot küldeni! Köszönöm.
    Ami nem derült ki a hsz-ból, Skype-on beszéltünk meg egy halom dolgot. :-)
  • tigerbácsi
    #2092
    Köszönöm szépen a mai segítséget! Rengeteget tanultam :-) Igazad volt így sokkal könnyebb volt megtanulni a trükköket, megoldásokat mint bármely könyvből! Örök hálám!

  • tigerbácsi
    #2091
    én sem :-( de válaszoltam :-)
  • Delila1
    #2090
    Nézd meg a privátodat (én nem kapok egy ideje értesítést).
  • tigerbácsi
    #2089
    nálam 2010-es excelben működik. ha kiveszem az egyenlőségjelet akkor nem fut le a makro
  • Delila1
    #2088
    Szívesen.

    Mi van az If WSs.Range("Z28") = "yes" = True féle kettős egyenlőséggel?
  • tigerbácsi
    #2087
    köszönöm szépen! :-)

    nagyon nagyon jó ötlet a változó felvétele :-) ezt nem is tudtam eddig, mint nagyon sok mást sem :-D sajnos a VBA tanulással leakadtam időhiány miatt :-(

    Nagyon hálás vagyok a segítségért! már sokkal jövök Neked! :-)
  • Delila1
    #2086
    Az egész makrót egy feltétellel kezdd el:
    If Sheets("seged").Range("Q4")="no" Then
    ... 'ide jön a makró
    End If

    Az első üres sort ciklus nélkül, 1 lépésben kikeresheted.
    sor=Sheets("Raktar").Range("A" & Rows.Count).End(xlUp).Row + 1
    A Rows.Count a lapon lévő sorok száma, régebbi verziókban 65.536, újabbakban 1.048.576. A fenti utasítás annak a műveletnek a VBA-s megfelelője, mikor az A oszlop alsó celláján állva nyomsz egy Ctrl+fel nyilat. Ilyenkor az A oszlop utolsó kitöltött cellájára ugrik a fókusz. A +1 adja az első üres sor számát az oszlopban.

    Az If Sheets("seged").Range("Z28") = "yes" = True Then Sheets("Raktar").Cells(sor, 2) = Sheets("seged").Range("O17") típusú sorok hibásak, nincs kettős egyenlőség a VBA-ban.

    A helyedben felvennék a makró elején 2 változót, könnyebb kezelni a továbbiakban a hivatkozásokat.
    Dim WSR As WorkSheet, WSs As WorkSheet
    Set WSR = Sheets("Raktar")
    Set WSs = Sheets("seged")

    If WSs.Range("Z28") = "yes" Or WSs.Range("Z28") = "True" Then WSR.Cells(sor, 3) = WSs.Range("K17")
  • tigerbácsi
    #2085
    Sziasztok!

    van egy összetett makrom melynek egy részét szeretném egy ejszakas nevű checkBoxtól függővé tenni.

    'Raktár táblázatba adatbeírás

    sor = 10
    While Sheets("Raktar").Cells(sor, 1) <> ""
    sor = sor + 1
    Wend

    'idő
    Sheets("Raktar").Cells(sor, 1) = Sheets("seged").Range("N17")

    'Műszak
    If Sheets("seged").Range("Z28") = "yes" = True Then Sheets("Raktar").Cells(sor, 2) = Sheets("seged").Range("O17")
    If Sheets("seged").Range("X28") = "yes" = True Then Sheets("Raktar").Cells(sor, 10) = Sheets("seged").Range("O17")
    If Sheets("seged").Range("R11") = "yes" = True Then Sheets("Raktar").Cells(sor, 17) = Sheets("seged").Range("O17")

    'Névkiírás
    If Sheets("seged").Range("Z28") = "yes" = True Then _
    Sheets("Raktar").Cells(sor, 3) = Sheets("seged").Range("K17")
    If Sheets("seged").Range("Z28") = "yes" = True Then _
    Sheets("Raktar").Cells(sor, 4) = Sheets("seged").Range("L17")
    If Sheets("seged").Range("Z28") = "yes" = True Then _
    Sheets("Raktar").Cells(sor, 5) = Sheets("seged").Range("M17")

    If Sheets("seged").Range("X28") = "yes" = True Then _
    Sheets("Raktar").Cells(sor, 11) = Sheets("seged").Range("K17")
    If Sheets("seged").Range("X28") = "yes" = True Then _
    Sheets("Raktar").Cells(sor, 12) = Sheets("seged").Range("L17")
    If Sheets("seged").Range("X28") = "yes" = True Then _
    Sheets("Raktar").Cells(sor, 13) = Sheets("seged").Range("M17")

    If Sheets("seged").Range("R11") = "yes" = True Then _
    Sheets("Raktar").Cells(sor, 18) = Sheets("seged").Range("K17")
    If Sheets("seged").Range("R11") = "yes" = True Then _
    Sheets("Raktar").Cells(sor, 19) = Sheets("seged").Range("L17")
    If Sheets("seged").Range("R11") = "yes" = True Then _
    Sheets("Raktar").Cells(sor, 20) = Sheets("seged").Range("M17")


    'adatkiírás szűrőcserénél

    If Sheets("seged").Range("Z28") = "yes" = True Then _
    Sheets("Raktar").Cells(sor, 6) = -Sheets("seged").Range("Y24")
    If Sheets("seged").Range("Z28") = "yes" = True Then _
    Sheets("Raktar").Cells(sor, 7) = -Sheets("seged").Range("Z24")

    If Sheets("seged").Range("R11") = "yes" = True Then _
    Sheets("Raktar").Cells(sor, 21) = -Sheets("seged").Range("Q11")

    If Sheets("seged").Range("X28") = "yes" = True Then _
    Sheets("Raktar").Cells(sor, 14) = -Sheets("seged").Range("W24")
    If Sheets("seged").Range("X28") = "yes" = True Then _
    Sheets("Raktar").Cells(sor, 15) = -Sheets("seged").Range("X24")

    End Sub

    azt szeretném ha ez csak akkor futna le, ha a seged fülön a Q4 cella értéke "no" és ha ez az érték "yes" akkor ne fusson le. (ezt az értéket változtatja meg az ejszakas checkboxom)

    köszönöm szépen a segítséget!
  • tigerbácsi
    #2084
    =KEREK.LE() függvény a megoldás ha magyar excelt használsz.
    =ROUNDDOWN függvény ha angolt.

    a számjegyek száma 0

    (nekem jobban tetszik mint az INT függvény mert ha későbbiekben szükség van valami oknál fogva tört értékre könnyebb ezzel módosítani. /Ám az INT függvény a tökéletes a Te kérésedre :-)/)
  • Delila1
    #2083
    Az INT függvény levágja a tizedes értékeket. Az =INT(A/B) az A/B egész részét adja
  • kabel15
    #2082
    Sziasztok!

    Tudnátok segíteni?
    Adott egy feladat ahol megvan adva emberek születési dátuma valamint egy dátum és meg kéne adni hogy ki hány éves ha egy évet 365,25 napnak veszünk. Ez eddig mind szép és jó, csak hogy a feladat úgy kéri hogy csak az egész évek jelenjenek meg. =(W$2-E5)/365,25 eddig itt tartok ahol a W2 E5 a dátumok meg is kapom hogy 32,56 de ha megadom hogy csak 2 számjegyet jelenítsen meg akkor fel kerekíti 33 ra. Amivel a feladatom megoldása hibás lesz. Valakinek valami ötlet?
  • GImre70
    #2081
    Szia Delila!

    A segítségeddel és egy pici gondolkodással, ami így könnyebben ment sikerült megoldani a problémám teljes mértékben valahogy így:
    =HA(VAGY(D2="OFF";ÜRES(D2));0;HA(ÉS(PERCEK(D2)>0;PERCEK(D2)<=59);KEREK.FEL((D2-C2)*24/0,5;0)*0,5;(D2-C2)*24)) és működik. Ha te nem adod meg azt a képletet ami kiszámolja az időt félórás pontossággal, akkor sztem én sem tudtam volna rájönni a megoldásra.
    Még 1x köszönöm.
    Most már csak arra kellene rájönnöm,hogy hogy kell, vagyis melyik (worksheets) munkalap eseménybe kell ezt a képletet beírni.
  • GImre70
    #2080
    Szia.
    Amit leírtál képlet(függvény) működik nagyon jó is köszönöm is. De egy pici hiba van méghozzá az hogy ha például - amit az előzőekben is leírtam - 21:00 órát írok akkor is 4,5 órát számol. Volt már rá példa, hogy tényleg 9-kor mentem haza ezt a mágneskártya lehúzásakor írta ki a gép. Én csak saját magamnak szeretném nyilvántartani az időpontokat hogy tudjam mennyit melóztam. Ezért lenne fontos a pontos számítás ha megoldható.
    Nem lehet valami segéd táblázat segítségével és FKERES()-l kikeresni a megfelelő időponthoz tartozó számot kinyerni?
    Előre is köszönöm.
  • Delila1
    #2079
    Próbáld a lenti képlettel.

    =HA(VAGY(D2="OFF";D2="");0;KEREK.FEL((D2-C2)*24/0,5;0)*0,5)
  • GImre70
    #2078
    Sziasztok.

    Egy kis segítséget szeretnék kérni. Van egy táblázatom, amiben a munkaidőmet tartom nyilván.

    Az "A" oszlopban vannak a dátumok példámban az áprilisi hónap, A "B" oszlopban vannak a napok, A "C" oszlopban a munkaidő kezdete, A "D" oszlopban pedig a munkaidő vége - vagyis az az időpont amikor elhagyom a munkahelyem. Az "E" oszlopban a ledolgozott munkaidő órában ilyen képlettel: =HA(VAGY(D2="OFF"; D2="");ÉRTÉK("0");(D2-E2))*24). Az OFF azért kell mert ha azon a napon nem dolgozom akkor OFF-t írok be a munkaidő vége mezőbe. Így egy egész,vagy .5-re kerekített számot kapok. De az a gondom, hogy minden megkezdett félóra az a munka végén is félóra. Hogy értsd: Például az egyik nap 15:00-21:20 ig voltam ezt az értéket beírva az excelbe 6,333333 számot ír ki de nekem az kell hogy 6,5 írjon ki mert így számolnak el. De ha példáknál maradva 21:32 kor megyek haza akkor már 6,5333-t ír ki itt már 7 órát számolnak el. Szóval ezt hogy kell megírni úgy hogy ha ilyen időpontot írok be akkor is a megfelelő időt kapjam.
    Előre is köszönöm
  • norbre
    #2077
    hátezabaj :D köszi azért ;)
  • Delila1
    #2076
    Úgy látom, kimutatásban nem lehet kedved szerint rendezni.
  • norbre
    #2075
    Igen kimutatás..
    2010es excel
  • Delila1
    #2074
    Kimutatásról van szó, nem sima táblázatról? Melyik verziót használod?
  • norbre
    #2073
    Üdv,

    Van egy kimutatásom MEGNEVEZÉS, RAJZSZÁM, ANYAG, GYÁRTÓ oszlopokkal ebben a sorrendben.
    Van arra mód, hogy a kimutatás az adatokat elsődlegesen a GYÁRTÓ oszlop szerint, másodlagosan pedig a MEGNEVEZÉS oszlop szerint rendezze (úgy hogy az oszlopok sorrendje ne változzon)?

    köszi
  • Roger6
    #2072
    Megnézem, köszöntem!
  • norbre
    #2071
    nem számít :)

    Szűrő használata

    illetve itt egy videó is

    Szűrő használata videó
  • Roger6
    #2070
    Analfabéta vagyok hozzá, ezzel nem mondtál sokat nekem. A termék márkája amúgy nincs külön cellában, szóval egyben van a termék nevével. Nem tudom, ez számít-e?
  • norbre
    #2069
    szűrő?
  • Roger6
    #2068
    Sziasztok!

    Megint van 1.100 sorom, amelyek termékeket tartalmaznak. Márkák szerint kéne sorba szednem őket, szóval hogy tudnám megcsinálni, hogy kijelölje az összes sort a táblázatban, amely tartalmazza az általam megadott szót?

    Köszönöm előre is a segítséget!
  • Delila1
    #2067
    Nézd meg a privát üzeneteidet!
  • tigerbácsi
    #2066
    Köszönöm szépen!

    Jó dolog ez a VBA nyelv! :-)
  • Delila1
    #2065
    Van egy ciklus.

    for sor=1 to 10
    range("A" & sor)=sor*2
    next

    Itt a sor a változó.
    Érdemes az utasításokat kisbetűkkel beírni. Mikor tovább lépsz a beírt sorról, a VBA szintaktikájának megfelelően átállnak. Ha minden marad kisbetűs, sejtheted, hogy valamit rosszul írtál. A változók is lehetnek vegyesen kis- és nagybetűsek. A makróban ezeket úgy állítja át, ahogy a deklarációban megadtad.
    Utoljára szerkesztette: Delila1, 2015.02.10. 16:49:54
  • tigerbácsi
    #2064
    Köszönöm szépen! Ma is okosabb lettem :-D Már érdemes volt felkelni! :-)

    Én azt hittem, ha egy cellaértéket bármikor meg tudok változtatni akkor az már változó lesz, de ezek szerint csak akkor az, ha a makro számol vele, s nem feltétlen kiírt eredményt ad. hmmm remélem jól sejtem :-D

    Még egyszer őszintén köszönöm!
  • Delila1
    #2063
    Nem szükséges deklarálni, de hasznos. A rögzített makróban nincsenek változók.

    A VBE-ben (Visual Basic Editor) érdemes beállítani a Tools | Options menü Editor fülén a "Require Variable Declaration" opciót, ekkor az új modul tetejére automatikusan beírja az Option Explicit szöveget, ami kötelezővé teszi a modulban a helyfoglalást. Sok hibakereséstől menthet meg. Például más feladatra véletlenül azonos változót viszel be, vagy elindítasz egy ciklust, a benne lévő változó nevében elütsz egy karaktert, vagy egy egész szám típusú változóba törtet vinnél be. Ilyenkor üzenetet kapsz, ahol a hiba kijavítása után folytathatod a makrót.

    Általános nézet, hogy az összes változó deklarálását érdemes a Sub sor alá bevinni, így nem kell egy hosszabb makróban keresgélni.
  • tigerbácsi
    #2062
    Sziasztok!

    Az első kérdésem az az lenne, hogy mennyire szükséges egy makró folyamán deklarálni egy változót? mert ugye makro rögzítésénél nem csinál ilyet az excel, viszont a könyvekből amiből tanulok ott meg írják, hogy kell.

    Másik kérdésem meg az lenne ha írok vba-ban egy makrot ezt a deklarációt a változó bevezetése előtt elég deklarálnom, vagy vissza kell mennem a program elejére, s ott egy helyen megtenni azt?

    (Még csak most tanulom a vba nyelvet s ezért vagyok ilyen tudatlan :-( )

    Köszi szépen a választ előre is!
  • rooney8
    #2061
    és tényleg, azt hittem ott nem lehet :) köszi :)
  • Delila1
    #2060
    Szívesen, máskor is.
  • bardocz
    #2059
    Köszi, most már működik!
  • Delila1
    #2058
    Lehet, hogy nem dátum formátumúak a cellák, amikre hivatkozol a HÓNAP függvénnyel. Próbálkozz a KÖZÉP függvénnyel.
    2015.01.10 => =közép(A2;6;2)
  • bardocz
    #2057
    Hm, valamiért a #NÉV? hibát ad ki. Annyi, hogy nem gépen lévő excelben csinálom, hanem onedriveban. Így kicsit más a formázás, de a képleteknek ugyan úgy kéne működnie.
  • Delila1
    #2056
    Az E2 cella (címsort feltételezve) képlete =hónap(A2). Ezt lemásolod addig, ameddig dátumok vannak az A oszlopban.
    Egy üres oszlopba írd be a hónapok számát 1-től 12-ig. Legyen ez pl. a K1: K12 tartomány. Az L1 képlete =SZUMHA(E: E;K1;D: D)
    Ezt másold le K12-ig. A cellaformátum [ó]:pp legyen.
  • Delila1
    #2055
    A jegyzettömbben, txt-ben is ki tudod cserélni egyszerre mindet.