Telefonszámunk: 1-472-0679

Adatok másolása egyik munkalapról a másikra

Kezdőlap Fórumok Excel témák Adatok másolása egyik munkalapról a másikra

Ennek a témakörnek tartalma 6 hozzászólás, 3 résztvevő. Utolsó frissítés:  horvimi 2 hete, 5 napja telt el.

7 bejegyzés megtekintése - 1-7 / 7
  • Szerző
    Bejegyzés
  • #7103

    tgonda
    Felhasználó

    Sziasztok!

    Kezdő excelesként az alábbi kérdésem lenne:
    Adott egy sablon excel munkafüzet, ahol a munkalap1-ről a munkalap2-re kellene átmásolni adott oszlop összes (nem üres) celláját (nincsenek köztes üres cellák). Próbálkoztam tömbfüggvénnyel, de nem az igazi sajnos. Makrózás nélkül van rá megoldás esetleg és ha igen, akkor annak hogy kellene kinéznie?

    Köszönettel,
    Tamás

    #7104

    horvimi
    Adminisztrátor

    Szia!

    Próbálom értelmezni a kérdésedet, mert azt sejtem, hogy nem egy sima másolást szeretnél.

    – Talán esetleg azt, hogy ha a forrás lapon változik valami, az változzon acél lapon?
    Talán nem csak ezt, mert ez egy sima hivatkozással megoldható.

    – Esetleg azt, hogy ha új adat kerül a forrás lapra, az jelenjen meg a cél lapon is automatikusan?

    Kicsit pontosítsd az igényt, írj le esteket, és esetleg tölts fel minta fájlt.

    Hasznos lenne tudni, hogy milyen Excel verzióval dolgozol.

    Imre

    #7105

    tgonda
    Felhasználó

    Szia Imre!

    Mellékletben csatoltam egy mintafájlt.
    2016-os Excelt használok.

    A Bevitel munkalap A oszlopában Double Commanderből vágólapra másolt adatok találhatók. Ezt bontom szét adott feltételrendszer szerint a B, C, D… stb. oszlopokban. Ezen oszlopok adatokat tartalmazó sorainak száma változik. Ha új adat kerül az A oszlop utolsó sorába, akkor az ahhoz tartozó B, C, D…stb. oszlopok adatait automatikusan szeretném megjeleníttetni az Ajánlat munkalapon az A, B, C… stb. oszlop 14+n-edik sorában. (n=Bevitel munkalap sorainak száma)

    Üdv,
    Tamás

    Attachments:
    You must be logged in to view attached files.
    #7107

    horvimi
    Adminisztrátor

    Szia!

    Ezt eseménykezelő makró nélkül csak Office 365-ben lehetne megcsinálni az új tömbfüggvényekkel dolgozó kalkulációs motorral.

    2016-ban csak egy olyan sufni-tuning megoldást lehet csinálni, hogy az Ajánlat munkalapról simán áthivatkozol a Bevitel munkalap megfelelő cellájára (B1), majd ezt a hivatkozást lehúzod jó sokáig lefelé annyit, ami biztonsággal hosszabb annál, amennyi sor a Bevitel lapon lehetséges. Ezt megcsinálod minden oszloppal, amit másolni szeretnél.

    Ahol még nincs adat a beviteli lapon, ott ugye üres lesz az eredmény az Ajánlati lapon..
    Ahogy adat kerül a +1-dik sorba, az így automatikusan meg fog jelenni az Ajánlati lapon is.

    Off megjegyzés
    Ha a Beviteli lapot te csináltad, akkor nem igazán tartozol a kezdő Excelesek közé.
    Elég sajátságos, hogy minden képletet elnevezve használnak, nem is láttam még ilyet.

    Imre

    #7108

    delila
    Felhasználó

    Jó reggelt!

    Mit szólsz a következő, pórias eljáráshoz?
    A Ctrl-t nyomva tartod, közben a Bevitel fület jobbra húzod. Ez másolatot készít a lapról, aminek a Bevitel(2) nevet adja. Most már csak át kell nevezned az új lapot, és elrejtened az A oszlopot.

    Üdv, Kati

    #7109

    tgonda
    Felhasználó

    Szia Kati!

    Köszönöm a tippet, de sajnos ez nem járható út számomra, mert egy *.csv-t kell generáljak az Ajánlat munkalap tartalmából későbbi műveletek után és ott számít, hogy az A oszlop mit tartalmaz.

    Szia Imre!

    Köszönöm neked is a segítséget és a jóleső észrevételed is, igen én csináltam a Bevitel lapot.

    Esetleg ha makrókkal megoldható a problémám, akkor tudnál adni tippet, hogy hol kezdjek keresgélni?

    Üdv,
    Tamás

    #7110

    horvimi
    Adminisztrátor

    Hát, az attól függ, hogy hol tartasz most a makrókkal.

    Ha teljesen kezdő vagy, és módszeresen tanulnál, akkor tudom ajánlani kezdetnek az éppen nemrég elkészült videó-tanfolyamot.
    https://videotanfolyam.pentaschool.hu/

    Ez nem ad megoldást a problémádra, hanem bevezet a makrózás világába. A legelejébe.

    A te igényedet a következőképpen lehet megcsinálni. Ez egy lehetséges út.

    Mivel a beviteli lap nagyon helyesen táblázattá van alakítva, így igaz rá, hogy az A oszlop végére megadva egy új tételt, a táblázat kiterjed és a többi oszlop automatikusan előáll a képletek által.

    Nem tudom hogy mi a valós munkameneted. Rekordonként töltöd fel az A oszlopot, vagy esetleg több tételt másolsz oda egyszerre?
    Létezik a VBA-ban un. esemény kezelés (Event handling). Ezt használva megadható, hogy mi történjen, ha pl. egy adott munkalapon változás történik. Ha csak egy cellát változtatsz (új érték, törlés), akkor egy esemény generálódik. Ehhez tudsz készíteni saját eseménykezelőt, amivel megvizsgálod, hogy melyik oszlopban volt az esemény, és ha az A oszlopban volt, akkor átmásolod a táblázat B:G oszlopait az ajánlati lap megadott helyére értékként.

    Ha viszont több cellát másolsz be a beviteli lap A oszlopának végére pl. vágólapról, akkor annyi esemény keletkezik, ahány cella módosul, és a másolás is annyiszor történik meg. Ilyet még nem próbáltam, nem tudom mi lenne belőle. Mivel ugyanoda másol, és neked a keletkezett utolsó sorhoz tartozó eredmény kell, még akár működhet is. Mindig felülírja az előző másolást egy sorral hosszabb adattal. Elég bénán hangzik, de lehet, hogy működik.

    Aztán lehetne félautomata
    Beviszed az új adatot vagy adatokat a beviteli lap A oszlopába, majd egy gombbal vagy bill. kombinációval Te kezdeményezed az átmásolást.

    Bármelyik megoldáshoz meg kell tanulnod a másolás makrózását, a másolandó tartomány méretének automatikus megállapításával.
    Most kipróbáltam, és táblázat hivatkozással működik a dolog, tehát nem kell méretet megállapítani.
    Na mindegy, marad elég probléma, amivel meg kell küzdeni.
    Szóval kezdőként is kivitelezhető, legfeljebb nem tudod pontosan,hogy mit csinálsz.

    Ehhez képest Office 365-ben egy sima tömbhivatkozással megoldható az egész.

    Bocs, h ilyen hosszú lett,

    Imre

7 bejegyzés megtekintése - 1-7 / 7

Be kell jelentkezni a hozzászóláshoz.