sajnos nem jöttem rá 
Gyorskeresés
Legfrissebb anyagok
Szakmai témák
PROHARDVER! témák
Mobilarena témák
Általános témák
GAMEPOD.hu témák
Adok-veszek témák
Hardver apróhirdetések
Hirdetés
Hozzászólások

Barnes
(tag)

Delila_1
(őstag)
Jobb klikk az adatsávokon, trendvonal felvétele. Több félét ajánl fel, amikből választhatsz, azért nem írtam részletesebben.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. http://www.elektroabc.hu/

Barnes
(tag)
igen, azt megtaláltam, csak sajnos nem jó egyik sem, amiket felajánl.
Esetleg arra tudsz megoldást, hogy két diagramot egyesíteni hogy kell?

Delila_1
(őstag)
Ha a két diagramod egy lapon van, áthúzod a sávokat egyikről a másikra.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. http://www.elektroabc.hu/

Barnes
(tag)
no igen, viszont az egyik diagramnál úgy van, hogy az adatok függőlegesen vannak a másikban pedig vízszintesen és ha megváltoztatom, akkor teljesen más diagram jön ki. lehet forgatni valahogyan a diagramot?

Delila_1
(őstag)

Barnes
(tag)
megpróbálom!
köszönöm! 

Delila_1
(őstag)
Sok szerencsét!
Programozó: hibás programok megírására és kijavítására kiképzett szakember. http://www.elektroabc.hu/

torment
(újonc)
Üdv Mindenkinek !
Örömmel tölt el, hogy rátaláltam erre a Fórumra.
Excel táblázatokat gyakran használok, de eljutottam a felismeréshez a VBA nem erősségem.
Segítsetek makrót írni!
Adatok a hét napjai, naponta három műszak
Feladat adott munkalap kitöltött celláinak átmásolása másik munkalap adott celláiba.
Sheets("Lemez_SPC").Select
Range("B35
42").Select
Selection.Copy
Sheets("Heti_adatbázis").Select
Range("B3").Select
ActiveSheet.Paste
Ez a makró fut, de az adatokat a Heti_adatbázis lapon más-más helyre kell átírni.
Vagyis 3x7 feltételt kell megvizsgálni és azok szerint 21 helyre kell adatot másolni.
A Lemez_ SPC lapon nem változnak az átírandó cellák. Rendelkezésre állnak kijelölt cellákban a műszakok és a hét napjainak kódjai. (1.2.3. vmint 1.2.3.4.5.6.7.)
Ha valaki tud segítsen!
Előre is köszönet 

perfag
(fanatikus tag)
Az a helyzet, hogy én nem értem (ez persze nem meglepő, ennyi IQ-cskával amennyi nekem van
.
"a hét napjai, naponta három műszak" az a "3x7 feltétel" azt hiszem. Na de hol adod meg ezeket az adatokat? És milyen formában?
"21 helyre kell adatot másolni." - kell, vagy lehet? 21-szer másolod ugyanazt az adatot valahova, vagy egyszer a 21 lehetséges hely valamelyikére? Ez a 21 hely 21 munkalap, vagy egy munkalap 21 különböző lehetséges tartománya? A felépítésről el kellene mondanod egy s mást.

Delila_1
(őstag)
Addig is, míg Perfag kérdéseire válaszolsz, a másolás egyszerűbb módja
sheets("Lemez_SPC").range("B35:F42").copy sheets("Heti_adatbázis").range("B3")
elegendő.
Ahhoz, hogy ne legyen mindenféle vigyori fej a képletben, ki kell jelölnöd, és a "Konvertálatlan" üzemmódot kell alkalmaznod.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. http://www.elektroabc.hu/

torment
(újonc)
Köszönöm a gyors reagálást.
Adott egy Lemez_Spc munkalap, adatokat kell átírni B35
42 cellákból a Heti_adatbázis
munkalap 21 kijelölt cella tartományba. A 21 kijelölt tartomány kiválasztását meg kell
határozni a következők szerint. A hét minden napja és naponta 3 műszak igy jön ki a 21
tartomány. A napok és műszakok kódjai automatikusan generáltak.
Napok kódjai 1,2,3,4,5,6,7 értékek a Lemez_spc munkalap Y6 cellában.
Műszakok kódjai 1,2,3 értékek a Lemez_spc munkalap Y21 cellában.
Olyan makróra lenne szükségem ami figyeli a napok illetve műszakok kódjait és a
Heti_adatbázis lapra átírja az adatokat.
Hétfő, Kedd, Szerda, Csütörtök, Péntek, Szombat, Vasárnap
1. mű B3, G3, L3, Q3, V3, AA3, AF13
2. mű B11, G11, L11, Q11, V11, AA11, AF11
3. mű B19, G19, L19, Q19, V19, AA19, AF19
A 21 hely kijelölése.
Szerintem ennyi elég kell, hogy legyen. Az én IQ közle jár a 60-hoz.
Köszönöm az eddigi fáradozásodat. 

torment
(újonc)
Köszönöm!
Kipróbálom.
Tanulni tőled Delila öröm. Felveszlek az angyalaim közé.

perfag
(fanatikus tag)
Újabb kérdés: látni vélek egy rendezettséget, amit ofszet segítségével ki lehetne használni.
B3 az alap cella, ehhez képest a napok 5 oszloppal tolják el a cél tartományt, a műszakok pedig 8 sorral. Jól látom?
Most még dolgozom (? ha a tanítást annak lehet mondani), dél körül végzek, ha addig DelDelila nem oldja meg, küldöm a kódot.

torment
(újonc)
Igen jól látod.
A lényeg, hogy minden másolás 40 cellát foglal el.
Ez a következőkből adódik óránként 5 mérési adatot viszek be, ez 8 órára számolva 40 adat.

Delila_1
(őstag)
Nem offset-tel oldottam meg, hanem a több elágazású select case-zel.
A Select Case sorban meg kell adni a figyelendő változót, a Case1, Case2, ....Case7 sorokban pedig azt, hogy melyik érték esetén mit csináljon a program.
Sub Másol()
Dim sor%, oszlop%
Sheets("Lemez_Spc").Select
sor% = Range("Y21"): oszlop% = Range("Y6")
Select Case sor%
Case 1
sor% = 3
Case 2
sor% = 11
Case 3
sor% = 19
End Select
Select Case oszlop%
Case 1
oszlop% = 2
Case 2
oszlop% = 7
Case 3
oszlop% = 12
Case 4
oszlop% = 17
Case 5
oszlop% = 22
Case 6
oszlop% = 27
Case 7
oszlop% = 32
End Select
Range("B35:F42").Copy Sheets("Heti_adatbázis").Cells(sor%, oszlop%)
End Sub
Szerk:
A #12012-es hozzászólásban úgy látszik, mintha 2 sorban lenne megadva a honnan - hova másol, pedig 1 sorba kell írni, közötte szóközzel. Programkódként kellett volna megadnom.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. http://www.elektroabc.hu/

erich85T
(újonc)
Sziasztok! Új vagyok a fórumon. Nem tudom, hogy mennyire nehéz megvalósítani, de ha esetleg van valakinek valami ötlete, esetleg kész megoldása a problémámra azt szívesen fogadnám. A kérdésem excel makro programozása témakörhöz kapcsolódik.
Van két oszlop, az első oszlopban nevek vannak a másodikban meg a névhez tartozó adatok. Valahogy így:
név - adat
a - x
a - y
a - z
b - q
b - w
b - p
b - q
Ezen táblázatot úgy szeretném transzponálni, hogy a név (egy adott sorban) csak egyszer szerepeljen, és az adatok a sorokból, egymás mellé kerüljenek oszlopokba. Így:
a - x - y - z
b - q - w - p - q
Több problémát is meg kellene így oldani a kódolásban:
- a kódnak figyelnie kell az azonos neveket, mivel valamelyik névhez lehet másik névhez meg akár 200 adat is tartozhat.
- ennek megfelelően az egymás mellé kerülő oszlopok száma is változik
- át kell rendeznie a táblázatot,a fenti formának megfelelően stb stb.
Ha valakinek van erre ötlete, hogy miképpen lássak neki, esetleg kész kódja van ehhez azt megköszönném.
Erik
Egyszerűbben írva:
Igen ez stimmel, valóban transzponálásról van szó. Viszont automatizálni szeretném ezt a folyamatot, nekem arra kell egy program, hogy a tartományt kiválassza és a fent leírt elv szerint transzponálja. Nagyon sok sor van a táblázatban, és a tartományok méretei is különböznek. Nekem azt kellene, hogy megvalósítsa a program, hogy kijelölje a megfelelő tartományt, jelen esetemben az egymás alatt lévő azonos neveket. Ehhez a névhez tartozó adatokat pedig egymás mellé oszlopba transzponálja.
tehát ebből:
név1 - adat1
név1 - adat 2
név1 - adat 3
név2 - adat 4
név2 - adat 5
név3 - adat 6
ezt csinálja:
név 1 - adat 1 - adat 2 - adat 3
név 2 - adat 4 - adat 5
név 3 - adat 6

torment
(újonc)
Nagyon szépen köszönöm a segítséget.
A gondolataim elkalandoztak, tudtam elágazásokkal van dolgom de a Select Case nem ugrott be.
Remekül fut a makró.
Köszönöm 

Delila_1
(őstag)
Szívesen. El ne fusson a makró! 
Programozó: hibás programok megírására és kijavítására kiképzett szakember. http://www.elektroabc.hu/

Delila_1
(őstag)
A makró egy irányított szűréssel indul, ami az A oszlopban lévő neveket szűri meg úgy, hogy minden név csak egyszer szerepeljen az E oszlopban. Ezután a nevek mellé felsorolja az adatokat.
Sub mm()
Dim sor As Integer, usor As Integer, sor_név As Integer, usor_név As Integer
Dim név, oszlop As Integer
'Irányított szűrés az E oszlopba az egyedi nevekkel
Range("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
"E1"), Unique:=True
usor = Range("E1").End(xlDown).Row: usor_név = Range("A1").End(xlDown).Row
'Kigyűjtés
For sor = 2 To usor
név = Cells(sor, "E"): oszlop = 6
For sor_név = 2 To usor_név
If Cells(sor_név, 1) = név Then
Cells(sor, oszlop) = Cells(sor_név, 2)
oszlop = oszlop + 1
End If
Next
Next
End Sub
Programozó: hibás programok megírására és kijavítására kiképzett szakember. http://www.elektroabc.hu/

perfag
(fanatikus tag)
Látom mire hazaértem megoldódott a dolog. Annyi baj legyen, ha már belekezdtem itt a kód:
Sub Másol()
Worksheets("Lemez_Spc").Select
sorok = Range("Y21")
oszlopok = Range("Y6")
Range("B35:F42").Copy Worksheets("Heti_adatbázis").Range("B3").Offset((sorok - 1) * 8, (oszlopok - 1) * 5)
End Sub

Delila_1
(őstag)
Elegánsabb az én makrómnál. 
Programozó: hibás programok megírására és kijavítására kiképzett szakember. http://www.elektroabc.hu/

torment
(újonc)
Zseniális megoldás.
Köszönöm a fáradozásodat.

perfag
(fanatikus tag)
Ne dicsérjetek, így is el vagyok szállva magamtól! 

torment
(újonc)
Bejött még egy feltétel az adtok kezeléseben. A gépsorok száma 3.
Így a mérési adatokat 3 külön álló munkalapra kell elhelyezni, attól függően melyik gépsor adatait állítom be. A gépsorok kódja 1,2,3 X15 cellában. Az előző makrót kitudnád bővíteni ezekkel a feltételekkel. A munkalapok neve gép1_heti; gép2_heti; gép3_heti 
Előre is köszönet.
Torment

Delila_1
(őstag)
Perfag makrójába írtam be a
lap = "gép" & Range("X15") & "_heti" sort, és a másolásnál a lap helyét ennek megfelelően módosítottam.
Sub Másol()
Sheets("Lemez_Spc").Select
Dim lap As String, sor As Integer, oszlop As Integer
lap = "gép" & Range("X15") & "_heti"
sor = Range("Y21")
oszlop = Range("Y6")
Range("B35:F42").Copy Sheets(lap).Range("B3").Offset((sor - 1) * 8, (oszlop - 1) * 5)
End Sub
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. http://www.elektroabc.hu/

torment
(újonc)
A gyakorlatlanok nincsenek kudarcra ítélve, ha angyalok segítik őket.
Köszönöm a megoldást. 

Delila_1
(őstag)
Szívesen.
Lelki szemeim előtt már látom is Perfagot nagy fehér szárnyakkal. 
Programozó: hibás programok megírására és kijavítására kiképzett szakember. http://www.elektroabc.hu/

Zomb€€
(őstag)
Lehet olyat csinálni, hogy egy nyitott munkafüzetből egy nem megnyitottba másolok direktbe? Pl. így: Range("A1").Copy Workbooks("d:\user\Documents\MAKRO\teszt02.xls").Sheets("Munka2").Range("A1")
"Egyszer fent...egyszer fent!"

perfag
(fanatikus tag)
Lehet.

Zomb€€
(őstag)
És hogyan?
Mert a bemásolt kód nekem nem működik 
[ Szerkesztve ]
"Egyszer fent...egyszer fent!"

perfag
(fanatikus tag)
Igazad van, rossz volt a válaszom. Lehet, de nem úgy.
Google: vba writing data to closed workbook
Az egyik lehetőség használj ADO-t. Ez a norvég fickó a kedvencem, mert trondheimi (Rosenborg), bár a kommentek szerint nem műxik a kód. Microsoft terméktámogatás, egy ipse, aki ezt tanítja is, ők sem rosszak.
Miért nem jó neked egy ScreenUpdating=False paranccsal elrejteni a fájl megnyitását? Amit nem látok az nincs is 

torment
(újonc)
Beviteli listából választottam eddig műszak számot.
1. műszak 06:00-14:00
2. műszak 14:00-22:00
3. műszak 22:00-06:00
Az operátorok feledékeny emberek ezért felmerült a következő ötlet.
Az aktuális időt kiíratom B6 cellába a MOST függvénnyel, majd a HA(ÉS) függvénnyel össze
hasonlítom az idő intervallumokat.
A várt eredmény nem lett díjazva.
Kinek van megoldása ? 

perfag
(fanatikus tag)
Állj a sarkadra! A beviteli lista nagyon OK, kár piszkálni.

Apollo17hu
(fanatikus tag)
Ez esetleg?
=HA(ÉS((MOST()-MA())*24>=6;(MOST()-MA())*24<14);"1. műszak";HA(ÉS((MOST()-MA())*24>=14;(MOST()-MA())*24<22);"2. műszak";"3. műszak"))

Aguinaga
(lelkes újonc)
Kéne egy kis help, én úgy tűnik, kevés vagyok hozzá:
2003-as Excelben meglehet-e oldani egy olyat, hogy adott két munkalap:
- elsőn adatok vannak sok-sok sor, soronként 4 db.
- ezen adatokat a második munkalap megfelelő sorába kell átmásolni, majd
- ezen munkalapokat kinyomtatni egyesével (mindig csak egyet, tehát az 1. munkalap első sorának 4 adatát átmásolva kinyomtatni a második munkalapot, majd feltölteni az első adatlap 2. sorával, kinyomtatni, etc, etc). A lényeg az lenne, hogy ez automatikusan menjen, ne kelljen a másolgatni az első lap adatait és utána egyesével nyomtatgatni.
Van valami ötlete valakinek erre?

perfag
(fanatikus tag)
Nem kell átmásolni, hivatkozni kell az első lapra, az eltolás függvényt használva.
Nálam a 2010-ben ez Eltolás, de a 2003-ban úgy emlékszem Ofszet volt a függvény neve.
Pl. A második lapon az F4 cellába beírom az eltolás értékét. Az első adatsornál ez 0, utána 1, 2 ... ha sok van, akkor betehetsz egy Léptető nyíl vezérlőt.
Ugyancsak a második lapon D4-be beírom: =ELTOLÁS(Munka1!B3;F4;0)
Ez átveszi a Munka1 lapról a B3 értékét és eltolja a sorok számát F4 értékével, most 0-val.
Ezt megcsinálod 4 helyen, utána nyomtatás gomb, léptetés, nyomtatás gomb ...
A léptetés, nyomtatás beírható egy makró For ... Next ciklusába - de minek.

Aguinaga
(lelkes újonc)
Ksözi, majd kipróbálom, bár ezt a léptető nyíl vezérlőt nem ismerem

perfag
(fanatikus tag)

Aguinaga
(lelkes újonc)
Köszi!
Még egy kérdés:
Ha annyiban változott a dolog, hogy nem a sorokat kell átmásolni a második lapra, hanem mondjuk az első lap a2 celláját a második lap d17-esébe, az első lap b2 celláját a második b11-ében, és így tovább a négy adattal, akkor mennyiben változna a megoldás?
Persze az továbbra is áll, hogy az 1. munkalap minden egyes sora után a 2. lapot ki kellene nyomtatni és feltölteni az első lap következő sorával.

torment
(újonc)
Köszönöm, tetszik a megoldás. 

perfag
(fanatikus tag)
Az, hogy a céltartomány nem összefüggő egyáltalán nem érdekes. Az a fontos, hogy a forrástartomány rendezett legyen, mert csak ez teszi lehetővé, hogy egy ciklust működtess, akár így az ofszet segítségével, akár makróval.

Zomb€€
(őstag)
Hú, ezek tényleg nagyon jók, köszi szépen! 
[ Szerkesztve ]
"Egyszer fent...egyszer fent!"

Delila_1
(őstag)
Erre való a Word körlevél funkciója, ami tipikusan az ilyen feladatok megoldására készült.
Körlevél a Wordben, adatok az Excelben.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. http://www.elektroabc.hu/

Aguinaga
(lelkes újonc)
Köszi az infokat mindkettőtöknek, a mai feladatot megoldottam ofszet függvénnyel, de legközelebb, ha lesz hasonló, megnézem ezt a word-körlevél + excel-tábla cuccot is!
[ Szerkesztve ]
Sziasztok!
Azt sem tudom mit kell keresnem így segítsetek!
Adott egy tábla amiben az első 10 sor szeretném úgy fixálni (vagy mit kell vele), hogy az alattuk lévőkben nyugodtan állíthassam a cella sor és oszlop szélességét, azok fixen maradjanak és ne változzanak.

mArZsi
(tag)
Sziasztok Excelesek!
Segítséget szeretnék kérni, mert kezdek dührohamot kapni... 
Egyik excel fájlból szeretném behívni a másik excel fájl egyes celláit. Ez így néz ki:
='[fájl.xls]lap'!$A$1 
Na most van hogy behívja, van, hogy nem.
Ha behívta, de látom, hogy rossz cellát kértem be, mondjuk nekem A2 kell, akkor átírom 2 végűre, de ahogy átírom, már nem azt hozza be, hanem szövegként kiírja a behívás parancsát.
Gondoltam 2010 nyavajája, de 2007-el is ugyanezt csinálja. 

Most még egy kérdés eszembe jutott:
Van mondjuk sok-sok nevünk egy tartományban. De van, hogy egy név többször is szerepel, több Gipsz Jakabunk van. Hogyan hozhatok létre egy listát, hogy milyen nevek vannak?! 
Ugye egymás alá bemásolva az összes nevet és utána a többszörösen előfordulókat kitörölni kicsit macerás, főleg, ha mondjuk 2000 név van...
[ Szerkesztve ]
Tablet Pc Service Specialist

Zomb€€
(őstag)
A 2. kérdésedre az Adatok/Ismétlődések eltávolítása lehet segítségedre, feltéve ha a többször szereplő Gipsz Jakab mindig ugyan úgy van írva.
"Egyszer fent...egyszer fent!"












