-
Mobilarena
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
-
Delila_1
veterán
válasz
Geryson #15709 üzenetére
A # jelek helyére szám kerül, de nem kötelezően.
Pl. a ## ### formátumú cellába 111-et írsz, akkor 111 jelenik meg benne, ha pedig 11111-et akkor 11 111. A formátum szóköze adja a tagolást.A 0## formátumnál a nulla kötelező kitöltést von maga után, ha csak tízes nagyságrendű számot írsz, például 12-t, vezető nullával jelenik meg: 012. A beírt 123 123-ként jelenik meg.
A formátumban idézőjelek között megadott szöveg változás nélkül bekerül a cellába, és ettől függetlenül tudsz számolni a cella számszerű értékével.
Szöveget a formátum elején is megadhatsz.:. "Alibaba és a " ###" rabló".
-
Delila_1
veterán
-
Delila_1
veterán
válasz
pero19910606 #15692 üzenetére
Használd a csere funkciót (Ctrl+h). A vesszőket előbb kicseréled, mondjuk @-ra, utána a pontokat vesszőre, végül a @-okat pontokra.
Ha ezután nem számol az Excel az átalakított értékekkel, akkor írj be egy üres cellába egy egyest, másold (Ctrl+c), jelöld ki az értékeket, jobb klikk, Irányított beillesztés, Szorzás. A szövegként értelmezett adatokat ezzel számokká alakítod, az egyest törölheted.
-
-
Delila_1
veterán
válasz
Bobrooney #15665 üzenetére
Mikor a változó deklarálásánál az As után kezded beírni a típust, kapsz egy ablakot a választhatók felsorolásánál. Ezek között nincs Document. Ha egy füzetre akarsz hivatkozni, célszerű a Workbook típust választani. A makróban
Public Doc As Workbook
Sub mm()
Set Doc = ActiveWorkbook
Doc.Sheets("Munka1").Range("A1") = "asdf"
End Sub -
Delila_1
veterán
válasz
Bobrooney #15659 üzenetére
A VB szerkesztőben duplán klikkelsz a listboxra, megjelenik a kódja úgy, hogy a kezdő- és záró sor közé bármit írhatsz.
Private Sub ListBox1_Click()
'itt megadva egy általad írt makró címét, végrehajtja annak a tartalmát
End SubMegváltoztathatod az eseményt Click-ről pl. AfterUpdate-re, vagy bármire, amit fent a jobb oldalon lévő legördülőben találsz.
A ListBoxt RowSource tulajdonságában megadhatod a listát, amit meg akarsz jeleníteni benne.
Pl.: Munkalap1!A1:A20 -
Delila_1
veterán
válasz
m.zmrzlina #15644 üzenetére
Sub mm()
Dim oszlopszam%, oszlop$
oszlopszam% = 3
oszlop$ = Chr(oszlopszam% + 64)
Range(oszlop$ & ":" & oszlop$).Select
End Sub -
Delila_1
veterán
válasz
alfa20 #15605 üzenetére
Meghatározod az utolsó sort, például az usor=Cells(Rows.Count, "A").End(xlUp).Row -val.
Range("I2:T2").Select helyett Range("I2:T" & usor).Select-et írj.
A beillesztésnél a Selection.PasteSpecial Paste:=xlFormulas forma illeszti be a képletet, az xlValues az értéket másolja.
A képleteket egyszerre is megadhatod külön másolás nélkül az összes sorba
Range("T2:T" & usor)= "=Range(A2*10)" formában.
Az Excel tudja, hogy a T3-ba már =A3*10-et írjon. -
Delila_1
veterán
válasz
gurabli #15599 üzenetére
A makró beírása úgy történik, hogy Alt + F11-gyel előcsalod a VB szerkesztőt. Bal oldalon ráállsz a füzeted nevére. Insert menü | Module. Jobb oldalon kapsz egy üres felületet, oda másold be a makrót.
Visszalépsz a füzetbe, ott Alt + F8-cal bejön a makrókat tartalmazó ablak, ahonnan indíthatod a makrót.
-
Delila_1
veterán
válasz
gurabli #15595 üzenetére
Minden feladatra van több megoldás. Lappy válasza is biztosan jó, én mást agyaltam ki.
Úgy látom a csatolt képen, hogy azon a lapon, ahonnan másolni kell, az N oszlopban folyamatosan vannak adatok, ezért ebből az oszlopból veszem az utolsó sort.
A két Set kezdetű sorban írd át a lapok nevét.Sub Tizenhat()
Dim sorIN%, sorID%, usorIN%, WSIN As Worksheet, WSID As Worksheet
Set WSIN = Sheets("Innen")
Set WSID = Sheets("Ide")
usorIN% = WSIN.Cells(Rows.Count, "N").End(xlUp).Row 'utolsó sor az Innen lapon
sorID% = 10
Do
For sorIN% = 2 To usorIN%
WSID.Cells(sorID%, "G") = WSIN.Cells(sorIN%, "N")
sorID% = sorID% + 6
Next
Loop While sorIN% < usorIN%
End Sub -
Delila_1
veterán
válasz
dellfanboy #15590 üzenetére
Szívesen. Neked is Geryson.
-
Delila_1
veterán
válasz
dellfanboy #15588 üzenetére
Adatok | Tagolás | Csoportba foglalás.
-
Delila_1
veterán
válasz
Geryson #15584 üzenetére
A cellaformázás Védelem fülén jelöld be a Zárolt négyzetet. Ez az alapbeállítás szerint zárolt, ami azt jelenti, hogy azoknál a celláknál vedd ki a pipát, amelyeknél megengeded a módosítást.
A védelem akkor jön létre, mikor a lapot védetté teszed.
A 2007-es verzióban a lapfülön jobb klikkre előjön a Lapvédelem, ahol lehetőséget kapsz jelszavas védelemhez (nem kötelező jelszavazni), és kapsz egy listát, amiből kiválaszthatod, milyen módosításokat engedsz meg a felhasználóknak.
-
Delila_1
veterán
válasz
csferke #15582 üzenetére
Az első lap egy új oszlopába tedd be az =A2& " "&C2 képletet, ami összefűzi a nevet és a várost. Legyen ez pl. a D oszlopban. Ügyelj, hogy az idézőjelek között 2 db szóköz legyen.
Másold le a képletet, jelöld ki mindet, és nevezd el mondjuk NV-nek (nés és város).
A 2. lap A1 cellájában az érvényesítésnél ezt add meg forrásként: =NV
Az A2 cellába a következő képlet jön:=FKERES(BAL(A1;SZÖVEG.KERES(" ";A1)-1);Munka1!A1:C5;2;0) & " " & FKERES(BAL(A1;SZÖVEG.KERES(" ";A1)-1);Munka1!A1:C5;3;0)
Itt is 2 db szóközöket írj.
Ebből a BAL(A1;SZÖVEG.KERES(" ";A1)-1) adja a keresendő nevet. Megkeresi az A1 cellában a 2 db szóköz helyét, megadja a keresendő nevet, és ennek megfelelően keres az 1. lap adatai között.
Azért kell dupla szóköz, mert a nevek tartalmaznak 1-1 db-ot. -
Delila_1
veterán
válasz
Bobrooney #15571 üzenetére
A For Each - Next ciklussal végig lépkedhetsz a terület tagjain. A lenti példában a ciklusváltozó CV.
Sub TeruletBejaras()
Dim ter As Range, CV As Object
Set ter = Range("A1:C15")
For Each CV In ter
MsgBox CV.Address
MsgBox CV.Value
If CV < 300 Then Cells(CV.Row, CV.Column).Font.ColorIndex = 3
Next
End SubA két kiíratást csak azért tettem bele, hogy megmutassam, miket tud még ez a különleges ciklus.
A For Each CV In ter helyett For Each CV In Range("A1:C15") is szerepelhet. -
Delila_1
veterán
válasz
siskin #15564 üzenetére
Megtaláltam azt a leírást, ami a hivatkozásokkal foglalkozik.
"Csináltam egy tesztet, úgy tűnik, tényleg van egy másolat a forrástábláról a fájlban. Eléggé Excel veterán vagyok, de ez most nekem is új volt. Tedd a következőket:
1. A hivatkozásokat tartalmazó Excel fájlban nyiss egy új fület.
2. Helyezz el az A1 cellába egy hivatkozást a törölt tábla A1 cellájára. Ez valahogy így fog kinézni:
Kód:
='C:\[teszt1.xls]Munka1'!A1
A pontos elérést puskázd ki valamelyik meglévő hivatkozásból. A lényeg, hogy a végén A1 legyen és ne $A$1!
Amikor bekéri frissítés céljából az Excel a hivatkozott fájlt, nyomj mégsét.
3. Autokitöltéssel húzd végig jobbra a frissen létrehozott cellát annyit oszloppal, amennyit a forrás tartalmazott.
Ha túlhúzod, akkor sincs gond. (Autokitöltés = kijelölöd az A1-et, majd a cella jobb-alsó sarkában levő pöttyöt megfogva végighúzod jobbra a kijelölést.)
A frissítéshez újra kéri az Excel a forrásfájlt, megint mégse.
4. A felső, immár helyreállt sor celláit jelöld végig ki, majd csinálj egy autokitöltést lefelé is. Innentől kezdve meg kell, hogy kapd a forrásfájl tartalmát.
5. Ezt az egészet jelöld ki, majd CTRL&C, majd szerkesztés->irányított beillesztés->csak értéket.
Ekkor a hivatkozások felülíródnak a megjelenített értékekkel, ezzel végleg elválva a fantom forrástól. A helyreállt táblát már át tudod másolni másik Excel fájlba, stb.
Sajnos a formázásokat végleg elvesztetted, de ez legyen a legnagyobb baj."Nem valószínű, hogy az első módszerrel sikerül, mert azóta már biztosan használtad a gépet. Ezzel a most idézettel valaki pár nap után helyreállította a fájlját, legalábbis azt válaszolta a tanácsra.
-
Delila_1
veterán
válasz
siskin #15564 üzenetére
Hasonló kérdésre valamikor ezt a választ adta egy ügyes informatikus (szó szerint idézem, hátha bejön):
"Ha nincs meg a fájlod valahol mégis, egy másik néven, vagy emailben csatolt állományként,
vagy ilyesmi, akkor még azt teheted, hogy elindítod az excelt, azután a feladatkezelőből leállítod.
Ezután újraindítod, és ha szerencséd van, feldob egy olyan ablakot, hogy dokumentum-helyreállítás,
és talán benne van a fájlod, ha mostanában szerkesztetted, vagy lagalább valami nem túl régi verzió.
Ha ez az út nem járható, akkor itt egy másik megközelítés.Ha felülírsz egy fájlt, az (bár nem biztos, de szerintem) olyan, mintha törölted volna.
Mármint, a rendszer elmenti az új fájlt egy új helyre, és felszabadítja a régi által lefoglalt tárhelyet.
Én törölt fájlok visszaállítási kísérleténél én ezt az utat szoktam követni:
1. Kikapcsolom a gépet (A), amin a törölt fájl van.
Törlés után a fájl még ott van a merevlemezen, de az általa lefoglalt terülte szabadnak van nyilványtva, és csak idő kérdése, hogy mikor ír oda valamit a rendszer.
2. Keresek egy másik gépet (B), amire telepítek egy olyan programot, amivel törölt fájlokat vissza lehet hozni.
Van ilyen sok, többségük nem ingyenes, de 15 v. 30 napig ingyen használható, ami teljesen megfelel a célnak.
3. Átrakom a törölt fájlt tartalmazó merevlemezt az A-ból a B gépbe, és Secondary Slave -ként konfigurálom,
hogy véletlenül se erről próbálja a gép a rendszert betölteni.
4. Enildítom a B gépet, futtatom rajta a törlésvisszavonó programot, és végigszkennelem azt a bizonyos merevlemezt, hogy megtalálja-e.
Ha megtalálja, és vissza tudja állítani, akkor jó.
Ha ez kínai, vagy nem vagy biztos a dolgodban, akkor érdemes inkább szakemberhez fordulni, mert könnyű nagy kárt okozni, ha az ember nem tudja mit csinál."Egy másik, amit megpróbálhatsz, hogy nyitsz egy új füzetet. Az első lap A1 cellájában hivatkozol a megnyithatatlan füzet első lapjának A1 cellájára -> =[FüzetNeve.xls]ElsőLapNeve!A1
Ezt le-, és jobbra másolod. Vagy bejön, és a képletek helyére bemásolod az értéküket irányított beillesztéssel, vagy tovább búsulsz. -
Delila_1
veterán
válasz
sevadevil7 #15560 üzenetére
-
-
Delila_1
veterán
válasz
Mauzes #15556 üzenetére
Az egyéni formátumban ezt a cifraságot add meg:
0,00%_);(-0,00%)
A pontosvessző előtti rész a pozitív-, a másik a negatív számokra vonatkozik.
Ha a formátum után közvetlenül írsz egy alsó kötjelet, és azután egy valamilyen karaktert, akkor a szám után olyan széles üres helyet hagy a cella jobb oldalán, mint a beírt karakter. A fenti példában ez a záró-zárójel a pozitív számok után. -
Delila_1
veterán
válasz
hdcsaba87 #15549 üzenetére
Az Excelben behívod a vezérlők eszköztárát. Az utolsó ikonra, a "További eszköztárak" nevűre kattintasz. A megjelenő listában a verziódtól függően különböző néven szerepelhet, Naptár, Calendar, Microsoft Calendar. Ha egyik sincs, akkor a letölthető MSCAL.OCX és CDLMSO.DLL fájlokat tedd be a C:\Programok\Microsoft Office\ OFFICExx (11, 12, vagy 13 a verziótól függően) könyvtárba.
Átlépsz a VBE-be. Tools | References. Bejelölöd a Microsoft Forms x.x Object Library-t. Megjelenik az ikon, kis kék pontokkal. -
Delila_1
veterán
válasz
pero19910606 #15541 üzenetére
Szívesen. A legegyszerűbb dolog nem jut néha eszünkbe.
-
Delila_1
veterán
válasz
pero19910606 #15539 üzenetére
Készíts egy új oszlopot, ahol egymás alá írod a gyümölcsöt és a húst, és ezt tedd be az érvényesítésbe.
-
Delila_1
veterán
válasz
pero19910606 #15537 üzenetére
Igen. NE hagyj üres cellákat.
-
Delila_1
veterán
válasz
pero19910606 #15534 üzenetére
Erről már többször volt szó itt a fórumon. Pl. itt
Az kalória beírását az FKERES függvénnyel tudod megoldani, az összesítés pedig gyerekjáték a SZUM függvénnyel. Összegzés előtt ne felejtsd el felszorozni az egységnyi adagra szóló kalóriát a fogyasztandó mennyiséggel.
-
Delila_1
veterán
válasz
kokopeti #15509 üzenetére
A 'Napi összesítő' lap A2 cellája a mód, B2 a bruttó, C2 a nettó, D2 a megjegyzés.
A laphoz rendeld ezt a makrót:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim datum As Date
If Target.Address = "$A$1" Then
Application.EnableEvents = False
datum = Target.Value
Osszevonas datum
Application.EnableEvents = True
End If
End SubModulba tedd a másikat:
Sub Osszevonas(datum)
Dim sor%, usor%, usorN%, f As Boolean
Application.ScreenUpdating = False
Dim WS1 As Worksheet, WS2 As Worksheet, WS3 As Worksheet
Set WS1 = Worksheets("Kiadások")
Set WS2 = Worksheets("Bevételek")
Set WS3 = Worksheets("Napi összesítő")
WS1.Select
usor% = Cells(Rows.Count, "A").End(xlUp).Row
usorN% = 2
For sor% = 2 To usor%
If Cells(sor%, 1) = datum Then
usorN% = usorN% + 1
f = True
WS3.Cells(usorN%, 1) = Cells(sor%, 2)
WS3.Cells(usorN%, 2) = Cells(sor%, 3) * -1
WS3.Cells(usorN%, 3) = WS3.Cells(usorN%, 2) / 1.27
WS3.Cells(usorN%, 4) = Cells(sor%, 5)
End If
Next
WS2.Select
usor% = Cells(Rows.Count, "A").End(xlUp).Row
For sor% = 2 To usor%
If Cells(sor%, 1) = datum Then
f = True
usorN% = usorN% + 1
WS3.Cells(usorN%, 1) = Cells(sor%, 2)
WS3.Cells(usorN%, 2) = Cells(sor%, 3)
WS3.Cells(usorN%, 3) = WS3.Cells(usorN%, 2) / 1.27
WS3.Cells(usorN%, 4) = Cells(sor%, 4)
End If
Next
WS3.Select
Application.ScreenUpdating = True
If f = False Then MsgBox "Nincs mozgás a " & datum & " napon."
End SubAz összes bruttót az =szum(B:B), az összes nettót az =szum(D:D) képlet számolja ki a harmadik lapodon.
-
Delila_1
veterán
válasz
m.zmrzlina #15507 üzenetére
Örülök, hogy sikerült.
-
Delila_1
veterán
válasz
Metathrone1 #15501 üzenetére
Nincs mit.
-
Delila_1
veterán
válasz
Metathrone1 #15499 üzenetére
Például így:
Private Sub Workbook_Open()
Range("GX60000") = InputBox("Írd be a neved", "Név")
End Sub -
Delila_1
veterán
válasz
Metathrone1 #15493 üzenetére
Az inputboxba beírt nevet tedd be egy távoli cellába, pl. a GX60000-be.
A másik makró
Sub Insert_date()
ActiveCell = Date
ActiveCell.Offset(, 1) = range("GX60000")
End SubEhhez a makróhoz rendelhetsz bill. kombinációt.
Az elsőből nem kell meghívnod a másodikat.Private Sub Workbook_Open()
Range("GX60000") = InputBox("Írd be a neved", "Név")
End Sub -
Delila_1
veterán
válasz
Metathrone1 #15491 üzenetére
Át kell adnod a valami nevű változót a második makrónak. A vicc a dologban, hogy ha Workbook_Opennel indítod az első makrót, akkor az A1 cella lesz aktív hivatalból.
Private Sub Workbook_Open()
valami = InputBox("Írd be a neved", "Név")
Insert_date valami
End SubSub Insert_date(valami)
ActiveCell = valami
ActiveCell.Offset(, 1) = Date
End Sub -
Delila_1
veterán
válasz
m.zmrzlina #15477 üzenetére
-
Delila_1
veterán
válasz
Kicker #15472 üzenetére
A "Szakértő Úr" nem illik rám.
Az értékadásnál értelemszerűen folytatsd a sort az A6, A7, ...A14-gyel. A
If Cells(1, oszlop1%) = a1 And Cells(2, oszlop1%) = a2 And Cells(3, oszlop1%) = a3 _
And Cells(4, oszlop1%) = a4 And Cells(5, oszlop1%) = a5 Thensorba további And operátorral add be a többi adatot. A hosszú sornál a törést úgy tedd be, hogy hagysz egy szóközt, majd írsz egy alsó kötjelet, és a következő sorban folytatod a felsorolást.
Az Excelben az Alt+F11 előhozza a VB szerkesztőt. Bal oldalon kiválasztod a füzetedet, majd az Insert menü segítségével beszúrsz egy modult. Kiválasztod a modult, és a jobb oldalon kapott üres füzetbe bemásolod a makrót, beviszed a módosításokat. Visszalépsz a füzetbe, és Alt+F8-cal előhívod a makrók ablakot, ott tudod indítani.
-
Delila_1
veterán
válasz
Kicker #15470 üzenetére
Ez a makró az egyforma oszlopoknak színes hátteret ad. Ha több azonos is van, azt már könnyen ki tudod választani a színezés alapján.
Sub hasonlit()
Dim oszlop%, oszlop1%
For oszlop% = 1 To 29
a1 = Cells(1, oszlop%)
a2 = Cells(2, oszlop%)
a3 = Cells(3, oszlop%)
a4 = Cells(4, oszlop%)
a5 = Cells(5, oszlop%)
For oszlop1% = oszlop% + 1 To 30
If Cells(1, oszlop1%) = a1 And Cells(2, oszlop1%) = a2 And Cells(3, oszlop1%) = a3 _
And Cells(4, oszlop1%) = a4 And Cells(5, oszlop1%) = a5 Then
szin = Int(Rnd() * 50) + 1
Range(Cells(1, oszlop%), Cells(5, oszlop%)).Interior.ColorIndex = szin
Range(Cells(1, oszlop1%), Cells(5, oszlop1%)).Interior.ColorIndex = szin
End If
Next
Next
End Sub -
Delila_1
veterán
válasz
pschio #15460 üzenetére
Nem érdemes külön text-ből bevinni, megteheted az automatikus javítás funkcióval. Egyszer kell bevinni, hozzárendelni egy olyan karaktert, ami valószínűleg soha nem fordul elő magában (pl. w), ezután már csak ezt a karaktert írod be egymagában, és átírja a megadott névre.
Legegyszerűbb, ha a Wordbe beviszed a nevet, akár meg is formázhatod, majd Office gomb | A Word beállatásai | Nyelvi ellenőrzés | Automatikus javítási beállítások.
-
Delila_1
veterán
válasz
Fire/SOUL/CD #15446 üzenetére
Téged is lehet látni? Rég nem jártál erre.
-
Delila_1
veterán
-
Delila_1
veterán
Ne TextBoxokat, hanem címkéket tegyél ki a formra, hiszen ezeket nem a felhasználó állítja ki.
Az első akkor veszi fel az aktuális időt, mikor megnyitod a formot. A címkék neve nálam Kezd és Veg.Sub Start()
Dim most As Date
most = Format(Now, "hh:mm:ss")
UserForm1.Kezd = most
UserForm1.Show
End SubA második akkor, mikor a gombra kattintasz.
Private Sub CommandButton1_Click()
Dim Vege As Date
Vege = Format(Now, "hh:mm:ss")
Me.Veg = Format(CDate(Kezd) - CDate(Vege), "HH:mm:ss")
End Sub -
Delila_1
veterán
Az első esetben 2 tételből választhatsz. Bármelyik kiválasztása újabb 2×4 választási lehetőséget adsz (a B2:B5, vagy B8:B11 tartományból). Ennek ellenére a harmadik választásnál csak 2 újabb tartományból való választás lehetőségét adod meg a ComboBox2 AfterUpdate eseményében.
Több elágazásnál érdemes a Select Case utasítást alkalmazni.
Private Sub ComboBox2_AfterUpdate()
ComboBox3.Text = ""
Select Case ComboBox2.Text
Case "GE Gen2"
ComboBox3.List = Sheets("Adattábla").Range("C2:C6").Value
Case "GE Gen3"
ComboBox3.List = Sheets("Adattábla").Range("C7:C12").Value
Case "GE Gen4"
ComboBox3.List = Sheets("Adattábla").Range("C13:C17").Value
'...
'...
End Select
End Sub -
Delila_1
veterán
A ComboBox1 AfterUpdate esemény-kezelés első sora legyen
ComboBox2.Text = ""
A gomb makróját is kiegészítheted
Private Sub CommandButton1_Click()
If ComboBox1 = "" Or ComboBox2 = "" Then
MsgBox "Nem választottál!"
Exit Sub
End If
Sheets("Munka2").Cells(1) = ComboBox2
End Sub -
Delila_1
veterán
A ComboBox1 RowSource tulajdonságához írd be: Adattábla!A1:A2
Jön a 2 makró:
Private Sub ComboBox1_AfterUpdate()
If Me.ComboBox1.Text = "Gyümölcs" Then
ComboBox2.List = Sheets("Adattábla").Range("B1:B5").Value
Else
ComboBox2.List = Sheets("Adattábla").Range("B8:B11").Value
End If
End SubPrivate Sub CommandButton1_Click()
Sheets("Munka2").Cells(1) = ComboBox2
End Sub -
Delila_1
veterán
válasz
Gandalf80 #15396 üzenetére
Feltöltöttem ide.
Az 'Összes utca' A oszlopába bemásoltam Bp. I-III. kerületének az utcáit egymás alá. Másold alá az összes többit, a nem pestieket is. Mikor megvan, rendezd emelkedő sorrendbe, töröld az egyformákat.
A Rögzítő lap A1 cellájába írd be a kezdő karaktert (nagybetű!), és az E oszlopban csakis az ezzel kezdődő közterületek jelennek meg a legördülőben.
Csakis az E2-ben adtam meg az érvényesítést, másold le alá a többi cellába is. Engedélyezni kell a makrókat a füzet megnyitásakor.
-
Delila_1
veterán
sor=WSA.cells(rows.count, "A").end(xlup).row
WSA.cells(sor,1)=range("h18")
WSA.cells(sor,2)=range("j18")
WSA.cells(sor,3)=range("h21")... stb. Gondolom, a WSA egy változó, amit a set WSA=sheets("Lapneve") utasítással adtál meg.
Próba nélkül írtam, ellenőrizd!
Szerk.: Upsz! fordítva írtam, a WSA-ra másoltattam, de ezt biztosan át tudod fordítani.
-
Delila_1
veterán
válasz
Sziszmisz #15384 üzenetére
Ezért érdemes azonnal az adatok pontos helyét megadni. Az eredeti kérdésben 4 oszlop szerepelt, ahol a szétválasztandó színek a D oszlopban voltak. Így most kétszer kellett megírni a makrót.
Sub Szetvalaszt()
Dim sor%, szin$, vesszo%
sor% = 2
Do While Cells(sor%, 1) > ""
szin$ = Cells(sor%, 13)
vesszo = InStr(szin$, ",")
If vesszo Then
Range("A" & sor% + 1).EntireRow.Insert
Range(Cells(sor%, 1), Cells(sor%, 12)).Copy Cells(sor% + 1, 1)
Range(Cells(sor%, 14), Cells(sor%, 16)).Copy Cells(sor% + 1, 14)
Cells(sor%, 13) = Left(szin$, vesszo - 1)
Cells(sor% + 1, 13) = Right(szin$, Len(szin$) - vesszo - 1)
End If
sor% = sor% + 1
Loop
End Sub -
Delila_1
veterán
-
Delila_1
veterán
2003-as verzióban a táblázatodban állva az Adatok | Űrlap menüpont segítségével azonnal megkapod ezt az űrlapot.
2007-ben kitehetsz egy ikont a gyorselérési eszköztárra. Az eszköztár végén található legördülővel behozod a További parancsokat | Minden parancs | Űrlap. Ezt az ikont használd.
-
Delila_1
veterán
válasz
Sziszmisz #15367 üzenetére
Egy rövid makróval megoldhatod.
Sub Szetvalaszt()
Dim sor%, szin$, vesszo%
sor% = 2
Do While Cells(sor%, 1) > ""
szin$ = Cells(sor%, 4)
vesszo = InStr(szin$, ",")
If vesszo Then
Range("A" & sor% + 1).EntireRow.Insert
Range(Cells(sor%, 1), Cells(sor%, 3)).Copy Cells(sor% + 1, 1)
Cells(sor%, 4) = Left(szin$, vesszo - 1)
Cells(sor% + 1, 4) = Right(szin$, Len(szin$) - vesszo - 1)
End If
sor% = sor% + 1
Loop
End Sub -
Delila_1
veterán
válasz
bandus #15362 üzenetére
Szívesen.
Így adhatod hozzá az előzőhöz az újabb értéket:
Sub period()
Dim per%, ertek, oszlop%
'A D5:AD5 tartomány kiürítése (evés előtt mosogatunk elv szerint)
Range(Cells(5, 4), Cells(5, 30)).ClearContents
per% = Range("A1"): ertek = Range("B1")
For oszlop% = 4 To 30 Step per%
Cells(5, oszlop) = Cells(5, oszlop%) + ertek
Next
per% = Range("A2"): ertek = Range("B2")
For oszlop% = 4 To 30 Step per%
Cells(5, oszlop) = Cells(5, oszlop%) + ertek
Next
End Sub -
Delila_1
veterán
válasz
bandus #15355 üzenetére
Szívesen.
Itt csupán a Step-et nem ismerted, ami a lépésközt határozza meg. Mikor nem adjuk meg, az alapértékként beállított 1-et használja a makró.Szerk.:
A Step értékének negatív számot is adhatunk, pl. mikor bizonyos sorokat törölni akarunk. Ilyenkor érdemes a táblázat aljáról indulni a teteje felé.Sub torol()
Dim sor%
For sor% = 20 To 2 Step -1
If Cells(sor%, 1) < 300 Then Rows(sor%).Delete
Next
End Sub -
Delila_1
veterán
válasz
bandus #15353 üzenetére
Sub period()
Dim per%, ertek, oszlop%
per% = Range("A1"): ertek = Range("B1")
For oszlop% = 4 To 30 Step per%
Cells(5, oszlop%) = ertek
Next
End SubA periódusok mértékét a per% változó veszi az A1-es cellából, a beírandó értéket az ertek a B1-ből. A fenti makró a 30. oszlopig írja be az azonos értékeket.
Új hozzászólás Aktív témák
Hirdetés
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- ROBUX ÁRON ALUL - VÁSÁROLJ ROBLOX ROBUXOT MÉG MA, ELKÉPESZTŐ KEDVEZMÉNNYEL (Bármilyen platformra)
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Most kedvező áron!
- Bontatlan - BATTLEFIELD 1 Collectors Edition - Játékszoftver nélkül
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap - NYÁRI AKCIÓ!
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RTX 4070Ti Super GAMER PC termékbeszámítással
- AKCIÓ! Gigabyte AORUS 16X (2024) Gamer notebook - i7 14650HX 16GB RAM 1TB SSD RTX 4070 8GBWin11
- BESZÁMÍTÁS! Gamer számítógép Asus B150M i3 6100 16GB DDR4 240GB SSD GTX 1050 Ti 4GB Sharkoon 500W
- Csere-Beszámítás!AMD Asztali számítógép PC Játékra! R5 5600/ RX 6700XT 12GB / 16GB DDR4 / 500GB SSD
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged