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.
Gyorskeresés
Legfrissebb anyagok
- Bemutató Spyra: akkus, nagynyomású, automata vízipuska
- Bemutató Route 66 Chicagotól Los Angelesig 2. rész
- Helyszíni riport Alfa Giulia Q-val a Balaton Park Circiut-en
- Bemutató A használt VGA piac kincsei - Július I
- Bemutató Bakancslista: Route 66 Chicagotól Los Angelesig
Általános témák
LOGOUT.hu témák
- [Re:] [koxx:] Bloons TD5 - Tower Defense játék
- [Re:] [Luck Dragon:] Asszociációs játék. :)
- [Re:] [sziku69:] Szólánc.
- [Re:] [sziku69:] Fűzzük össze a szavakat :)
- [Re:] [attilasd:] A laposföld elmebaj: Vissza a jövőbe!
- [Re:] [gban:] Ingyen kellene, de tegnapra
- [Re:] [bb0t:] Gyilkos szénhidrátok, avagy hogyan fogytam önsanyargatás nélkül 16 kg-ot
- [Re:] Gurulunk, WAZE?!
- [Re:] [antikomcsi:] Való Világ: A piszkos 12 - VV12 - Való Világ 12
- [Re:] [ubyegon2:] Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
Szakmai témák
PROHARDVER! témák
Mobilarena témák
IT café témák
Téma összefoglaló
- Utoljára frissítve: 2023-11-13 08:31:56
LOGOUT.hu
Hozzászólások
-Solt-
veterán
Ó, elnézést Hölgyem!
Köszönöm a gyors választ! Annyi lenne még a kérdésem, hogy mennyiben változik a képlet, ha nem csak összeadásról, hanem szorzás is lenne benne?
www.smart-bus.hu
lappy
őstag
=HA(ÜRES(A1);"0 Ft";HA(SZÖVEG.E(A1);SZUM(B1:C1;SZORZAT(D1:E1);""))
[ Szerkesztve ]
Bámulatos hol tart már a tudomány!
lappy
őstag
=HA(ÜRES(A1);"0 Ft";HA(SZÖVEG.E(A1);SZUM(B1:C1;SZORZAT(E1;F1));""))
Bámulatos hol tart már a tudomány!
cousin333
addikt
Nem hiszem, hogy korlát lenne. Inkább a 81. sorban (vagy rekordban) van valami, ami nem tetszik neki (pl nem szám van ott, ahol ő azt vár). Nem ír ki valami hibaüzenetet?
De továbbiakat csak akkor tudunk mondani, ha valami konkrétumot kapunk.
[ Szerkesztve ]
"We spared no expense"
buherton
őstag
Közben rájöttem, hogy user error volt . A hiba üzenet szövege ennyit volt: 400 . Az volt a probléma, hogy egy cellában lévő értékből munkalap nevet szerettem volna készíteni. Ez mind addig jó volt, amíg bele nem ütközött egy olyan értékhalmazba, amiben volt kettős pont. Emiatt dobta a hiba üzenetet nekem.
Pont ma volt egy másik hasonló eset, amikor egyik excel fájl cellájáról egy másik excel cellájára hivatkoztam (ezt is automatizáltam), és az elérési útban nem lehet aposztróf, ezért ekkor is ilyen 400-as hibát dobott vissza.
Ez a harmadik VBA-m, és az ilyen "apróságok"-ra még nem tudok könnyen rájönni, mert nincs meg a rutin, hogy hol mi miatt állhat meg. Osztályokkal is sokat bajlódok, mert nem mindegy, hogy mikor mit írok.
Az már csak hab a tortán, hogy két gépen dolgozok. Egyiken magyar office 2010 van, a másikon angol office 2003. Fájlformátumot a 2010-ben mindig be kell állítani, az ilyen Sheets("Sheet1")-eket el lehet felejteni, túl nagy cellát sem lehet másolni 2003-ban, stb...
Eddig teljesen hidegen hagyott az excel, most meg teljesen bele zúgtam, hogy bármit megcsinálhatom benne.
Hogyan lehet olyan function készíteni, hogy ne legyen bemenő változó, és ne térjen vissza semmivel? Egyáltalán lehet ilyen? Formázásokat szeretném kitenni függvényekbe. Vagy ilyenkor az objektum referenciája lesz a bemenő változó?
[ Szerkesztve ]
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
cousin333
addikt
"Az már csak hab a tortán, hogy két gépen dolgozok. Egyiken magyar office 2010 van, a másikon angol office 2003."
Részvétem...
"Hogyan lehet olyan function készíteni, hogy ne legyen bemenő változó, és ne térjen vissza semmivel? Egyáltalán lehet ilyen?"
Tudtommal nem lehet. A function azért function, mert értékkel tér vissza. Cellát formázni meg pláne nem lehet vele, még azt sem, amelyikbe beleírod.
Szubrutinnal viszont tudsz formázni, nem kell, hogy bemenete vagy kimenete legyen. Csak a hívását kell megoldanod valahogy. Vagy egy másik függvény triggereli (szubrutin, nem function!), vagy mondjuk egy gombra kötöd.
[ Szerkesztve ]
"We spared no expense"
-Solt-
veterán
Köszönöm mindenkinek! Küzdök tovább...
www.smart-bus.hu
buherton
őstag
Nagyon köszi a segítséget!
Sub asd()
Sheets(1).Activate
Sheets(2).Activate
Sheets.Add
End Sub
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Sh.Cells.Interior.Color = 15773696
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Sh.Cells.Interior.Color = -16776961
End Sub
Két formázást használok egy excelen belül, így két utat kellett találni, és meg is van . Áááh baromi jó ez a VBA.
Még egy kérdésem lenne, aztán leállítom magam. Ha mondjuk van egy kifejezés Static Planar, akkor hogyan tudom pl. a két nagy kezdő betűt kiszedni? Illetve pontosabban megfogalmazva, hogyan tudok egy stringen belül egyesével végig menni a karakteren? Ezzel együtt, hogyan tudok összeállítani stringet?
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
Delila_1
Topikgazda
Ehhez nem kell makró. A =KISBETŰ(A1) függvény megteszi.
Mire jó egymás után a
Sheets(1).Activate
Sheets(2).Activate ?
Ez annyit csinál, hogy egymás után a két lapot aktívvá teszi. Mivel az első lap aktiválása után nem csinálsz semmit, az első sor kihagyható.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
buherton
őstag
Köszi! Én vagyok a hibás, mert nem írtam le rendesen a feladatot. Az a feladat, hogy adott pl. a Static Planar, akkor abból a nagy betűket olvassa ki, és tegye bele egymásik cellába. Viszont ha nem több szóból áll a kifejezés, akkor olvassa be az első nagy betűt, és a közvetlenül utána közvetkező kisbetűt is. Bonyolódik a dolog, azzal, hogy nem lehet két azonos rövidítés.
Csak példának lett betéve . A másodiknál különböző műveleteket csináltam, hogy még mire fog leftuni az sheet active szubrutin
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
Cheesy
őstag
Sziasztok
A következőt nem sikerül megoldanom:
1. A1-A5 cellákban zsalukő méretek
2. B1-B2 cellákban zsalukő súlyok
Egy tetszőleges cellába (pl. másik munkalap D1) kellene egy legördülő menü, mely tartalmazza A1-A5 cellák tartalmát (idáig megy, el is neveztem "méretek"-nek), majd a mellette lévő cellába kiírja a hozzá tartozó súlyt. Tehát, ha A2-t választom legördülőből, akkor B2-t írja ki a másik munkalapon a D2-be.
Remélem érthető valamelyest... segítségeteket előre is köszönöm!
www.vakbelmutet.hu
lappy
őstag
=FKERES(Munka1!A1;Munka1!A1:B5;2;0) egy egyszerű fkeres-el csak minden méret mellé rakd oda a súlyt is
[ Szerkesztve ]
Bámulatos hol tart már a tudomány!
lappy
őstag
=FKERES(D1;Munka1!A1:B5;2;0)
[ Szerkesztve ]
Bámulatos hol tart már a tudomány!
Cheesy
őstag
köszönöm!
www.vakbelmutet.hu
Delila_1
Topikgazda
Az A1:A10 tartomány rövidítését beírja a B1:B10 tartományba, és megvizsgálja a COUNTIF (darabteli) függvénnyel, hogy hány db ilyen van a B oszlopban. Ha 1-nél több, akkor a B oszlopba az A megfelelő cellájának az első és harmadik betűjét írja. Lehetne cifrázni, mert előfordulhat, hogy több azonos alakul ki így is. Ahhoz újabb ciklusok kellenek, egy Do-Loop, és egy For-Next. Ha több időm lesz, és szükséges, megírom.
Sub rovidites()
Dim sor%, szo$, betu%
For sor% = 1 To 10
szo$ = Cells(sor%, "A")
If InStr(1, szo$, " ") Then 'ha van benne szóköz
For betu% = 1 To Len(szo$)
If Asc(Mid(szo$, betu%, 1)) > 64 And Asc(Mid(szo$, betu%, 1)) < 91 Then 'nagybetű
Cells(sor%, "B") = Cells(sor%, "B") & Mid(szo$, betu%, 1)
End If
Next
Else
Cells(sor%, "B") = Left(szo$, 2)
End If
If WorksheetFunction.CountIf(Columns(2), Cells(sor%, "B")) > 1 Then _
Cells(sor%, "B") = Left(szo$, 1) & Mid(szo$, 3, 1)
Next
End Sub
[ 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.
detroitrw
addikt
Sziasztok!
Egy olyan kérdésem lenne hogy miként lehet egy bizonyos cellába iratni a fájl mentési idejét?
Élőlábnak már megcsináltam, de fogalmam sincs hogy kéne konkrét cellába (L5) rakatni
ez az élőláb tartalma:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Calculate the date and time stamp string
Dim TS As Date
TS = Now
Dim TSS As String
TSS = FormatDateTime(TS, 1) & " "
'Place time stamp into the cell labeled SaveTimestamp
'Range("SaveTimestamp").Value = TSS
'Place time stamp into the header or footer for printing
Dim WS As Worksheet
For Each WS In Worksheets
WS.PageSetup.LeftFooter = " City," & TSS
'WS.PageSetup.LeftFooter = ThisWorkbook.FullName
Next WS
End Sub
miként kéne átírni hogy az L5-ös cellába legyen a tartalom?
Előre is köszönöm a segítséget
Oly
senior tag
Sziasztok
Adott egy ComboBox, aminek a forrását egy nagy adattáblából akarom szűréssel megoldani.
A Rowsource-ba kellene beraknom egy filtert?
Az űrlapon van egy TextBox, ami alapján a táblában lévő adatokból csak a hozzá tartozót kellene betöltenie.
Gyümölcs - Alma
Gyümölcs - Körte
Autó - Opel
Autó - BMW
Szín - Zöld
Szín - Kék
Ha a textbox értéke gyümölcs, akkor a Combobox-ban csak az Alma és Körte legyen.
A dolgot bonyolítanám azzal, hogy a ComboBox-ban 2 oszlop értékét is megjeleníteném.
Segítségetek előre is köszönöm.
SonyEricsson T20 - T68 - T610 - K700 - W800 - K750 - K800 - C702 - P1 - MOTO Defy - Galaxy S Advance - Galaxy S4 - Lumia 820 - Honor 7 - iPhone 5S
Oly
senior tag
Utánajártam... Nem lehet megcsinálni csak segédtáblával... Azzal megmókoltam.
SonyEricsson T20 - T68 - T610 - K700 - W800 - K750 - K800 - C702 - P1 - MOTO Defy - Galaxy S Advance - Galaxy S4 - Lumia 820 - Honor 7 - iPhone 5S
bozsozso
őstag
Sziasztok,
Szeretnék makróban olyat csinálni, hogy egy adott oszlopban adott szöveget keressen meg és ha megtalálta akkor a ennek a sornak az összes adatát másolja át mondjuk az adatok munkalap 2.sorába majd keresi a következőt ha megvan az meg mehet a következő sorba. Makrórögzítéssel megcsináltam auto szűrő majd másol beilleszt a megfelelő helyre, de nincs ettől jobb, "elegánsabb" megoldás? Valamint esetleg olyat, hogy ha az oszlopban amiben keresek bármi módosítás történik akkor legyen végrehajtva a makró?
Pl.:
Érték1 jó 5,00
Érték2 rossz 10,00
Érték3 nagyon rossz 15,00
Érték4 jó 48,00
Szeretném ahol jó szerepel az kerüljön át az adatok munkalapra a 2. sortól kezdődően.
Érték1 jó 5,00
Érték4 jó 48,00
Előre is köszönöm a segítséget.
[ Szerkesztve ]
detroitrw
addikt
közbe megleltem
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cells(Row, Column) = Date
End Sub
[ Szerkesztve ]
detroitrw
addikt
Ezt lehetne szerintetek valahogy automatizálni?
- a zöld a fix
- a sárgába kéne az adatokat automatikusan bevinni amíg a kék el nem éri a 0 (nulla) értéket
majd sort vált s folytatja tovább ...
- remélem érthető
cousin333
addikt
Ki szerelmes ennyire a szorzatösszeg függvénybe, hogy még egy egyszerű kivonáshoz is ezt használja?
Gondolom a zöldben megadott számú és hosszúságú léceket(?) kellene kihozni a megadott hosszakból úgy, hogy minél optimálisabb legyen az elosztás.
"We spared no expense"
detroitrw
addikt
a szerény személyem az
igen végülis ez lenne a lényege, valahogy meglehetne oldani?
[ Szerkesztve ]
buherton
őstag
Köszi! Végre ezen a vonalon is elindulhatok . Csak a probléma, hogy nincs elég időm kidolgozni rendesen .
Lehet olyat csinálni, hogy a makróból létrehozott excelhez rendelek saját makrót? Például én azt szeretném ha a makró által létrehozott excelben ha beírok egy számot akkor a másik lap váltson piros háttérre valamilyen esemény hatására. Nekem elég az absztrakt megközelítés is. Fontos, hogy ahhoz az excelhez tartozzon, vagyis önállóan működjön, és makró legyen ne függvény, és nem tudom hogy angolul hogyan keressek rá.
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
Delila_1
Topikgazda
Költözés (és T-home) miatt nincs internetem, ezért nem válaszoltam előbb.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" And IsNumeric(Target) Then
Sheets("Munka2").Cells.Interior.ColorIndex = 3
End If
End Sub
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
bozsozso
őstag
Sziasztok,
Ebben valaki nem tudna segíteni?
#90999040
törölt tag
Megoldani meg lehet, csak kérdés, hogy mennyi idő alatt.
Sima függvényekkel szerintem teljesen kizárt, vba-val lehetséges. De azért gondolj bele:
Úgy látom, hogy 72 darab léc van jelenleg. Ennek a 72 elemnek kell(ene) az ismétlés nélküli permutációja, ami ugye 72! (faktoriális) ez ~~8,50478588567862E+101 eset, azaz kb. 8 a 101-ediken. Namost ezt ha most elindítod, akkor talán( ) 1 hét múlva végez.
Esetleg azt meg lehetne próbálni, hogy bizonyos hulladékszálakot megadni, és ha ez a százalék elég nagy, akkor van esély, hogy előbb talál egy ezen belülit.
Vagy random generálással is lehetne, szerencsés esetben előbb-utóbb beleakad egy alkalmas lehetőségbe....
#90999040
törölt tag
Bocs, az előbb elszámoltam.Nem 8 a 101-ediken, hanem 6 a 103-adikon.
cousin333
addikt
Szerintem meg ismétléses permutáció lenne, mert az egyforma hosszú léceket nem lehet megkülönböztetni. Akkor pedig 72! / (12! * 6! * 6! * 12! * 24! * 12!), ami persze még mindig nem kevés.
De a megoldás nem ilyen bonyolult, mert nem kell ennyi esetet végigvenni éppen azért, mert a szálak hossza fix, tehát a lécek nem jöhetnek akármilyen sorrendben.
[ Szerkesztve ]
"We spared no expense"
detroitrw
addikt
ennél már akkor egyszerűbb ha egy táblakiosztó progiba beadom a tábla szélességű hosszakat s így úgy működne mintha szálkiosztana ...
de ott is ismételten kézzel kéne bevinni az adatokat ami további hibalehetőséget generál
mert az a kis egyszerű excel amit csináltam legalább képes arra hogy a végösszegeket ellenőrizze hogy biztos minden elemből a megfelelő darabszám szerepel e
a táblakiosztási módszerbe meg az lenne a jobb hogy ott tudok a vágóréssel is kalkulálni
mod: s merre lehetne elindulni amúgy?
[ Szerkesztve ]
#90999040
törölt tag
Igen, ismétléses kell, de abból indultam ki, hogy ahhoz, hogy algoritmus szintjén ki tudd szűrni az ismétlődéseket, ahhoz jó eséllyel le kell generálni az ismétlés nélküli eseteket...
De ha felesleges körök nélkül sikerülne is csak az ismétléseseket egyből eltalálni, még az is 1,7322649796561E+48, szóval iszonyatosan sok, és akkor még nem is vettük figyelembe, hogy ez csak a konkrét példára vonatkozik, ami természetesen még negatív irányba is változhat...
De a megoldás nem ilyen bonyolult, mert nem kell ennyi esetet végigvenni
Semennyire sem bonyolult, ha írsz olyan algoritmust, ami elsőre eltalálja a legjobb megoldást, mert ekkor 1 kísérlet bőven elég.
Azon az úton még el lehetne indulni, hogy az adott fix hossz ismeretében csak a lehetséges megoldásokat figyelembe venni. Ez az algoritmus viszonylag gyorsan lefut(kb. 1 másodperc sem), de a gondok utána jönnek. Ugyanis ezekkel az adatokkal a lehetséges esetek száma 1048. Ebből 238 olyan, amelyekre még a legrövidebb szál sem férne rá pluszban a 6 méterre. Ha biztosra kellene menni, akkor a következő eseteket kellene vizsgálni:
N K
1048 19
1048 20
1048 21
..... és még ki tudja meddig???
mert a hosszokból az következik, hogy elvileg 19 darab 6 méteresnek elégnek kellene lennie(elméletileg). Azért több K-ra, mert egyáltalán nem biztos, hogy a valóságban is elég a 19 szál(mi van, ha pl. csak 23 szál a legkedvezőbb???). Ha az 1048 helyett a 238-al(tehát csak azokkal foglalkozunk, amire több már biztos, hogy nem fér rá), még akkor is elég sok esetnél tartunk...
detroitrw
addikt
nem a legjobb megoldás lenne a lényeg, mivel kézzel se arra törekszek!
prioritás alapján megyek végig szal előre kerülnek a legmagasabb értékek ... mert fölösleges először a kisebbeket kiosztani
ill. ott van az is amit említettem hogy egy bizonyos cella értékétől függően új sort válthatna
pl. ha az érték ~200 -ra csökken (ill. min. db x 5 meglegyen)
[ Szerkesztve ]
cousin333
addikt
A sokféle lehetséges variáció miatt nem elhanyagolható a kézi módszer.
Én készítettem egy gépi változatot, ami a Solver funkcióra alapoz, és brute-force módszert használ: [link].
Persze igyekeztem minimalizálni a lehetőségeket számos korlátozás bevezetésével. Mindenesetre nálam gond nélkül futott egy órát, és még nem adott végleges eredményt. Igazából nem tudom, meddig futna...
Az egyes cellákat kicsit nehéz kibogarászni, mert a lehető legtöbb konkrét számot és a legkevesebb képletet szerettem volna felhasználni, így remélve azt, hogy gyorsul a számolgatás.
A lényeg, hogy az egyes sorokban látod a különböző elosztási típusokat (max. 5-öt), ahogy te is csináltad a kézi módszernél. A rendszer azt számítja, hogy melyik hosszból mennyit használjon, illetve az adott osztást hány lécen alkalmazza.
A Solver a maradék hosszok négyzetösszegét igyekszik minimalizálni, ami nem feltétlenül a legoptimálisabb cél, de talán nem okoz olyan nagy hibát.
[ Szerkesztve ]
"We spared no expense"
detroitrw
addikt
Szia!
köszi hogy foglalkoztál vele
bár azt nem tudom miként lehet automatizálásra bírni
meg ezt még át kéne írni hogy másnak is érthető legyen
eddig ezt találtam [link]
elég komoly cucc s 1-2 esetbe kihozta kevesebb szálból
s nincs szükség gépelésre, copy&paste módszerrel fel lehet tölteni az adatot, ill az eredményt könnyen vissza lehet másolni
és még vágórést is meglehet adni
annyi hogy 60 napig ingyenes (na de akkor mire lenne jó a virtualpc? )
van egy másik is [link]
ezt viszont nem tudom beüzemelni
[ Szerkesztve ]
buherton
őstag
Ez idáig oké, de ezt hogyan tudom az összesre excel fájlra kiterjeszteni, hogy azok önállóan is tudjanak működni?
Közben van egy másik problémám is. Ezt "egyszerűen nem engedi bemásolni a cellába .
SheetNumberReport-ban 2 az érték, ami létezik.
ReportBook.Worksheets("Summary").Range(SheetNumberReport, "N") = "=IF(COUNTIF('CT alr. (Linux) - LT - 001'!H5:H31;Summary!Q2)='CT alr. (Linux) - LT - 001'!A5;Summary!Q2;Summary!Q3)"
A függvényt ha manuálisan másolom be, akkor jól működik!
[ Szerkesztve ]
tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!
#90999040
törölt tag
Egy új munkalapra másold át az A1 : B7 tartományt(hogy az új munkalapon is az A1 : B7-ben legyen. Az A10-be írd be a 6000-et(mert milliméterben számol).
ALT+F11, majd INSERT menü -> Module.
Ebbe a modulba másold be ezt:
Sub frissit()
Set cel = Range("D1")
maxsordarab = 20000
sor = 1 + cel.Row
oszlop = cel.Column
eredetisor = sor
Range("A1").CurrentRegion.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
hosszok = Application.Transpose(Range("A2:A7"))
szalhossza = Range("A10").Value
darabok = Application.Transpose(Range("B2:B7"))
vegsodarabok = Application.Transpose(Range("B2:B7"))
For i = LBound(vegsodarabok) To UBound(vegsodarabok)
vegsodarabok(i) = Application.Min(Application.RoundDown(szalhossza / hosszok(i), 0), darabok(i))
Next
ReDim kimenet(1 To maxsordarab, 1 To 9)
ossz = 0
osszeg = 0
teljes = 0
n = UBound(darabok) - 1
ReDim tomb0(0 To n)
q = -1
Do
While q < n
q = q + 1
tomb0(q) = 0
Wend
ossz = ossz + 1
tele = True
m = 0
For i = 0 To n
If tomb0(i) < darabok(i + 1) Then
If osszeg + hosszok(i + 1) <= szalhossza Then
tele = False
Exit For
End If
End If
Next
If tele Then teljes = teljes + 1
Dim maxdarab As Integer
maxdarab = 200
If tele Then
For i = 0 To UBound(tomb0)
m = m + hosszok(i + 1) * tomb0(i)
kimenet(1 + sor - eredetisor, 1 + i) = tomb0(i)
If tomb0(i) <> 0 Then
If Application.RoundDown(darabok(i + 1) / tomb0(i), 0) < maxdarab Then maxdarab = Application.RoundDown(darabok(i + 1) / tomb0(i), 0)
End If
Next
kimenet(1 + sor - eredetisor, 1 + i) = (szalhossza - m) / szalhossza
kimenet(1 + sor - eredetisor, 1 + i + 1) = "*"
kimenet(1 + sor - eredetisor, 1 + i + 2) = maxdarab
sor = sor + 1
Else
For i = 0 To UBound(tomb0)
m = m + hosszok(i + 1) * tomb0(i)
kimenet(1 + sor - eredetisor, 1 + i) = tomb0(i)
If tomb0(i) <> 0 Then
If Application.RoundDown(darabok(i + 1) / tomb0(i), 0) < maxdarab Then maxdarab = Application.RoundDown(darabok(i + 1) / tomb0(i), 0)
End If
Next
kimenet(1 + sor - eredetisor, 1 + i) = (szalhossza - m) / szalhossza
kimenet(1 + sor - eredetisor, 1 + i + 2) = maxdarab
sor = sor + 1
End If
Do While q > -1
If tomb0(q) < vegsodarabok(q + 1) Then
tomb0(q) = tomb0(q) + 1
osszeg = osszeg + hosszok(q + 1)
If osszeg > szalhossza Then
osszeg = osszeg - hosszok(q + 1)
tomb0(q) = tomb0(q) - 1
osszeg = osszeg - hosszok(q + 1) * tomb0(q)
q = q - 1
Else
Exit Do
End If
Else
osszeg = osszeg - hosszok(q + 1) * tomb0(q)
q = q - 1
End If
Loop
Loop While q > -1
sor = sor - 1
For i = 1 To 9
kimenet(1, i) = kimenet(1 + sor - eredetisor, i)
kimenet(1 + sor - eredetisor, i) = ""
Next
ActiveWindow.FreezePanes = False
Range(Cells(eredetisor - 1, oszlop), Cells(maxsordarab, oszlop + 8)).ClearContents
Range(Cells(eredetisor, oszlop), Cells(eredetisor + maxsordarab - 1, oszlop + 8)).Value = kimenet
Range(Cells(eredetisor - 1, oszlop), Cells(eredetisor - 1, oszlop + 5)).Value = Application.Transpose(Range("a2:a7").Value)
Cells(eredetisor - 1, oszlop + 6).Value = "Hulladék"
Cells(eredetisor - 1, oszlop + 7).Value = "Teljes"
Cells(eredetisor - 1, oszlop + 8).Value = "Max darab"
Cells(eredetisor, oszlop).CurrentRegion.Sort Key1:=Cells(eredetisor, oszlop + 6), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
Cells(eredetisor, oszlop + 10).FormulaR1C1 = "=1+RC[-2]"
Cells(eredetisor + 1, oszlop + 10).FormulaR1C1 = "=(1+RC[-2])*R[-1]C"
Cells(eredetisor + 1, oszlop + 10).Copy Destination:=Range(Cells(eredetisor + 2, oszlop + 10), Cells(sor, oszlop + 10))
Cells(eredetisor, 1).Select
ActiveWindow.FreezePanes = True
End Sub
A makró elindítása után(itt arra figyelni kell, hogy az új munkalap legyen az aktív) a D:H oszlopokban megjelennek a darabszámok(a fejléc a hosszt tartalmazza). A J oszlopban a hulladék, a K oszlopban levő csillag azt jelenti, hogy az adott 6m-es szálra már a legkisebb(jelen esetben 410 mm-es) darab sem fér rá.
Az L oszlopban az adott szál maximális darabszáma szerepel.
A legfontosabb: N oszlopban jelzi, hogy hány esetet kellene megvizsgálni - no ez az, ami miatt napok/hetek/évek kérdése, hogy mikor végezne az összes eset megvizsgálásával.
[ Szerkesztve ]
saab00
csendes tag
Sziasztok !
Egy olyan kérdésem lenne hogy hogyan lehet azt excelben(2003) megoldani, hogy van egy táblázatom napi dátummal,hónap, rendszámmal(összevissza), km stb.......és egy másik táblázatba a rendszám(sor)hoz és a hónap(oszlop)-t figyelembe véve összegezze az előző táblázatból az adatokat (pl. a km-t) (ugye egy rendszám többször is előfordul egy adott hónapban) ...vagyis hogy ne kelljen kétszer beírni ugyanazt az adatot de rendszám és hónap alapján szűrje és összegezze az értékeket !?
--
-
És még egy: az fkeres fügyvénynél be lehet azt állítani h a keresési tartományban(ami nincs alapból sorba rendezve) ha több találat van csak a legutolsót vegye figyelembe ill. h pl.a 3. oszlopban az egy sorral lejjebb lévőt adja eredményül ??
-
Köszönöm !
detroitrw
addikt
hát ez így eléggé értelmezhetetlen adatsokaság
ezt nem lehet valahogy működésre bírni?
föccer
nagyúr
Üdv!
Mivel tudom megoldani azt, hogy amikor makróbol akarok egy xls fájlt megnyitni, akkor az adott fájlt egy opendialog-ból lehessen kiválasztani.
Köszi,
üdv, föccer
mod:
Sub macro1()
Filter = "Excel files (*.xls),*.xls"
Caption = "Kérem, adja meg a fájl elérési útját!"
SelectedFile = Application.GetOpenFilename(Filter, , Caption)
ActiveSheet.Range("A1").Value = SelectedFile
End Sub
Ez így elvileg működik?
üdv, föccer
[ Szerkesztve ]
Építésztechnikus. Építőmérnök.
bugizozi
őstag
Sub Get_Data()
FileToOpen = Application.GetOpenFilename _
(Title:="Please choose a file to import", _
FileFilter:="Excel Files *.xls (*.xls),")
''
If FileToOpen = False Then
MsgBox "No file specified.", vbExclamation, "Duh!!!"
Exit Sub
Else
Workbooks.Open Filename:=FileToOpen
End If
End Sub
VCP7-DCV, CCNA ||| Ami működik, ahhoz nem szabad hozzányúlni!
föccer
nagyúr
Zsír, köszi
Ideje lenne találnom egy jó kis listát az WBA objektumokról.
üdv, föccer
Építésztechnikus. Építőmérnök.
zz76zz
csendes tag
Sziasztok!
Kezdő (illetve már elfelejtő) Excel VB író vagyok.
A kérdés az lenne, hogy egyáltalán kell e makró?
A feladat kellemetlenül sok sorból kitörölni azokat az oszlopokat, amik nem felelnek meg bizonyos kritériumoknak.
A lényege ennek az lenne, hogy pdf ből áttesznek nagy sok sort és a gombnyomásra rendeződnének az adatok. Az oszlopszétszedés nem gond, makro rögzíti majd.
Egy laza ha függvénysorral le tudom szűkíteni, hogy mondjuk az adott megmaradni kívánt sorban van e egy x vagy sincs. (sgondolom a makrorögzítő ezt is veszi). De hogyan szabadulok meg úgy a többi sortól, hogy a sorrendem megmaradjon?
Vagy egyszerűbb lenne, ha mindent egy makro végezne?
Makro tud sort törölni bonyolult szövegbeni tartalmazódás szerint?
Túl sokat kérdezek?
Túl össze vissza? Bocs
www.vagyunk.hu
föccer
nagyúr
Csinálj egy segédoszlopot, amibe a feltétel függvényét írod. Ha igaz, akkor "I", ha hamis, akkor "H". Utána bekapcsolod az autoszűrőt, rászűrsz az "I"-re és copy-paste. A sorrend megmarad.
üdv, föccer
Építésztechnikus. Építőmérnök.
Bocimaster
csendes tag
Sziasztok!
Az volna a kérdésem, hogy hogyan tudom beállítani egy cellába -egyéni cellaformázással-a bankszámlaszám formátumát (3*8 szám, 2 kötőjellel elválasztva)?
Előre is köszönöm.
[ Szerkesztve ]
Az ösztön mindig többet ér az észnél.
zz76zz
csendes tag
Oké köszi holnap megpróbálom, hogy a makrorögzítő különböző táblákon, is "jól" viselkedik e.
www.vagyunk.hu
zz76zz
csendes tag
cellaformázás -> egyéni -> majd ez:
########-########-########
www.vagyunk.hu
bozsozso
őstag
Sziasztok,
Szeretnék makróban olyat csinálni, hogy egy adott oszlopban adott szöveget keressen meg és ha megtalálta akkor a ennek a sornak az összes adatát másolja át mondjuk az adatok munkalap 2.sorába majd keresi a következőt ha megvan az meg mehet a következő sorba. Makrórögzítéssel megcsináltam auto szűrő majd másol beilleszt a megfelelő helyre, de nincs ettől jobb, "elegánsabb" megoldás? Valamint esetleg olyat, hogy ha az oszlopban amiben keresek bármi módosítás történik akkor legyen végrehajtva a makró?
Pl.:
Érték1 jó 5,00
Érték2 rossz 10,00
Érték3 nagyon rossz 15,00
Érték4 jó 48,00
Szeretném ahol jó szerepel az kerüljön át az adatok munkalapra a 2. sortól kezdődően.
Érték1 jó 5,00
Érték4 jó 48,00
Előre is köszönöm a segítséget.
Bocimaster
csendes tag
Sajnos ez nem jó, mivel az utolsó 9szám helyére 0-át ír.
Keresem a megoldást, de sajnos még nem találtam meg.......
Az ösztön mindig többet ér az észnél.
zz76zz
csendes tag
Bankszámlaszám csak 3*8 vagy 2*8 jegy lehet. Ha 2*8 akkor ki kell egészíteni 8db 0 val
www.vagyunk.hu