Excel help
2010-08-24T08:01:49+02:00
2010-08-25T18:40:00+02:00
2022-07-25T20:55:32+02:00
csorbam
hej mindenki! 1 munkafüzetről van szó melynek egyik munkalapján látható egy termék száma neve és a hozzátartozó gyártási idő/ darab. egy másik lapja folyamatosan frissül mely a termékek számát nevét és gyártásra kiirt darabszámot tartalmazzák.ezen oszlopok mellé szeretném függvénnyel kiiratni az adott darabszám legyártásához szükséges időt.segitsetek!köszi
Mutasd a teljes hozzászólást!
Egy picit belenéztem jobban a dologba, és egy ilyesmi nekem működik. Persze akkor, hogy ha sheet1 tartalmaz minden olyan terméket, amit a sheet2 használ, és a sheet2-n kell állandóan számolni.
A következő makró segíthet:

Sub szamitas() 'kiválasztjuk a sheet2, így biztosan, hogy azon fog számolni, 'akárhol is állunk a munkafüzetben ActiveWorkbook.Sheets(2).Select 'két változó deklarálása Dim sor as integer Dim i As Integer Dim eredmeny as integer 'megnézzük, hogy az A oszlopban melyik a legutolsó cella, 'ami adatot tartalmaz. 'Feltetel, hogy az adatok folytonosak legyenek, azaz ne legyen 'üres cella. 'Ha van, akkor előtte az adatokat rendezni kell. Range("A2").End(xlDown).Select sor = Selection.Row 'egy for ciklussal végigmegyünk a feldolgozandó adatokon, és 'kiszámoljuk az időt For i = 2 To sor eredmeny = Munka1.Range("A1:A500").Find(Cells(i, 1)).Row Cells(i, 4) = Munka1.Cells(eredmeny, 3) * Cells(i, 3) Next End Sub

Remélem menni is fog, persze az a kérdés, hogy milyen időközönként, vagy minek a hatására szeretnéd a makrót futtatni.
Létrehozol egy gombot a munkalapon például, hozzárendeled a fenti makrót, és már minden működik .
Ha adsz e-mail címet, akkor tudok küldeni egy kis példát.
Mutasd a teljes hozzászólást!

  • Nem tudom, hogy ez közvetlenül függvénnyel megoldható-e, de ha igen, akkor is valamilyen bonyolult függvény lenne.
    Szerintem egyszerűbb egy makrót írni, ami következőt teszi:
    A frissülő munkalap minden elemén végigmegy és keresi az termék azonosító számát a munka1 lapon. Ha van találat, akkor a munka1 lap adott sor x-edik cellájában található adatot összeszorozza a munka2 lap (frissülő lap) gyártandó darabszám értékével, majd az eredmény kiírja a szükséges idő oszlopba.
    Ha ezt a megoldást választod, akkor ez már programozás, és sokkal több segítséget kaphatsz a prog.hu-n.
    Mutasd a teljes hozzászólást!
  • Másik lehetséges megoldás az "fkeres" függvény kombinálása más függvényekkel.
    Mutasd a teljes hozzászólást!
  • köszi a válaszokat.az index fv bevonásán agyalok éppen....
    Mutasd a teljes hozzászólást!
  • Szevasz!
    Munkalap1
    A1 = 0001
    B1 = Cipő
    C1 = 3

    Munkalap2
    A1 = Munkalap1.A1
    B1 = Munkalap1.B1
    C1 = Munkalap1.C1
    D1 = 3
    E1 = Szorzat(c1;d1)


    Megj.: Openoffice Calc-ban néztem, Excel-ben lehet, hogy a Munkalap2-n lévő hivatkozásokat módosítani kell.
    Vagy nem erre gondoltál?
    Mutasd a teljes hozzászólást!
  • ez nem sikerült, mert folyamatosan frissül a munkalap2 első 3 oszlopa és a D1be szeretném kiíratni a gyártáshoz szükséges időt.
    Mutasd a teljes hozzászólást!
  • Egy picit belenéztem jobban a dologba, és egy ilyesmi nekem működik. Persze akkor, hogy ha sheet1 tartalmaz minden olyan terméket, amit a sheet2 használ, és a sheet2-n kell állandóan számolni.
    A következő makró segíthet:

    Sub szamitas() 'kiválasztjuk a sheet2, így biztosan, hogy azon fog számolni, 'akárhol is állunk a munkafüzetben ActiveWorkbook.Sheets(2).Select 'két változó deklarálása Dim sor as integer Dim i As Integer Dim eredmeny as integer 'megnézzük, hogy az A oszlopban melyik a legutolsó cella, 'ami adatot tartalmaz. 'Feltetel, hogy az adatok folytonosak legyenek, azaz ne legyen 'üres cella. 'Ha van, akkor előtte az adatokat rendezni kell. Range("A2").End(xlDown).Select sor = Selection.Row 'egy for ciklussal végigmegyünk a feldolgozandó adatokon, és 'kiszámoljuk az időt For i = 2 To sor eredmeny = Munka1.Range("A1:A500").Find(Cells(i, 1)).Row Cells(i, 4) = Munka1.Cells(eredmeny, 3) * Cells(i, 3) Next End Sub

    Remélem menni is fog, persze az a kérdés, hogy milyen időközönként, vagy minek a hatására szeretnéd a makrót futtatni.
    Létrehozol egy gombot a munkalapon például, hozzárendeled a fenti makrót, és már minden működik .
    Ha adsz e-mail címet, akkor tudok küldeni egy kis példát.
    Mutasd a teljes hozzászólást!
  • Ezek szerint sikerült?
    Mutasd a teljes hozzászólást!
  • hát alakul, de a kis példát várom... :D
    Mutasd a teljes hozzászólást!
  • A For-Next ciklusban a Munka1.Range... és Munka1.Cells... hibát eredményez.

    Kijavítva, és egy picit egyszerűsítve a makró:

    Sub szamitas() 'kiválasztjuk a sheet2-t, így biztosan, hogy azon fog számolni, 'akárhol is állunk a munkafüzetben Sheets(2).Select '3 változó deklarálása Dim sor As Integer Dim i As Integer Dim eredmeny As Integer 'megnézzük, hogy az A oszlopban melyik a legutolsó cella, 'ami adatot tartalmaz. sor = Range("A65536").End(xlUp).Row 'egy for ciklussal végigmegyünk a feldolgozandó adatokon, és 'kiszámoljuk az időt For i = 2 To sor eredmeny = Sheets(1).Range("A:A").Find(Cells(i, 1)).Row Cells(i, 4) = Sheets(1).Cells(eredmeny, 3) * Cells(i, 3) Next End Sub
    Mutasd a teljes hozzászólást!
  • Való igaz!
    Azért eredményez hibát, mert valószínűleg nálad nem Munka1, és Munka2-nek hívják a két lapot.
    Mindazonáltal
    Range("A65536").End(xlUp).Row
    már nem állja meg a helyét excel 2007-ben, mert ott már jóval több a sorok száma. Ezért indítottam a A2-ről, mert feltételeztem, hogy az A1-ben valamilyen cím/név szerepel, és feltételként megadtam hogy az adatok folytonosak lehetnek.
    Mutasd a teljes hozzászólást!
  • A Munka1.Range... sorban a Munka1-et változóként értékeli. Nem helyes a szintaktika. Sheets("Munka1").Range... is lehetne. Egyébként nálam is Munka1, és Munka2 néven szerepelt a két lap.

    A Range("A65536").End(xlUp).Row sorban a 65536 helyett elég egy jó nagy számot írni, ahol már biztosan nincs adat az A oszlopban. Ez a "jó nagy szám" lehet, hogy 1000, ha biztosan nics 300-nál több adat. Az xlUp azért jobb (szerintem), mert nem okoz adatvesztést, ha üres cellák vannak az oszlopban.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd