Hirdetés
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- eBay-es kütyük kis pénzért
- GoodSpeed: Márkaváltás sok-sok év után
- D@reeo: Pi-hole és a Telekom Sagemcom F@st 5670 DNS beállítása
- N€T0X|N: Poloskahegy
- bb0t: Ikea PAX gardrób és a pokol logisztikája
-
LOGOUT
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
plaschil
#12801
üzenetére
Az első IF-en belül két újabb kritérium már eleve hamis ágra fut.
Az első feltétel vizsgálja az E oszlop i-edik értékét, és csak akkor jut el az igaz ágba, ha ez az érték 72. Te ebbe az igaz ágba teszel két újabb feltételt, ami azt vizsgálja, hogy ugyanez a cella 0.603-mal, vagy 0.615-tel kezdődik-e.
-
Delila_1
veterán
válasz
plaschil
#12796
üzenetére
For i = 1 To SorokSzama
If Cells(i, 5) = 72 Then
If Cells(i, 4) = "5415" Or "5415B" Then
If Left(Cells(i, 2), 2) = "ez" Or Left(Cells(i, 2), 2) = "az" Or _
Left(Cells(i, 2), 4) = "emez" Or Left(Cells(i, 2), 4) = "amaz" Then
'történjen valami
Else
'történjen valami más
End If
End If
End If
Next -
Delila_1
veterán
válasz
kriszwells
#12789
üzenetére
Szívesen.
Persze, hogy felteheted a kérdést, legrosszabb esetben nem kapsz választ.![;]](//cdn.rios.hu/dl/s/v1.gif)
(Estig nem leszek gépnél, de más is tud válaszolni.)
-
Delila_1
veterán
válasz
kriszwells
#12786
üzenetére
Írd át az INDEx függvényt, hogy a teljes A oszlopra hivatkozzon.
=index(A:A;B1;1)
-
Delila_1
veterán
válasz
kriszwells
#12782
üzenetére
Beírod a szövegeket az A200:A... tartományba.
A Testreszabás menüben az Eszközöknél találsz egy Fényképezőgép nevű ikont, azt kiteszed a többi ikon közé.
Beírod az Index függvényt egy távol lévő cellába, mondjuk az AA1-be, és ott hagyod a fókuszt. Jó széles legyen az AA oszlop, hogy teljesen kiférjen a hivatkozott szöveg.
Rákattintasz a fényképezőgép ikonra, kapsz egy szálkeresztet, amivel rajzolsz egy téglalapot az A1 cellába.
Beírod a B1-be azt a sorszámot, ahányadik szöveget először akarod megjeleníteni az A200:A... tartományból. A szövegek végén jelezheted, hányadik új szöveg következik ezután, és a B1-be ezt kell megadnod a következő szöveg megmutatásához.
Vajh' érthető-e ez így?
Kép:
http://kephost.hu/share-655D_4F2BAC92.html -
Delila_1
veterán
válasz
kriszwells
#12780
üzenetére
Az A1 képlete legyen =INDEX($A$200:$A$400;$B$1;1)
-
Delila_1
veterán
Rendeld a lapodhoz a makrót. Az A oszlopba írva a B-ben lesz a dátum, a C-ben a sorszám.
Mikor törölsz az A-ból egy adatot, üres lesz az azonos sorban lévő B és C cella, a sorszámok maradnak. Ha ebbe az üres A-ba új adatot írsz, a következő sorszám lesz a C-ben.Pl. folyamatosan írtál az A1-be, A2-be és A3-ba. A C1=1, C2=2, C3=3. Törlöd az A2-t, a C2 (és B2) üres lesz. Új értéket írsz az A2-be, a sorszáma 4 lesz, amiből látszik, hogy később töltötted ki a 2. sort, mint a 3-at.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
If Not IsEmpty(Target) Then
Cells(Target.Row, 2) = Date
Cells(Target.Row, 3) = Application.Max(Columns(3)) + 1
Else
Range("B" & Target.Row & ":C" & Target.Row) = ""
End If
End If
End Sub -
Delila_1
veterán
válasz
sadams
#12764
üzenetére
Az új lapon a számok szerint rendezd a tábládat.
Ha nem fontos a sorrend, csak az, hogy ne ABC-ben legyenek az A oszlop értékei, a 3. oszlopba tehetsz véletlen számokat, és azok szerint rendezhetsz.
Szerintem nem fontos új lapra másolni, mert igény szerint vagy az A, vagy a C oszlop szerint rendezel, ennek megfelelően változik a sorrend.
-
Delila_1
veterán
válasz
kriszwells
#12757
üzenetére
A véletlen határait így adhatod meg:
=VÉL()*(FelsőHatár-AlsóHatár)+AlsóHatár
Az alsó, és felső határok értékeit 1-1 cellába írhatod be, és azokra hivatkozhatsz a képletben.
-
Delila_1
veterán
válasz
Ripitxx
#12750
üzenetére
Beviszed az érvényesítéseket. Vegyük, hogy az első az A1 cellában van, ettől függ a következő érvényesítés listája. A második érvényesítés a B1-ben van. További, az előzőeket figyelembe vevő érvényesítések vannak még a C1 és D1 cellákban.
A munkalaphoz rendeled az egysoros makrót, ami törli a B1:D1 tartományt, ha változtatod az A1 értékét.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then Range("B1:D1") = ""
End SubÉrtelemszerűen módosíthatod az "$A$1"-et az indító cellád címére, és a "B1:D1" tartományt a törlendő cellákéra.
-
Delila_1
veterán
válasz
Ripitxx
#12747
üzenetére
Nézd meg pl. a 10159-es kérdést, és a választ rá. Az üressé válást úgy oldhatod meg, hogy az első, érvényesítést tartalmazó cella egyes értékeihez üres tartományt rendelsz.
Pl. az érvényesítés lehet gyümölcs és zöldség. Írsz egy tartományt, ami a gyümölcsök neveit tartalmazza, és a tartomány neve gyümölcs. Kijelölsz egy üres tartományt, aminek zöldség nevet adsz, de nem írsz bele adatokat.
Az A1 cellában választhatsz a két tartományból. A B1 cella érvényesítése ez legyen: =INDIREKT(A1). Mikor az A1-ben a gyümölcs-öt választod, a B1 érvényesítésében megjelennek a gyümölcsök nevei. Az A1-ben a zöldséget választva üres lista lesz a B1-ben.Mire jó ez?
-
Delila_1
veterán
Az 500 sorra eddig is jó volt, most átírtam, hogy annyi oszloppal számoljon, ahány van.
Sub átrendez()
Dim sor%, usor%, oszlop%, uoszlop%, sor1%, WS2 As Worksheet
Set WS2 = Sheets("Munka2")
usor% = Range("A1").End(xlDown).Row
uoszlop% = Range("IV1").End(xlToLeft).Column
sor1% = 2
For sor% = 2 To usor%
WS2.Cells(sor1%, 1) = Cells(sor%, 1)
For oszlop% = 2 To uoszlop%
WS2.Cells(sor1%, 2) = Cells(sor%, oszlop%)
WS2.Cells(sor1%, 3) = oszlop% - 1
sor1% = sor1% + 1
Next
Next
End Sub -
Delila_1
veterán
Sub átrendez()
Dim sor%, usor%, sor1%, WS2 As Worksheet
Set WS2 = Sheets("Munka2")
usor% = Range("A1").End(xlDown).Row
sor1% = 2
For sor% = 2 To usor%
WS2.Cells(sor1%, 1) = Cells(sor%, 1)
WS2.Cells(sor1% + 1, 1) = Cells(sor%, 1)
WS2.Cells(sor1% + 2, 1) = Cells(sor%, 1)
WS2.Cells(sor1%, 2) = Cells(sor%, 2)
WS2.Cells(sor1% + 1, 2) = Cells(sor%, 3)
WS2.Cells(sor1% + 2, 2) = Cells(sor%, 4)
WS2.Cells(sor1%, 3) = 1
WS2.Cells(sor1% + 1, 3) = 2
WS2.Cells(sor1% + 2, 3) = 3
sor1% = sor1% + 3
Next
End Sub -
Delila_1
veterán
A Munka2 lapra viszi át az adatokat. Feltételezem, hogy a másolandó lapon a címsor alatt, a 2. sorban kezdődnek az adatok.
Sub átrendez()
Dim sor%, usor%, sor1%, WS2 As Worksheet
Set WS2 = Sheets("Munka2")
usor% = Range("A1").End(xlDown).Row
sor1% = 2
For sor% = 2 To usor%
WS2.Cells(sor1%, 1) = Cells(sor%, 1) & " 1"
WS2.Cells(sor1% + 1, 1) = Cells(sor%, 1) & " 2"
WS2.Cells(sor1% + 2, 1) = Cells(sor%, 1) & " 3"
WS2.Cells(sor1%, 2) = Cells(sor%, 2)
WS2.Cells(sor1% + 1, 2) = Cells(sor%, 3)
WS2.Cells(sor1% + 2, 2) = Cells(sor%, 4)
sor1% = sor1% + 3
Next
End Sub -
Delila_1
veterán
válasz
poffsoft
#12710
üzenetére
Tulajdonképpen a függvények nevét szeretnéd két nyelven ismerni. Ahhoz itt egy segítség
-
Delila_1
veterán
válasz
poffsoft
#12702
üzenetére
Makrólap:
Megírod a szép, működő képletet. Lapfülön jobb klikk, Beszúrás | Nemzetközi makrólap.
A képletet, és az(oka)t a cellá(ka)t, ami(k)re hivatkozik, átmásolod a makró lapra.
A képletet tartalmazó cellán állva a cellában a magyar, a szerkesztőlécen az angol megfelelője látszik. -
-
Delila_1
veterán
válasz
poffsoft
#12685
üzenetére
Azt hiszem, rosszul címezted a kérdést. A változók elnevezéséből úgy látom, Fire foglalkozott a kérdéseddel. Visszalapoztam pár napot, de nem találtam az eredetit.
MyFormul$ = ThisWorkbook.Sheets("Éves").Range("K10").Value
MyFormul$=Right(MyFormul$, Len(MyFormul$)-1)Így levághatod a kezdő aposztrófot.
Másik lapra állás: Sheets("Másik").Select
Kijelölés megszüntetése másolás után: Application.CutCopyMode = False
B20-ra állás: Range("B20").Select
-
Delila_1
veterán
Szia Marci!
Jó sokára jelentkeztél az újabb problémával. Itt a kibővített makró:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim név$, email$, sor%, usor%, oszlop As Integer, lapnév$
oszlop = Target.Column
If Target.Column > 2 And Target.Column < 6 Then
Select Case oszlop
Case 3
lapnév$ = "Másolat_1"
Case 4
lapnév$ = "Másolat_2"
Case 5
lapnév$ = "Másolat_3"
End Select
név$ = Cells(Target.Row, 1).Value
email$ = Cells(Target.Row, 2).Value
usor% = Sheets(lapnév$).Range("A" & Rows.Count).End(xlUp).Row + 1
If IsEmpty(Target) Then
For sor% = 2 To usor%
If Sheets(lapnév$).Range("A" & sor%) = név$ And _
Sheets(lapnév$).Range("B" & sor%) = email$ Then
Sheets(lapnév$).Rows(sor%).Delete Shift:=xlUp
Exit Sub
End If
Next
Else
Sheets(lapnév$).Cells(usor%, 1) = név$
Sheets(lapnév$).Cells(usor%, 2) = email$
End If
End If
End Sub -
Delila_1
veterán
válasz
ng0ofy
#12665
üzenetére
Az Array segítségével jelölheted ki az összes munkalapot, és azoknak egy bizonyos celláját.
3 lap esetén egyszerű beírni a makróbaSheets(Array("Munka1", "Munka2", "Munka3")).Select
Range("A1").Select176 lapnál ez már kínos lenne. Inkább indíts egy makrórögzítést, állj az első lapra, majd a Shift lenyomása mellett kattints az utolsó lapra. Az így egyszerre kijelölt lapokon egy bizonyos cellára állva az összes lapon az a cella lesz kijelölve. Ha ebbe a cellába írsz valamit, akár egy képletet, minden lapon szerepelni fog. NE FELJTS EL kilépni a közös kijelölésből!
Ha egy összegző lapon összegezni, átlagolni, vagy bármilyen más műveletet akarsz végezni a többi lap azonos celláiban lévő adatokkal, egyszerűbben is megadhatod. Pl. egy cellában az összes többi lap B20 celláiból ki akarod nyerni a minimum értéket, az összegző lap képlete:
=MIN(Munka1:Munka3!B20). Természetesen a saját lapjaid nevét írd a Munka1 és Munka3 helyére. -
Delila_1
veterán
válasz
Mythunderboy
#12655
üzenetére
Lehet, hogy a védelem beállítása előtt tervező módban hagytad a vezérlőt.
-
Delila_1
veterán
válasz
motinka
#12641
üzenetére
Jobb, ha a teljes átírtat megint berajzolom ide.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sor As Integer, usorH As Integer
Dim WS2 As Worksheet, sorH, f As Boolean
Application.EnableEvents = False
Set WS2 = Sheets("HÓNAP")
usorH = WS2.Range("A1").End(xlDown).Row
sor = 2
f = False
If Target.Address = "$A$2" Then
If Target = "" Then
Range("A2:D5000") = ""
Else
Range("A3:D5000") = ""
For sorH = 2 To usorH
If WS2.Cells(sorH, "A") = Target Then
Cells(sor, "B") = WS2.Cells(sorH, "E")
Cells(sor, "C") = WS2.Cells(sorH, "J")
Cells(sor, "D") = WS2.Cells(sorH, "AI")
sor = sor + 1
f = True
End If
Next
If f = False Then
Range("B2") = "Nincs adat erre a napra"
Range("A2:D5000") = ""
End If
End If
End If
Application.EnableEvents = True
End Sub -
Delila_1
veterán
válasz
rroolleerr
#12639
üzenetére
Nincs mit.
-
Delila_1
veterán
válasz
rroolleerr
#12637
üzenetére
Ezt a makrót rendeld a lapodhoz:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" And IsNumeric(Target) Then _
Range("A2") = Range("A2") + Target
End Sub -
Delila_1
veterán
válasz
motinka
#12635
üzenetére
Szívesen.
A For sorH = 2 To usorH kettesét írd át 1-re.
If Target.Address = "$A$1" Then helyett If Target.Address = "$A$2" Then
Rows("1:5000").Delete helyett Rows("2:5000").Delete
Rows("2:5000").Delete helyett Rows("3:5000").DeleteA lekérdezendő dátumot az A2 cellába írd be.
-
Delila_1
veterán
válasz
motinka
#12627
üzenetére
Valószínű, hogy a két lapodon nem egyformák a dátumokat tartalmazó oszlopok. Elképzelhető, hogy az egyiken szövegként adtad meg az értékeket, nem dátumként.
A "kigyűjtős" laphoz kell rendelned a makrót. Az elején értékadások vannak.
If Target.Address = "$A$1" Then 'ha az A1 cella változik...
If Target = "" Then 'és ez üres (törölted a tartalmát)
Rows("1:5000").Delete 'akkor törli a sorok előző tartalmát
Else 'ha értéket vittél az A1-be...
Rows("2:5000").Delete 'akkor a 2. sortól törli a régi adatokat
For sorH = 2 To usorH 'végig megy a Hónap lap A oszlopán
If WS2.Cells(sorH, "A") = Target Then 'ha ez azonos az 1. lapra bevitt értékkel ...
Cells(sor, "B") = WS2.Cells(sorH, "E") 'az 1. lap akt. sorába másol
Cells(sor, "C") = WS2.Cells(sorH, "J")
Cells(sor, "D") = WS2.Cells(sorH, "AI")
sor = sor + 1
f = True 'ez egy figyelő, ha volt egyezés, True-ra vált
End If
Next
If f = False Then 'ha nem volt egyezés,
Range("B1") = "Nincs adat erre a napra" 'ezt írja az 1. lap B1-be
Range("C1:IV1").Delete 'törli az előző C1:IV1 tartomány tartalmát
End If
End If
End If -
Delila_1
veterán
válasz
archen
#12621
üzenetére
Sub Tartalom()
Dim sor As Integer, oszlop As Integer, uoszlop As Integer, Tartalom As String
uoszlop = Selection.Column - 1
sor = Selection.Row
For oszlop = 1 To uoszlop
Tartalom = Tartalom & Cells(sor, oszlop) & ","
Next
Selection = Left(Tartalom, Len(Tartalom) - 1)
End Sub -
Delila_1
veterán
válasz
csferke
#12614
üzenetére
Nem nézted meg a csatolt képet, pedig ott a K2 és K3 cella éppen azt tartalmazza, amit kértél.
Amit most írsz, körkörös hivatkozást eredményezne. Az A1 cellában akarod megjeleníteni azt az adatot, amit a VLOOKUP az A oszlopban talál.
Tettem az első sorba (A:D) egy autoszűrőt, a G oszlopba pedig egy összefűzést (=A2&" "&D2)
Az érvényesítésben (I1 cella) forrásként a $G$2:$G$6 tartományt adtam meg, mert a 2:6 sorokba írtam adatokat. Az I1-ben történő kiválasztás után az autoszűrő a választás szerint szűri az A:D tartományt. Az I1 törlése esetén minden sor látszik.Nem írtad, hogy az A és D oszlopok közül melyik tartalmazza a város, ill. a cég nevét, ezért 2 makrót írtam. A megfelelőt rendeld a lapodhoz.
Private Sub Worksheet_Change(ByVal Target As Range)
'Város=D oszlop, Cég=A oszlop
Dim betu%, krit
If Target.Address = "$I$1" Then
If IsEmpty(Target) Then
Selection.AutoFilter Field:=1
Exit Sub
Else
Range("A1").Select
For betu% = Len(Target) To 1 Step -1
If Mid(Target, betu%, 1) = " " Then
krit = Left(Target, betu% - 1)
Exit For
End If
Next
End If
Selection.AutoFilter Field:=1, Criteria1:=krit
End If
End SubPrivate Sub Worksheet_Change(ByVal Target As Range)
'Város=A oszlop, Cég=D oszlop
Dim betu%, krit
If Target.Address = "$I$1" Then
If IsEmpty(Target) Then
Selection.AutoFilter Field:=4
Exit Sub
Else
Range("A1").Select
For betu% = 1 To Len(Target)
If Mid(Target, betu%, 1) = " " Then
krit = Right(Target, Len(Target) - betu%)
Range("J2") = krit
Exit For
End If
Next
End If
Selection.AutoFilter Field:=4, Criteria1:=krit
End If
End Sub -
Delila_1
veterán
válasz
motinka
#12610
üzenetére
A kérdéses laphoz rendeld a makrót.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sor As Integer, usorH As Integer
Dim WS2 As Worksheet, sorH, f As Boolean
Application.EnableEvents = False
Set WS2 = Sheets("HÓNAP")
usorH = WS2.Range("A1").End(xlDown).Row
sor = 1
f = False
If Target.Address = "$A$1" Then
If Target = "" Then
Rows("1:5000").Delete
Else
Rows("2:5000").Delete
For sorH = 2 To usorH
If WS2.Cells(sorH, "A") = Target Then
Cells(sor, "B") = WS2.Cells(sorH, "E")
Cells(sor, "C") = WS2.Cells(sorH, "J")
Cells(sor, "D") = WS2.Cells(sorH, "AI")
sor = sor + 1
f = True
End If
Next
If f = False Then
Range("B1") = "Nincs adat erre a napra"
Range("C1:IV1").Delete
End If
End If
End If
Application.EnableEvents = True
End Sub -
-
Delila_1
veterán
válasz
Pityke78
#12603
üzenetére
Vehetsz fel számított mezőt (azt hiszem, így hívják). Ha a két táblázat hányadosát akarod számítani, vagy 2 kimutatást készíts, és úgy számolj, vagy a mezőnevekben utalj a táblázat számára.
F7-tel indul a helyesírás ellenőrzése. A beállításoknál meg tudod adni a nyelvet.
A magyar indítása VB-ben Cells.CheckSpelling SpellLang:=1038, angolé
Cells.CheckSpelling SpellLang:=1033. -
Delila_1
veterán
válasz
Fire/SOUL/CD
#12598
üzenetére
Nem biztos, hogy számot tartalmaz a szűrendő oszlop. A számoknál valóban van, én szöveggel próbáltam, ott nincs. Vajh' miért? (költői kérdés)
-
Delila_1
veterán
válasz
Fire/SOUL/CD
#12595
üzenetére
Igen, arra vonatkozik, de %-ban is meg lehet adni az első. ill. utolsó x%-ot.
2007-ben nincs. -
Delila_1
veterán
Volt itt egy kérdés a 2010-es szűrésre. [link]
Jelenleg nincs 2010-em. A 2003-ban létezik a szűrőben egy Helyezés című, amivel ez könnyen megoldható. A 2007 már nem ad erre módot. A 2010 sem?
Ha nincs, akkor érdemes egy új oszlopot felvenni, ami a sorszámokat tartalmazza [=SOR()], és elsőként ezt az oszlopot szűrni.
-
Delila_1
veterán
válasz
Fire/SOUL/CD
#12591
üzenetére
Ezek a feltételek ÉS kapcsolatban vannak egymással. Ahogy beírtad egyik feltételként a
(HÓNAP(A2:A8)=1) képlet részt, úgy megadhatod másiknak az (ÉV(A2:A8)=2010) -et is.Egyébként szerintem egyszerűbb kimutatással összehozni.
-
Delila_1
veterán
válasz
Fire/SOUL/CD
#12589
üzenetére
Szorzatösszeg függvénnyel akárhány feltételt vihetsz be a mellékelt kép szerint. A feltételeket * (csillag) jellel adod meg egymás után, az összegzendő tartományt a végére írod, pontosvesszővel.
Az "akárhány" úgy értendő, hogy a próbánál ráuntam a 10. feltétel után.


-
Delila_1
veterán
válasz
csferke
#12549
üzenetére
Egy új oszlopban (legyen ez pl. a H) összefűzöd az A és D oszlop adatait. Érdemes a két adat közé elválasztót, mondjuk szóközt tenni.
H2 -> =A2 & " " & D2Ekkor az érvényesítés forrásánál a H oszlop szerepeljen.
K2 -> =VLOOKUP(LEFT($K$1,SEARCH(" ",$K$1)-1),A:D,2,0)
K3 -> =VLOOKUP(LEFT($K$1,SEARCH(" ",$K$1)-1),A:D,3,0) -
Delila_1
veterán
válasz
Fire/SOUL/CD
#12541
üzenetére
És mi van, ha az I5 pl. 9. hónapot tartalmaz?
-
Delila_1
veterán
válasz
Fire/SOUL/CD
#12535
üzenetére
Hát ez az! Pontatlan a kérdés feltevése. Az is lehet, hogy nem 2 tizedesre kell kerekíteni.

-
Delila_1
veterán
válasz
m.zmrzlina
#12532
üzenetére
Közben én is összehoztam, a SZUM tartományát egy kicsit egyszerűsítve
=KEREK.LE(SZUM(C29:F29;I29;L29;O29;R29;U29;X29;AA29;AD29;AG29:AL29)*B29;2)
-
Delila_1
veterán
-
Delila_1
veterán
A makró:
Sub Lapokra()
Dim lap%, sor%, usor%, sor_lap%
Sheets("Tábla").Select
'Lapok eddigi adatainak törlése
For lap% = 2 To 13
Sheets(lap%).Rows("2:1000").Delete
Next
'Sorok a lapokra
usor% = Range("A1").End(xlDown).Row
For sor% = 2 To usor%
lap% = Month(Cells(sor%, 1)) + 1
sor_lap% = Sheets(lap%).Range("A10000").End(xlUp).Row + 1
Rows(sor%).Copy Sheets(lap%).Cells(sor_lap%, 1)
Next
End SubAz első lap a Tábla nevű, amit a Sheets("Tábla").Select sorban átírhatsz a saját lapod nevére. Ezután következik a 12 hónapot tartalmazó lapod.
-
Delila_1
veterán
válasz
poffsoft
#12480
üzenetére
Makróíráshoz, ami figyeli a bevitel helyét, tudnom kellene, melyik oszlopról van szó, de ezt nem adtad meg. Őszintén szólva az egész leírás kicsit zavaros nekem.
Írtam egy makrót, ami a 2. laptól (az első lap a januári adatokat tartalmazza) a 12-ig a C2:C30 tartományba beírja az előző lap C2:C30 értékeit hivatkozással. Hátha hasznodra válik.
Sub keplet()
Dim lap%
For lap% = 2 To 12
Sheets(lap%).Select
Range("C2:C30") = "=" & Sheets(lap% - 1).Name & "!C2"
Next
End Sub -
Delila_1
veterán
válasz
m.zmrzlina
#12457
üzenetére
"ha már a Cells van használatban akkor a "B" helyett (második argumentum) én 2-t használnék"
Mostanában szoktam rá, hogy "B"-t használok inkább, mint oszlopszámot. 2-nél még könnyen követhető, de pl. 179-nél egy javításnál egyszerűbb követni a betűvel – FW – jelölt oszlop átírása.
-
Delila_1
veterán
válasz
jani-wan
#12453
üzenetére
Mikor sorokat töröltetsz, az oszlop aljától felfelé kell elindulni, másképpen kimaradnak a vizsgálatból bizonyos sorok.
Ez a makró a második sortól – címsort feltételezve – törli azokat a sorokat, ahol a B oszlopban kisebb dátum szerepel, mint az E1 cellában.
Sub DeleteRowbyDate()
Dim so As Long
For sor = ActiveSheet.UsedRange.Rows.Count To 2 Step -1
If Cells(sor, "B") < Range("E1") Then
Rows(sor).EntireRow.Delete
End If
Next
End SubAz ActiveSheet.UsedRange.Rows.Count a lapon létező utolsó sor számát adja.
Ha több sor van a lapon valamelyik oszlopban, mint a B-ben, a fenti helyett ezt írd: Range("B1").End(xlDown).Row -
Delila_1
veterán
válasz
poffsoft
#12449
üzenetére
Az előző lap kódnevét pl. így kaphatod meg:
lap = ActiveSheet.CodeName
lap = "Munka" & Right(lap, Len(lap) - 5) - 1
MsgBox lapNem szerencsés dolog aktív cellára hivatkozni makróban, mert ha véletlenül másik cellára kattintasz a makró indítása előtt, hamis eredményt kapsz.
Írd le pontosan, mit szeretnél elérni a makróval.
-
Delila_1
veterán
Az indító lapodhoz rendeld a kódot. A lapon bármit beírva a Q oszlopba a nevet és az email címet átmásolja a "Másolat" lap A és B oszlopába, az utolsó kitöltött sor alá.
Az első lapon a "bármi"-t törölve a Q oszlopból, törlődik a két adat sora a "Másolat" lapról.
Jól mutat, ha az első lap Q oszlopát Wingdings-re állítod, és jelölésnek ü karaktert viszel be, ami egy pipa jelet ad.Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 17 Then
Dim név$, email$, sor%, usor%, WS2 As Worksheet
Set WS2 = Sheets("Másolat")
név$ = Cells(Target.Row, 1).Value
email$ = Cells(Target.Row, 3).Value
usor% = WS2.Range("A" & Rows.Count).End(xlUp).Row + 1
If IsEmpty(Target) Then
For sor% = 2 To usor%
If WS2.Range("A" & sor%) = név$ And WS2.Range("C" & sor%) = email$ Then
WS2.Rows(sor%).Delete Shift:=xlUp
Exit Sub
End If
Next
Else
WS2.Cells(usor%, 1) = név$
WS2.Cells(usor%, 2) = email$
End If
End If
End SubA Set WS2 = Sheets("Másolat") sorban adhatod meg a saját lapod nevét a Másolat helyett.
-
Delila_1
veterán
válasz
poffsoft
#12441
üzenetére
Ha 10 alatt van a LAPok száma, ez is megoldás lehet:
ActiveCell.Select
x = "LAP" & Right(ActiveSheet.Name, 1) - 1
ActiveCell.FormulaR1C1 = "=" & x & "!RC[34]"
ActiveCell.Offset(1, 0).Range("A1").Selectde biztosan van egyszerűbb kivitel. Minden esetben az A2 cellára kell állni a futtatás után?
Új hozzászólás Aktív témák
- One otthoni szolgáltatások (TV, internet, telefon)
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- Telekom mobilszolgáltatások
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Nothing Phone (3a) Lite – mennyit ér a név?
- Milyen routert?
- A fociról könnyedén, egy baráti társaságban
- Elemlámpa, zseblámpa
- További aktív témák...
- GYÖNYÖRŰ iPhone 13 mini 128GB Starlight -1 ÉV GARANCIA -Kártyafüggetlen, MS3893, 100% Akkumulátor
- Xbox Game Pass Ultimate előfizetések kedvező áron
- Telefon felvásárlás!! Huawei P20 Lite/Huawei P20/Huawei P30 Lite/Huawei P30/Huawei P30 Pro
- 2db x Green Cell UPS 2000VA 1200W teljesítményálló tartalék tápegység 2000VA 1200W
- REFURBISHED - Lenovo ThinkPad 40A9 USB-C Dock (ELKELTEK) - CSAK RENDELÉSRE
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

![;]](http://cdn.rios.hu/dl/s/v1.gif)




Fferi50
