-
GAMEPOD.hu
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.
Új hozzászólás Aktív témák
-
hallgat
csendes tag
Sziasztok!
Láma vagyok a témában, ezért segítségeteket kérném.
/Excel 2003 VBA./Igyekszem megtanulni, de elakadtam. Az eddigi is innen onnan puskázva...
Bemásolom az eddigi kódot, a végére kikommenteltem, hogy mit kéne még tudnia.
Előre is köszönöm!!!Private Sub CommandButton1_Click()
Dim forras_mlap As Worksheet
Dim cel_mlap As Worksheet
Dim forras_sor As Integer
Dim cel_sor As Integer
Dim eltolas As Integer
Set forras_mlap = Worksheets("Munka1")
Set cel_mlap = Worksheets("Munka2")
cel_sor = 2
Sheets("Munka2").Range("A2:BZ65536").ClearContents
For forras_sor = 2 To forras_mlap.UsedRange.Rows.Count
For eltolas = 0 To 18
cel_mlap.Range("M" & cel_sor).Value = forras_mlap.Range("A" & forras_sor).Value
cel_mlap.Range("N" & cel_sor).Value = forras_mlap.Range("B" & forras_sor).Offset(0, 1 * eltolas).Value
cel_mlap.Range("D" & cel_sor).Value = forras_mlap.Range("U" & forras_sor).Value
cel_mlap.Range("A" & cel_sor & ":C" & cel_sor).Value = forras_mlap.Range("V" & forras_sor & ":X" & forras_sor).Value
cel_mlap.Range("G" & cel_sor & ":H" & cel_sor).Value = forras_mlap.Range("Y" & forras_sor & ":Z" & forras_sor).Value
cel_mlap.Range("J" & cel_sor).Value = forras_mlap.Range("AA" & forras_sor).Value
cel_sor = cel_sor + 1
Next
Next
Sheets("Munka1").Range("B1:T1").Copy
Sheets("Munka2").Range("L2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Sheets("Munka2").Activate
Sheets("Munka2").Range("L2:L20").Copy
' ide kellene, hogy a Munka2-n jelölje ki L2 cellától lefelé az összes cellát addig a sorig,
' amig "A" oszlopban adatot talál. Ezt követően illesze be L2:L20-ból már másolt adatokat
' (vagy ha lehet, már előrébb kezdve a Munka1 B1:T1 cella adatait)
' végig a táblázat utolsó használt soráig, "A" oszlopot alapul véve.
' +++ jo lenne, ha ezt kovetoen "N" oszlop (fejléc van az 1. sorban) adatai alapján törölné azokat
' a sorokat, amik értéke "0", vagy üres
End SubOffice 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz Daddyhands #13806 üzenetére
Szia!
Az AutoSzűrő funkciót próbáltad?[ Szerkesztve ]
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz Delila_1 #3014 üzenetére
"Másik módja az utolsó sor, ill. utolsó oszlop megkeresésének, arra az esetre, ha a lapon több, egymástól üres sorokkal, oszlopokkal elválasztott adataink vannak:
Kiválasztjuk egy olyan oszloponak az első celláját, amelyikben biztosan folyamatosan vannak az adatok, pl. A1.
Range("A1").Select
Selection.End(xlDown).Select ' ez azonos azzal, mint amikor Ctrl+le-nyilat nyomunk
usor = Selection.Row"
-------------------------------------------------------------------
Sziasztok!Nem egy mai bejegyzése Delilának de éppen ezen vagyok elakadva.
Ha ilyen módon megkerestem az utolsó használt sort, akkor mi a szintaktikája, hogy az "usor" értékét felhasználjam egy másik oszlopban?
Mondjuk munkalap1 B1:T1 celláit (19 cella) transzponálással másolja be munkalap2 B oszlopába a 2. sorától az utolsó soráig kijelölt területre, ismételgetve (ha 190 sor, akkor 10x. Elvileg mindig kijön egészre a sorok száma / 19)Előre is köszönet!!
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz hallgat #13821 üzenetére
Sziasztok!
Egyszerűsödött a kérdésem.
Delila leírása szerint meghatároztam usor néven az utolsó sor értékét.
Most szeretném VBA kódban kijelölni a "B2:Busor" területet, csak nem megy, mert béna vagyokKöszi!!
[ Szerkesztve ]
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz Delila_1 #13826 üzenetére
Köszönet!!!
Ezzel próbálkoztam: Range("B2" & ":B" & usor).Select
de ezt nem szerette.Kipróbálni csak holnap tudom, de remélem menni fog.
Nincs szükség a kód elején a Dim usor As Integer meghatározásra? Lehet ezért nem ment, mert ezt beírtam?Még egyszer köszönöm!!
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz Delila_1 #13826 üzenetére
Sikerült kipróbálnom, de sajnos nem működik.
Ez a programrész most:usor = Range("A1").End(xlDown).Row
Sheets("Munka1").Activate
Range("B1:T1").Select
Selection.Copy
Worksheets("Munka2").Activate
Sheets("Munka2").Range("L2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Application.CutCopyMode = False
Selection.Copy
Range("L21:L" & usor).Select
ActiveSheet.PasteMunka1-ről áthozza az adatokat Munka2 L2:L20 részébe, be is másolja transzponálással, ki is jelöli, látszik, hogy ki is teszi vágólapra, de itt leakad. A Debug pedig annál a sornál áll, ami kijelölné L21:Lusor területet.
Lehet nem is szintaktikai a hibám, hanem a logikai felépítéssel van a gond.
Elvesztettem a fonalat...
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz hallgat #13831 üzenetére
Ami számomra még furcsa, hogy ha makró rögzítővel kézzel megcsinálom a műveletet és ezt illesztem be a kódba, akkor ugyan az marad a szintaktika, csak a
Range("L21:L" & usor).Select
helyett a jelenlegi adatok mennyisége miatt ez lesz:
Range(L21:L286).Selectami szintén nem fut le, ugyan ennél a sornál leáll.
Pedig ezt a sajár makrórögzítője csináltaOffice 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz Delila_1 #13834 üzenetére
Köszönöm!
Látszik, hogy láma vagyok, még a kérdést sem tudom rendesen megfogalmazni.
A Munka2 L oszlopának második sorától az utolsó adatot tartalmazó sorig (a táblában, nem L oszlopban vannak adatok más oszlopokban) szeretném bemásolni transzponálva Munka1 B1:T1 értékeit.
Munka2 L oszlopa üres, az A oszlop az, ami üres sor nélkül folyamatosan adatokat tartalmaz az utolsó sorig. Ezért gondoltam, hogy az usort onnan definiálom.
Ha A oszlop az 500. sorig tartalmaz adatot, akkor L oszlopba is az 500. sorig kellenének transzponáltan másolva az adatok Munka1 Bi:T1-ből.Tehát usorként nem L oszlop utolsó sora az érték, hanem A oszlop utolsó sora és L-ben is eddig kellenek az adatok.
Bocsánat, a pontatlanságomért (és csak remélem, hogy most jól írtam le.)
Köszi!!
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz Delila_1 #13834 üzenetére
Szia!
A segítséget még egyszer köszönöm!
Végül ez lett a nyerő kód, bár fogalmam sincs, hogy miért nem működött addig, míg Nem a munkalap azonosítókkal együtt jelölgettem ki a területeket
A lényeg, hogy működik:
Sheets("Munka1").Range("B1:T1").Copy
Sheets("Munka2").Range("L2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
usor = Sheets("Munka2").Range("A1").End(xlDown).Row
Sheets("Munka2").Activate
Sheets("Munka2").Range("L2:L20").Copy
Sheets("Munka2").Range("L21:" & "L" & usor).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFilter Field:=14, Criteria1:="=", Operator:=xlOr, Criteria2:="<1"Hátha valakinek még jól jön...
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
Sziasztok!
AutoSzűrővel leszűrt sorokat hogyan tudom makróval kijelölni és törölni?
Bár lehet nem is így jó a kérdés.
Van egy táblázat, aminek egyik oszlopában adatok. Az oszlop egyes soraiban azonban nincs adat, vagy az érték nulla.
Hogyan tudom azt megcsinálni, hogy mondjuk vizsgálja meg B oszlop celláit fentről lefelé.
Ahol üreset vagy nullát talál, azt az egész sort törölje ki sortörléssel, aztán keresse a következő üres, vagy nullát tartalmazó cellát B oszlopban és ha talál, akkor azt a sort is törölje sortörléssel, mindezt addig, míg el nem ér az előre definiált utolsó sorig?Ez így ciklus szagú leírás, de minden megoldás érdekel
Előre is köszönöm!!
[ Szerkesztve ]
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz Fire/SOUL/CD #13924 üzenetére
Szia!
Igen, eddig ezzel volt vége a makrónak, hogy az AutoSzűrővel leszűrte a 0 és üres sorokra, aztán leállt, majd kézzel töröltem, ahogyan írtad.
Viszont a maradék adatokat vinném tovább új munkafüzetbe és ha nem muszáj, nem készítenék erre itt még egy makró gombot, hanem folytatnám az eredeti programot.
Most ezzel szenvedek, de vagy mindkét munkafüzet lapon megcsinálja a törlést, vagy leállok hibával, vagy...
Szóval még nem működik
Sheets("Munka2").Range("L" & usor).Select
Dim i As Integer
For i = usor To 2 Step -1
If IsEmpty(Cells(i, 14)) Then
Rows(i).Delete
End If
Next iElőtte már csinál pár dolgot, másolgat, transzportál, mifene, most már "csak" L oszlopban található üres cellák alapján kéne a sorokat törölnie, de csak Munka2 munkalapon, mert most kitörli munka1-en is
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz Fire/SOUL/CD #13926 üzenetére
Nem tudom, hogy mit csinálok rosszul, de így most Munka2-n semmit nem törölt, Munka1-en azonban mindent.Kicsit több a kódból, hátha valahol előrébb csinálok marhaságot...
Sheets("Munka1").Range("B1:T1").Copy
Sheets("Munka2").Range("L2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
usor = Sheets("Munka2").Range("A1").End(xlDown).Row
Sheets("Munka2").Activate
Sheets("Munka2").Range("L2:L20").Copy
Sheets("Munka2").Range("L21:" & "L" & usor).Select
ActiveSheet.Paste
Sheets("Munka2").Select
Sheets("Munka2").Range("L" & usor).Select
Dim i As Integer
For i = usor To 2 Step -1
If IsEmpty(Cells(i, 14)) Then
Rows(i).Delete
End If
Next iMár az usor-ral is megszenvedtem, mire elfogadta L oszlopban, mert hibára futott mindig, míg a munkalap azonosítót elé nem tettem.
Láma is vagyok a témához e igaz, de így már végképp nem értem.
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz Fire/SOUL/CD #13928 üzenetére
Kicsit elbíbelődtem, mire regisztráltam egy feltöltő helyre
Ez sajna 2010 Excelben vagyon, a Munka1-et csak teledobáltam valamivel, de a kód szempontjából remélem ez nem okoz gondot.
Előre is köszi!!!
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz Fire/SOUL/CD #13930 üzenetére
Ezer hála, még a nullás sorok is megoldva.
Perfect!!!Köszönöm!!!
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz Delila_1 #7514 üzenetére
Delila_1(#7514)
-------------------------------------------------------------------------------
Ha számok vannak a C4 és F4 cellákban, akkor
=INDEX(Munka2!$A$1:$P$97;Munka1!C4;Munka1!F4),ha viszont az F4-ben betűt adsz meg oszlopazonosítóként, akkor
=INDEX(Munka2!$A$1:$P$97;Munka1!C4;Munka1!F4)Mindkét példában a Munka1 lapon van a C4 és F4, az adatokat pedig a Munka2 lapról veszi a képlet. Figyelj, következetesen kevered a munkafüzetet és a munkalapot!
-------------------------------------------------------------------------------Sziasztok!
Ez a képlet és leírás sem mai darab, de küzdök vele és nem jön össze
Hasonló a feladat, mint az akkori kérdezőnek, Retekegérnek.
Röviden:
Munka1 lapon "A" oszlop cikkszámokat tartalmaz szám formátumban.
"B" oszlop tárhely azonosítókat, számként
"C" oszlopba kéne bekeresnem az "A" cikk készletét, ami "B" tárhelyen fellelhető.Munka2 lapon vannak a készletek, de mátrixban
"A" oszlop a cikkszámokat tartalmazza
Az 1. sor pedig a tárhely azonosítókat,
a metszéspontokban vannak a készletek.Az idézett Delila megoldás engem #HIV! hibára dob és nem tudom miért, pedig olyan szép
Segítségeteket előre is köszönöm!
[ Szerkesztve ]
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz hallgat #13954 üzenetére
Közben meg van a megoldás, vagy legalább is egy működő képlet...
Hátha segít valakinek, aki hasonló dolgot keres:
=INDEX(Munka2!A:T;HOL.VAN(A2;Munka2!$A:$A;0);HOL.VAN(B2;Munka2!$A$1:$T$1;0))
A fügvény így a Munk2 lapon A:T tartományban lévő sor és oszlop metszéspont értékét adja eredményül, a Munka1 A2 és B2 celláinak értékeire keresve.
Munka1 A2 cellájában lévő értéket keresi Munka2 A oszlopában és a sor számát adja vissza,
majd Munka1 B2 értékét keresi Munka2 A1:T1 tartományában és az oszlop értéket adja
vissza az INDEX függvénynek.Lehet csak nekem újdonság, de ez nagyjából az FKERS és a VKERES funkcióinak az összefűzése.
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
Sziasztok!
Küzdök egy ideje az azonos soraim törlésével, de nem akar összejönni, vagy iszonyú hosszú ciklusidővel dolgozik (és még az is hibásan )
A táblázatom "A" oszlopában a 2. sortól a végéig számok vannak.
A számok között van ismétlődés, de azok mindig egymás után következnek, szám szerint 19 alkalommal/szám.Azt szeretném elérni, hogy az utolsó sort meghatározva, ("A" & usor)- tól felfelé haladva végezze el az ismétlődő sorok törlését.
Tehát pl. vizsgálja meg, hogy "A17777" cella értéke azonos e "A17776" értékével és ha igen, akkor törölje ki a 17776. sort, majd ismét vizsgálja meg, hogy "A17777" cella értéke azonos e "A17776" értékével, ha azonos akkor megint sortörlés, ha nem, akkor ugorjon 1 cellát felfelé és vizsgálja meg, hogy "A17776" értéke azonos e "A17775" értékével, ha igen sortörlés, ha nem, akkor ugrás egyel feljebb.
Nem másolok be kódrészletet, mert már nagyon szétfaragtam amiket innen onnan szereztem a célra és nem is működnek, így nem nagyon van értelme
Az egyetlen, ami futott, az egy cella értéket végigvizsgált a teljes tartományon (30-40 ezer sor) majd törölte az azonosakat, aztán kezdte a következő cellával elölről. Egyrészt eszméletlen lassú, másrészt a törlés sem volt tökéletes, mert a sorok törlése miatt felülről haladva lefelé, csak egy részét távolította el az ismétlődéseknek, ha azok egymást követő sorokban voltak (már pedig mind így ismétlődik, 19x egymás alatt)
Előre is köszönöm a segítséget!
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz saab00 #14079 üzenetére
Szia!
1., SzumHa függvényt nézd meg. Az egy rendszámhoz tartozó értékeket összeadja neked.2., FKeres nem fog menni, az első találatot fogja adni
3., Ha a találat alatti cella értéke kell, azt meg tudod oldani a HOL.VAN fügvénnyel (ezzel megkeresteted az értéket, majd megadod, hogy a következő sor azonos oszlopából vegye az értéket. Viszont itt is baj lesz az ismétlődésekkel...
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz cousin333 #14099 üzenetére
Szia!
Nagyon köszönöm!
Az ötlet tetszik, és tényleg lényegesen gyorsabb, mint ha egyenként vizsgálnám és a munkalapon törölném is a sorokat.Közben egy másik megoldásra kényszerültem (időhiány miatt), ami kissé "barbár", de működik és szintén villám gyors.
Persze ehhez az kell, hogy a célnak az így kapott eredmény is megfeleljen.
Viszont a makród szimpatikusabb, ezért le is cseréltem az én megoldásomat gyorsan.Leírom, hátha valaki hasznát veszi:
A tömbből kimutatást készítettem egy másik munkalapra, ahol minden oszlopot behúztam a sorok értékéhez, egy tetszőleges oszlopot pedig betettem az adattartomány értékhez, "darab" művelettel. Közben minden oszlop behelyezése után a kimutatáson belüli összegző sorokat rejtetté tettem, beleértve a végösszeget is. (lehet eset, ahol nem árt, ha előtte a forrás táblát sorba rendezi az ember a vizsgálni kívánt oszlop szerint, itt nem kellett)
A kimutatás ugyan eredményez utolsó sorként "ÜRES" jelölésű értéket is a végére, de ezt a fejlécben a szűrőben kivettem, így minden adatom csak egyszer jelenik meg, mellette a többi oszlop adatával. Ezt a tömböt tovább tudtam vinni makróval a kívánt helyre. Annyival lett "hosszabb" az eredeti makró, hogy frissítenem kell a kimutatást is egy sorban, valamint innen kell elvinnem az adatokat, nem az eredeti táblából. És persze született még egy munkalapom, kvázi feleslegesen.A kódot még egyszer köszönöm, megint tanultam valamit!!!
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz cousin333 #14098 üzenetére
Előbb találtam meg a kódot tartalmazó segítséget, mint ezt a bejegyzést, pedig nincsenek messze egymástól
Igen, az eredeti megoldás úgy nézett ki, hogy keresd meg az utolsó sort. Utolsó sor felett vizsgáld meg, hogy mi van, ha egyezik utolsó sorban lévő értékkel töröld, ha nem, lépj egyel feljebb.
Ez volt a drámaian lassú.
Cca. 4000 sort törölt percenként. Sajna ebben a táblában rendszeres, hogy 40.000 feletti a sorok száma. (minden adat 19x szerepel benne)Viszont a kód, ami egyel lejjebb született, tökéletes
Köszönet![ Szerkesztve ]
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz #90999040 #14096 üzenetére
Szia!
Nagyon köszönöm!
Ez nagyban hasonlít az enyémre, (az egyetlen működőre, a sok próbálkozásom közül ) de a táblán belül végzett egyenkénti vizsgálat és egyenkénti törlés nem a legjobb megoldás, mert rengeteg (tényleg rendszeresen 40.000 sor feletti) adatot kell végigmásznia.
Ennek ellenére tanultam ebből is, így nagyon köszönöm!!!
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz saab00 #14103 üzenetére
Mivel nem válaszként írtad, hanem új hozzászólásként, így csak feltételezem, hogy a rendszámos, kilóméteres problémát sikerült megoldanodA másik kérdésedet is összehoztad? A találat alatti sor értéket?
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz cousin333 #14109 üzenetére
Igen. Ezt azóta felfedeztem, de sajnos még így is csak cca 2,5x-es a tempó.
Azt nem értem, hogy miért, de kipróbáltam és ennyi.
A soronkénti vizsgálattal mint írtam 4000 sor körül törölt percenként. Ha minden számom 19x ismétlődik, akkor ugye ez 40.000 sornál kb. 2100 tömb, amit az előzőhöz viszonyítva meg kellene csinálnia fél perc alatt. De 1 percnél leállítottam és kb. 10000 sorral volt kevesebbem, mint előtte.
Arra azonban mindenképp jó, hogy látom hogyan kell ismétlődő blokkot keresni, tehát tanulságos.
Megint köszi!Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz cousin333 #14110 üzenetére
Igen, ez az egyik igen hasznos újítás 2003 óta Excelben.
Gondolom sokaknak és sokszor okozott gondot, ezért tették megoldottá menüből.
Ezt 2003 még nem tudja.A tábla különböző módon történő jelölgetése megy, köszi ha lehet kerülöm az egeret, sok időt lehet spórolni a billentyűparancsok ismeretével, ezt én is csak javasolni tudom mindenknek, még ha VBA-hoz láma is az ember...
[ Szerkesztve ]
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz #90999040 #14113 üzenetére
Oops!
No ez az a kód, amit már csak részletekben értek, vagy legalábbis azt hiszemEzt félig makróval, félig függvénnyel kipróbáltam úgy, hogy valóban betettem egy plusz oszlopot, állandóra.
Sima HA függvénnyel adtam értéket a celláknak, attól függően, hogy az előtte lévő sorban találhatóval egyezik, avagy nem "A" oszlop értéke. 1 vagy semmi.
Aztán a sorba rendezést már a makró csinálta, majd meghatároztam az utolsó sort az új cella alapján, amiben még adat van és onnan lefelé törlés mindent.Ez már jónak mutatkozott (igaz a függvény kicsit megnövelte a fájl méretet és a cellák újraszámolása is tovább tartott), de messze nem ennyire kifinomult, mint a makród.
Hálám a sírig..., hogy ennyit törődtök a nyavalyámmal!
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz zz76zz #14130 üzenetére
Szia!
Ezt biztos nekem szántad?Ha engem kérdezel, állítsd át a cél cellák formátumát dátumra, akkor dátumként fogja megjeleníteni is.
Ha VBA-val másolsz, akkor már a kódban add meg a cella formátumát, mondjuk így:
Range("kezdő cella:Uccsó cella").NumberFormat = "m/d/yyyy"Ha csak sima másolással, akkor előre a cella formátumot, beilleszteni pedig csak az értéket szúrd be irányított beillesztéssel.
Ha szöveg kell, akkor szövegre állítsd, de akkor a képlettől ne várj eredményt.
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
Sziasztok!
Elakadtam egy valószínűleg triviális problémánál.
2010 Excelben makró.
A képleteket kicserélem csak adatokra úgy, hogy a kijelölt részt rámásolom saját magára, érték beillesztéssel.
A bajom az, hogy a számokat szövegként fogja betenni, amit ugyan kézzel könnyű átalakíttatni vele, de ez most nem jó.
A makró lefutása után a cellában már számként tárolt számnak kellene lennie, mert addig a mellette lévő FKERES sem működik stb...Sajnos nem találtam rá utalást, hogy ezt miként lehet makróban megadni.
Próbálkoztam ezzel: Paste:=xlPasteValues*1 ami ugyan lefutott, de eredményt nem hozott, továbbra is szövegként tárolta a számot.Előre is köszi, ha van valakinek megoldása!
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz m.zmrzlina #16812 üzenetére
Szia!
Köszönöm!Közben egy favágó módszerrel megoldottam.
Felvettem egy cellát, aminek az értéke 1, majd ezt másolom az átalakítandó cellákra irányítottbeillesztéssel, a szorzást választva.
Nem túl szép, de működikOffice 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz m.zmrzlina #16818 üzenetére
Mármint mit?
A cellát kézzel vettem fel a munkalap egy távol eső sarkában, értéke állandó 1.
Ennek másolását szorzással viszont már a makró csinálja.Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
Sziasztok!
Szeretnék egy parancsgomb - már meglévő makrója elé - egy elágazást tenni.
A dolga az lenne, hogy megvizsgál 3 nevesített cellát, tehát pl.: nem A4-et, hanem a jelenleg A4-ben lévő ALPHA_2X2 elnevezésű cellát, aminek helye változhat, de a makrónak akkor is ezt a cellát kellene keresnie.
Szóval megvizsgálja, hogy üres e. Ha igen, megáll a makró, ad egy msgbox üzenetet, amire kattintva nem folytatja a makrót, hanem visszaáll a futtatás előtti állapotra, azaz end sub lenne az ág kimenete.
Ha nem üres ez a 3 cella, akkor tovább futtatja a makrót, a már most is benne lévő parancsok végrehajtásával.Az if-vel még csak csak elboldogulnék, de erről a nevesített cella hivatkozásról lövésem sincs
No nem mintha a többit nagyon értenémElőre is köszönöm a segítséget!!!
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
Sziasztok!
Segítséget szeretnék kérni egy egyszerűbb makróban, ami mégis kifogott rajtam
Van egy 190 oszlopból és 1422 sorból álló Excel 2010 táblám.
Minden harmadik sora tartalmaz, vagy nem tartalmaz adatot.Törölni szeretném az adatot nem tartalmazó cellákat a fölöttük lévő további két cellával egyetemben úgy, hogy a fennmaradó cellákat tolja el balra.
Úgy indultam el, hogy egy ciklusba betettem i= utolsó sornak az ellenőrizendő utolsó sort (1422), végnek a 3. sort (azaz az utoljára ellenőrizendőt), lépésköznek pedig -3-at, mert csak minden 3. sorban kell cellákat ellenőrizni.
Ezt követően ellenőriztetem az értékét 1422.sor, GH cellájának (190. oszlop), ami ha üres, vagy nulla, akkor törölni kellene cellák balra tolásával GH1422:GH1420 3 cellát, majg ugrani a következő ellenőrizendő cellára, azaz GG1422-re.
Ha ezzel a sorral végzett, kéne kezdenie GH1419 ellenőrzésével és szépen végig az egész soron és felfelé a táblázatban.Sajnos a szintaktikán elvéreztem, nagyon béna vagyok...
A segítséget előre is köszönöm!!!!!!!!!!!!!!!!!!!!
[ Szerkesztve ]
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
Szia!
Ha 2010 Excelt használsz, a következő módon meg tudod oldani:
1., A cellának alap esetben zároltnak kell lennie a cellaformázás -> védelem fülön.2., Ne legyen bekapcsolva a lapvédelem.
3., Menj a Korrektúra eszköztárra, azon belül a változások blokkhoz és válaszd a Tartományok szerkesztésének engedélyezése gombot.
4., Itt megadhatod, hogy ha védett lesz a lap, akkor mely cellák szerkeszthetők mégis, ha tudja a felhasználó a jelszót.
5., Kapcsold be a lapvédelmet
[ Szerkesztve ]
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
-
hallgat
csendes tag
válasz hallgat #18947 üzenetére
Sziasztok!
Sikerült túlesnem a szintaktikai bénázáson , DE...
Tudtok erre gyorsabban lefutó megoldást?
Ez így már tisztességes ideig elszórakozik egyetlen oszloppal is, nem 190-nelSub Makró1()
Dim o As Integer
Dim s As Integer
For o = 190 To 2 Step -1
For s = 1422 To 3 Step -3
Sheets("Munka2").Cells(s, o).Select
If IsEmpty(Sheets("Munka2").Cells(s, o)) Or (Sheets("Munka2").Cells(s, o)) = 0 Then
Sheets("Munka2").Range(Cells(s, o), Cells(s - 2, o)).Delete Shift:=xlToLeft
End If
Next s
Next o
End SubKöszi!!!
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz m.zmrzlina #18981 üzenetére
Köszönet!
Ezt nem most fogom átrágni, de hasznos lesz
A tömböket... No igen, egyszer rá kéne már szánni magam.
Köszönöm!!!
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
-
hallgat
csendes tag
válasz m.zmrzlina #18985 üzenetére
Szerintem sem úszom meg a tömböket
Mindent el kell egyszer kezdeniMost néztem épp Mutt válaszát...
Eljött az ideje a tanulásnak
Köszönöm a segítséget!!!!
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
Khm...
Nagyon köszönöm!!!!!
Holnap nekifutok, hogy meg is értsem
A feladatot már megoldottad, de itt a remek alkalom számomra, hogy elkezdjem megtanulni a tömböket használni.
Azt hiszem megadtad a kezdő, vagy inkább végső lökést, ezért külön hála.
Össze sem lehet hasonlítani a tempót.
Nem nélkülözhető bizonyos pont után ez az ismeret.Még egyszer köszi!
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz GrandS #19017 üzenetére
Külön lapon nyílnak meg, vagy inkább nevezzük külön munkafüzetnek.
Gondolom azt szeretnéd, hogy külön Excelként nyíljanak meg, ne egy Excelben külön ablakként.
Ha a már nyitva lévő Exceled mellé elindítod újra a programot és az újonnan elindított Excelben a megnyitás paranccsal hívod be a másik fájlt, akkor 2 Exceled lesz nyitva, mehet a váltogatás.DE... 2010 és 2003 Excelben is működik az Alt+Tab billentyűvel való váltás a munkafüzetek között. Max. nem tudod őket 2 képernyőre szétrakni...
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz Simba86 #19530 üzenetére
Szia!
Bocsánat, csak trollkodom.
ÁFA számításnál az osztás ad pontosabb eredményt, nem a közelítő értékkel való szorzás.
A bruttó értékből úgy kapod meg a nettót, hogy elosztod 1 egész + ÁFA értéke tizedesekben megadva, azaz 1,27-tel, ha 27%-os az ÁFA kulcs.Ha megnézed lappy válaszát, ugyan ezt csinálja, csak két lépésben, azaz elosztja 127-tel (megkapja az 1%-ot), majd szorozza 100-zal (megvan a 100%).
Én azért választanám Delila megoldását, mert nincs a képletbe "égetve" az ÁFA értéke. Ha változás van, vagy új érték jön be a képbe, csak a listát kell bővíteni/helyesbíteni. Elgépelni sem lehet, mert érvényesítésnél csak a listában szereplő értékeket veheti fel a cella, kisebb a hiba lehetősége.
Persze ez mindenkinek a saját ízlése ;-)
Még egyszer elnézést a belekotyogásért!
Hogy a kérdésedre is legyen némi segítség:
A két bruttó 1000-es cellád alapjainak összegét kiszámoltathatod lappy képletével úgy is, hogy a két képletet (x áfa és y áfa) összeadásjellel egymás mögé fűzöd. Így a képlet kiszámolja az első cella értékéből a nettó értéket, majd hozzáadja második cella értékéből számolt nettó értéket és ezt jeleníti meg.
Az kérdés, hogy egy pénztárkönyvben miért is írnál 2 tételt egy sorba?
De ez már a Te szakterületed.Peace, love r'n'r!
[ Szerkesztve ]
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz szata.68 #19541 üzenetére
Csak egy minta, nem a legelegánsabb megoldás...
Feltételeztem, hogy adataid (amit szorozni kell) A2-től lefelé vannak.
B1 értéke nálam a képlet, azaz =A1*1,5A makró megnézi, hogy meddig vannak adataid "A" oszlopban, addig a sorig "B" oszlopban bemásolja a képletet B1-ből B2-től az utolsó sorig.
Ezt követően ezzel az értékkel felülírja "A" oszlop értékeit, majd törli "B" oszlopot.
Sub Makró1()
'
' Makró1 Makró
'
Dim usor As Integer
usor = Sheets("Munka1").Range("A1").End(xlDown).Row
Range("B1").Copy
Range("B2:" & "B" & usor).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("B2:" & "B" & usor).Copy
Range("A2:" & "A" & usor).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("B:B").Delete Shift:=xlToLeft
Application.CutCopyMode = False
End SubOffice 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz atillaahun #19596 üzenetére
Va ez így néha
2003-ban:
Jobb egérgomb a parancsikonok felett, majd a Visual Basic eszköztár bepipálása. "Vezérlők eszközkészlete" gomb, feladja a kipakolható elemeket tartalmazó ablakot.Másként: Nézet -> Eszköztárak -> Visual Basic
[ Szerkesztve ]
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
hallgat
csendes tag
válasz atillaahun #19602 üzenetére
Nincs mit!
Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!