-
Fototrend
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
2016-os verziónál van egy ilyen lehetőség:
Beírod a kérdéses oszlop melletti első cellába a szöveget a SZÁM NÉLKÜL, majd ezen a cellán állva
Kezdőlap | Szerkesztés csoport | Kitöltés | VillámkitöltésNézd meg ezt a nagyszerű videót, amit Kovalcsik Géza állított össze a villámkitöltéssel kapcsolatban.
-
Delila_1
veterán
válasz
hallgat
#36579
üzenetére
Az Immediate ablakba (Ctrl+g-re bújik elő a VB szerkesztőben) írd be:
?activecell.interior.colorindex
Nekem van egy kis makróm a personalban (lásd a téma összefoglalót), amihez a gyorselérési eszköztárra kitettem egy ikont. Ez egy üzenetben megadja a háttér és a font színkódját, RGB-ben is.
Sub Szin_lekerdezes()
Dim Rh As Integer, Gh As Integer, Bh As Integer
Dim Rk As Integer, Gk As Integer, Bk As Integer
Dim hatter, karakter
hatter = Selection.Interior.Color
karakter = Selection.Font.Color
Rh = hatter Mod 256
Gh = (Int(hatter / 256)) Mod 256
Bh = Int(hatter / 256 ^ 2)
Rk = karakter Mod 256
Gk = (Int(karakter / 256)) Mod 256
Bk = Int(karakter / 256 ^ 2)
MsgBox "Háttér RGB: " & Rh & ", " & Gh & ", " & Bh & vbLf & _
"Karakter RGB: " & Rk & ", " & Gk & ", " & Bk & vbLf & vbLf & _
"Háttér színkód: " & Selection.Interior.ColorIndex & vbLf & _
"Karakter színkód: " & Selection.Font.ColorIndex
End Sub -
Delila_1
veterán
válasz
hallgat
#36572
üzenetére
Jelöld ki a tartományt, majd futtasd az alábbi, modulba másolt makrót:
Sub NoPiros()
For Each CV In Selection
If CV.Interior.ColorIndex = 3 Then
Range(CV.Address).Delete shift:=xlToLeft
End If
Next
End SubAhol egymás mellett több piros hátterű cella is van, a második megmarad, újbóli futtatás rendbe teszi.
-
Delila_1
veterán
válasz
Ghoosty
#36545
üzenetére
NE képlettel, hanem makróval fűzd össze a cellákat, akkor már lehet formázni cellán belül is a karaktereket. A fájlnak is jót tesz, ha a sok képlet helyett értékek szerepelnek.
Sub Felkover()
Range("C1") = Range("A1") & " " & Range("B1")
Range("C1").Characters(Len(Range("A1")) + 2, Len(Range("B1"))).Font.Bold = True
End SubA 2. sor végzi a formázást. Az első paraméter – Len(Range("A1")) + 2 – adja meg, hányadik karaktertől legyen a C1 tartalma fékövér, a második – Len(Range("B1")) – pedig azt, hogy milyen hosszan.
Ciklusban is elvégezheted az összefűzést, és a formázást.
-
Delila_1
veterán
válasz
ben800
#36530
üzenetére
Gyors kérdésre gyors válasz: nem. A szumhatöbb kritériumai ÉS kapcsolatban vannak egymással.
Felvehetsz egy új oszlopot, ahova VAGY-gyal beteszed a két feltételt, és értéket (0; 1) rendelsz hozzá, majd a szumhatöbb függvénnyel erre az oszlopra hivatkozol.
=ha(vagy(a1=1;a1=2);1;0)
-
Delila_1
veterán
válasz
glocker
#36527
üzenetére
Sajnos az Excel alkotói túlságosan segítőkészek, ami sok galibát okoz. Például egy felsoroláshoz beírsz 1.1-et, mire azonnal átalakítja kérdés nélkül 01.jan-ra, mert arra tippel, hogy dátumot szerettél volna megadni.
Azért javasoltam a 0000#-os formátumot, mert bár megadod, hogy bizonyos cellák adatait szövegként értelmezze, ha az a fehérnemű van rajta, mégis számértékként rögzíti.
-
Delila_1
veterán
válasz
m.zmrzlina
#36465
üzenetére
Set honnanvegye = Application.InputBox("Jelöld ki a kiinduló területet", "Kiinduló terület", , , , , , 8)Az utolsó paraméter (type, jelen esetben 8) adja meg, hogy területet vár az inputbox, ezért kell az értékadás elején a Set
Különböző típusú adatok bekérésénél az utolsó paraméter:
Type:=0 képlet
Type:=1 szám
Type:=2 szöveg
Type:=4 logikai, true vagy false
Type:=8 cellahivatkozás (range)
Type:=16 hibaérték, mint #érték
Type:=64 tömb érték (array) -
Delila_1
veterán
válasz
ny.erno
#36462
üzenetére
A C2-be írd be a lenti képletet, amiben a saját keresett kifejezéseidet adod meg.
=HAHIBA(SZÖVEG.KERES("zöldség";B2);0)+HAHIBA(SZÖVEG.KERES("fehérje";B2);0)+HAHIBA(SZÖVEG.KERES("gabona";B2);0)+HAHIBA(SZÖVEG.KERES("termesztés";B2);0)+HAHIBA(SZÖVEG.KERES("szántóföld";B2);0)Az eredmény egy szám lesz. Azokban a sorokban, ahol egyik kifejezés sem található meg, ez a szám nulla lesz. Szűrhetsz a C oszlop alapján.
Gondolom, legalább 2007-es verziót használsz, bár a fájl kiterjesztése xls. A "Szövegből oszlopok" menüpont az előző, 2003-as verzióban még nem állt rendelkezésre, mint ahogy a HAHIBA függvény sem.
-
Delila_1
veterán
válasz
kisgyerek983
#36457
üzenetére
Nincs mit.

-
Delila_1
veterán
válasz
kisgyerek983
#36454
üzenetére
Legutóbb itt volt erről szó.
-
Delila_1
veterán
válasz
lenkei83
#36429
üzenetére
Egyszerűbb összehozni, mint elmesélni.
A lényeg, hogy a szűrt listát átmásolod valahova, és ennek az új tartománynak a címét adod meg szöveges értékként a ComboBox RowSource tulajdonságaként.
-
Delila_1
veterán
válasz
Talala
#36426
üzenetére
Ezt egy rövid, laphoz rendelt makróval (lásd a Téma összefoglalót) lehet elérni.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target <> "" Then
Cells(Target.Row, "B") = Date
End If
End SubAz If Target.Column = 1 jelzi a makrónak, hogy az első (A) oszlopba írás esetén írja be a dátumot.
Ha nem a B oszlopba akarod íratni, a Cells(Target.Row, "B") = Date sorban a "B" helyére írd a céloszlop betűjelét. -
Delila_1
veterán
válasz
ben800
#36400
üzenetére
Szia!
Sub adatpotlas()
Dim sor As Long, usor As Long, FN As String
Const utvonal = "F:\Mappa1\" '******** 1 ********
Dim Fotabla As Worksheet, WF As WorksheetFunction, talalt As Variant
Set Fotabla = ActiveWorkbook.Sheets(1) '******** 2 ********
Set WF = Application.WorksheetFunction
FN = Dir(utvonal & "*.xlsx", vbNormal)
Do While FN <> ""
Workbooks.Open Filename:=utvonal & FN
Sheets(1).Activate '******** 3 ********
usor = Cells(Rows.Count, 2).End(xlUp).Row
For sor = 2 To usor
If WF.CountIf(Fotabla.Columns(4), Cells(sor, "B")) > 0 Then
talalt = WF.Match(Cells(sor, 2), Fotabla.Columns(4), 0)
If Cells(sor, "F") > "" Then
Fotabla.Range("H" & talalt) = utvonal & " " & FN '******** 4 ********
Fotabla.Range("I" & talalt) = Cells(sor, "F")
End If
End If
Next
ActiveWorkbook.Close False
FN = Dir()
Loop
End SubAz összesítő füzetben másold egy modulba a makrót.
Csillagos sorok:
1. a saját útvonaladat írd az "F:\Mappa1\" helyére
2. ha az összesítő füzetnek nem az első lapjára kell a kigyűjtés, a zárójelbe a valós sorszámot-, vagy idézőjelek közé a lapnevet írd be Set Fotabla = ActiveWorkbook.Sheets("Munka1")
3. a 2-es pont vonatkozik a megnyitott füzetekre is
4. a H oszlopba most találat esetén a találat mappáját és füzetének a nevét írja. Ehelyett lehet Fotabla.Range("H" & talalt) = "Megvan" -
Delila_1
veterán
-
Delila_1
veterán
-
Delila_1
veterán
válasz
maestro87
#36362
üzenetére
Szomorú.

Készíts kimutatást (pivot), ahol a sorcímkékhez az A, értékekhez a B oszlopot teszed be. Az értékmező beállításoknál az utóbbi minimumra legyen állítva.
Ha szükséges, a kimutatásból FKERES (VLOOKUP) függvénnyel az eredeti táblázat minden sorába beírhatod a min. értéket a C oszlopba.
-
Delila_1
veterán
válasz
tzimash
#36335
üzenetére
A laphoz rendelve
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$3" Then CommandButton1_Click
End SubSzerk.:
A lap ScrollArea tulajdonságánál megadhatod a bejárható területet: $B$3:$E$3. Csak a 2 kiemelt cellában tud majd mozogni, mert a lapvédelemnél a zárolt cellák kijelölését nem engedélyezed.
A B3 bevitelnél a jobb-, az E3-nál a bal nyilat használd!
-
Delila_1
veterán
válasz
Pakliman
#36324
üzenetére
Feltöltök egy fájlt.
A Warning makróThisWorkbook.Close SaveChanges:=True 'Falsesora a 40 mp elteltével menti, és bezárja a füzetet.
Ha azt akarod, hogy felelősségre vonják a delikvenst, írd át, legyen a sorThisWorkbook.Close FalseEkkor mentés nélkül záródik be a füzet.
-
Delila_1
veterán
válasz
Ada Wong
#36318
üzenetére
Makróval egyszerűen megoldható.
A ThisWorkbookba ezt tedd:
Private Sub Workbook_Open()
Start
End SubEgy modulba pedig:
Sub Start()
Application.OnTime Now + TimeValue("00:00:40"), "Riado" '*********
End SubSub Riado()
Dim v
Beep
Workbooks("Idozito.xls").Activate
v = MsgBox("Használod a füzetet?", vbYesNo + vbQuestion)
If v = vbNo Then
ActiveWorkbook.Save
ActiveWindow.Close
Else
Start
End If
End SubA csillagokkal jelzett sorban állíthatod be, milyen időközönként kelljen ráklikkelnie a renitens dolgozónak. Most 40 mp-enként kapja a felszólítást.
-
Delila_1
veterán
Szia!
A Beszúrás menüben táblázattá alakítod a naplódat, és ebből készíted a diagramot. Ezzel eléred a rugalmas terület-kezelést.
Mivel a táblázattá alakított tartomány új sorai öröklik a fölöttük lévő sorok formátumait (képleteit, érvényesítéseit), az egyes oszlopokra feltételes formátumot tennék az x érték fölötti (alatti) cellák színezésére.
-
Delila_1
veterán
válasz
jackal79
#36282
üzenetére
Nem bonyolult. Megadod, melyik terület adatait kell törölni, például A2:V6000.
A makró ennyi
Sub Torles()
ActiveSheet.Range("A2:V6000").ClearContents
End Subamit modulba mentesz (lásd a Téma összefoglalót).
Állsz azon a lapon, ahol törölni akarsz, Alt + F8-ra megjelennek a makróid, ahol indítod a Torles nevűt.
-
-
Delila_1
veterán
válasz
föccer
#36267
üzenetére
A Kr1:Kr4 (kritériumok) változóknál a helyfoglalásnál nem állítottam be a típust (string, double, boolean, date, stb. lehet)
Az adatokat tartalmazó listát táblázattá alakítottam, a neve Adatok.
Sub Szures()
Dim Kr1, Kr2, Kr3, Kr4
Kr1 = Range("L1"): Kr2 = Range("L2"): Kr3 = Range("L3"): Kr4 = Range("L4")
' Inputboxban is bekérheted a szűrő feltételeket
ActiveSheet.Range("Adatok").AutoFilter Field:=1, Criteria1:=Kr1 'A oszlop szűrése
ActiveSheet.Range("Adatok").AutoFilter Field:=3, Criteria1:=Kr2 'C oszlop szűrése
ActiveSheet.Range("Adatok").AutoFilter Field:=5, Criteria1:=Kr3 'E oszlop szűrése
ActiveSheet.Range("Adatok").AutoFilter Field:=6, Criteria1:=Kr4 'F oszlop szűrése
End SubSub Szuro_Reset()
ActiveSheet.Range("Adatok").AutoFilter Field:=1
ActiveSheet.Range("Adatok").AutoFilter Field:=3
ActiveSheet.Range("Adatok").AutoFilter Field:=5
ActiveSheet.Range("Adatok").AutoFilter Field:=6
' Az ActiveSheet.ShowAllData utasításnál minden adat látszik, de
' a szűrő feltételek megmaradnak. Ekkor a sorazonosítók kék színűek
End SubSub Szurt_Oszlop_Masolasa()
Sheets("Munka2").Columns(1).ClearContents 'előző másolat törlése
Range("B1:B" & Range("B1").End(xlDown).Row).Copy Sheets("Munka2").Range("A1")
End SubSub Rejtett_e()
If Rows(7).Hidden = True Then
MsgBox "Rejtett"
Else
MsgBox "Ne rejtett"
End If
End SubSub Szuro_ki_bekapcs()
Range("A1").Select
ActiveCell.CurrentRegion.AutoFilter
End Sub -
Delila_1
veterán
válasz
jackal79
#36257
üzenetére
A cellák egyesítését engedi az Excel, de nem tudja rendesen kezelni, például az általad írt rendezésnél. Nincs más hátra, meg kell szüntetni az egyesítést, és más módszert találni az adatok átlátható megjelenítéséhez.
Az utolsó módosítást csak makróval lehet figyeltetni, viszont feltételes formázással adhatunk feltűnő formázást, ha dátumokat figyeltetünk. Például az A oszlopban vannak dátumok, és itt kell figyelni, hogy régebbiek-e ezek a mai dátumnál 30 nappal. Ekkor a feltételes formázás képlete
=A1<=MA()-30
amihez feltűnő formázást rendelsz.
-
Delila_1
veterán
válasz
Nixon18
#36247
üzenetére
Lehet, hogy nem erre gondolsz, de azért leírom.
Nem szükséges makróval elintézni, egyszerűen megoldható anélkül is.
A különböző tartományoknak nevet adsz.
Az F2:F3 nálam a "kategóriák" névre hallgat.
Fontos, hogy az allisták azt a nevet kapják, amelyik főlista-beli kategóriába tartoznak. A H2:H8 tartomány neve gyümölcs, a J2:J10-é zöldség. A tartományokat táblázattá alakítottam, így bővítéskor, szűkítéskor az elnevetett tartományok rugalmasan követik a sorok számát.
Az elnevezések nevében nem lehet szóköz, és nem szerepelhet önállóan számjegy.Az első érvényesítés a C2 cellában van, a lista forrása: =kategóriák
A D2-es érvényesítésnél a forrás: =INDIREKT(C2)

-
Delila_1
veterán
-
Delila_1
veterán
válasz
kvoaksz
#36142
üzenetére
Ráállsz egy cellára, amiben az Alt+Enteres sortörés van.
A szerkesztőlécen a 2. sor elejére lépsz, majd Shift + balra nyíllal kijelölöd az elválasztó karaktert, másolás (Ctrl+C). Látszólag semmi nem történik, nem látszik a kijelölés.
Belépsz a Csere funkcióba. A Keresett szövegnél Ctrl+V-vel beillesztetd azt a bizonyos elválasztó karaktert, a Csere erre rovatba meg adsz egy szóközt. Mehet Az összes cseréje.
-
Delila_1
veterán
válasz
attrax
#36118
üzenetére
Az érvényesítésben lévő karakterek méretét az Excel állítja be fixen, nem lehet rajta módosítani.
Volt egy olyan eset itt a fórumon, hogy valaki óriásira állította a lapon a betűk méretét, ehhez képest az érvényesítés szövege eltörpült. A lap nagyítását a kérdező kicsire vette, hogy a hatalmas betűk elférjenek a képernyőn. Az óriás karakterek méretét levettem 10-12-esre, a lap nagyítását normálisra állítottam, így az érvényesítés szövege is olvasható lett.
-
Delila_1
veterán
válasz
szente
#36099
üzenetére
Másold modulba (lásd Téma összefoglaló) a lenti makrót.
Sub Mi_Nincs()
Dim sor As Long, usor As Long, sor1 As Long
Dim WSKis As Worksheet, WSNagy As Worksheet
Set WSKis = Sheets("Kisker")
Set WSNagy = Sheets("Nagyker")
usor = WSNagy.Range("A" & Rows.Count).End(xlUp).Row
sor1 = WSKis.Range("A" & Rows.Count).End(xlUp).Row + 1
For sor = 2 To usor
If Application.WorksheetFunction.CountIf(WSKis.Columns(1), _
WSNagy.Cells(sor, 1)) = 0 Then
WSKis.Cells(sor1, "A") = WSNagy.Cells(sor, 1)
WSKis.Cells(sor1, "B") = WSNagy.Cells(sor, 2)
sor1 = sor1 + 1
End If
Next
End Sub -
Delila_1
veterán
válasz
total90
#36093
üzenetére
Készítesz az A oszlopról egy másolatot, ezen alkalmazod az "Ismétlődések eltávolítása" funkciót, majd nagyság szerint rendezed ezt az új oszlopot.
Megismétled a fentieket a B oszloppal is. Ezután egyszerű az összehasonlítás.Vagy feltételes formázást adsz az A oszlopra. A képlet =DARABTELI($B:$B;A1)>0,
a B oszlopra pedig =DARABTELI($A:$A;B1)>0 -
Delila_1
veterán
válasz
Mela Kehes
#36053
üzenetére
Törölve.

-
Delila_1
veterán
A belinkelt makrót nem eszi meg az Excel. Helyette
Sub CopyHyperlinks()
Dim Innen As Range, Ide As Range, sor As Integer, ujcim As String
On Error Resume Next
Set Innen = Application.InputBox("Jelöld ki a másolandó területet", "Másolandó terület", , , , , , 8)
If Innen Is Nothing Then Exit Sub
Set Ide = Application.InputBox("Jelöld ki a területet, ahova másolni kell", "Ide kell másolni", , , , , , 8)
If Ide Is Nothing Then Exit Sub
For sor = 1 To Innen.Count
If Innen(sor).Hyperlinks.Count = 1 Then
Ide(sor).Hyperlinks.Add Ide(sor), Innen(sor).Hyperlinks(1).Address
ujcim = Chr(64 + sor) & Chr(64 + sor) & Chr(64 + sor)
Ide(sor).Hyperlinks(1).TextToDisplay = ujcim
End If
Next
End SubAz eredeti makró (Excel VBA-hoz igazítva) azonos a Ctrl-c, Ctrl+V-vel. Az általam írt a másolatnak más megjelenő címet ad.
-
Delila_1
veterán
válasz
Mela Kehes
#36055
üzenetére
Folytassuk privátban!
-
Delila_1
veterán
válasz
Mela Kehes
#36053
üzenetére
Userformon duplaklikk.
-
Delila_1
veterán
válasz
Mela Kehes
#36051
üzenetére
Megnyitod a füzetet, amit belinkeltem. Bekéri a jelszót. Add meg a Pál nevet (ez a legrövidebb
).
A Munka4 lap lesz látható.Most Alt + F11-gyel belépsz a VB szerkesztőbe. Bal oldalon kiválasztod a sárga hátterű UserForm1-et, majd jobb oldalon a Belépés gombon egy duplaklikk bevisz a gomb makrójába. Itt írd át a Case utasításokat. Bővítheted az utasítások számát.
-
Delila_1
veterán
válasz
Mela Kehes
#36049
üzenetére
Nem módosul, bármelyik változat jó lesz.
-
Delila_1
veterán
válasz
Mela Kehes
#36047
üzenetére
FFeri ötlete alapján jelszavas belépést állítottam össze. [link].
Behíváskor indul a UserForm1. A Jelszo nevű TextBoxba beírt érték alapján láthatóvá teszi azt a lapot, amit a jelszó tulajdonosa láthat, a többit elrejti.
-
Delila_1
veterán
válasz
Mela Kehes
#36044
üzenetére
Egy kis makró, amit a ThisWorkbook laphoz rendelsz a VB szerkesztőben, megoldja.
Private Sub Workbook_Open()
Dim lapnev As String, lap As Integer
Select Case Environ("Username")
Case "Jancsi"
lapnev = "Munka1"
Case "Juliska"
lapnev = "Munka2"
Case "Péter"
lapnev = "Munka3"
Case "Pál"
lapnev = "Munka4"
End Select
For lap = 1 To Sheets.Count
Sheets(lap).Visible = xlSheetVisible
Next
For lap = 1 To Sheets.Count
If Sheets(lap).Name <> lapnev Then Sheets(lap).Visible = xlSheetVeryHidden
Next
Application.ScreenUpdating = True
End SubA füzet megnyitásakor automatikusan elindul. Az egyes nevekhez (Case "Jancsi") a valódi felhasználó nevét írd be, ahogy a gépe el van nevezve. A lapnev="Munka1" helyére annak a lapnak a nevét add meg, amit a felhasználó láthat.
-
Delila_1
veterán
válasz
lenkei83
#36029
üzenetére
Az L-M oszlopba írja ki az egyes megnevezésekhez tartozó összegeket.
Sub Kigyujtes()
Dim usor As Long
Columns(1).Copy Range("L1")
usor = Range("L" & Rows.Count).End(xlUp).Row
ActiveSheet.Range("L1:L" & usor).RemoveDuplicates Columns:=1
usor = Range("L" & Rows.Count).End(xlUp).Row
Range("M1:M" & usor) = "=sumif(A:A,L1,B:B)"
End Sub
Új hozzászólás Aktív témák
- Kés topik
- Apple iPhone Air - almacsutka
- Crimson Desert - Íme a végleges gépigény
- exHWSW - Értünk mindenhez IS
- EAFC 26
- A NetEase kiszállhat a Gang of Dragon mögül
- Anime filmek és sorozatok
- Milyen NAS-t vegyek?
- Kész rémálom lesz Linuxot használni jövőre az USA egyes államaiban
- Autós topik
- További aktív témák...
- ÁRGARANCIA!Épített KomPhone Ryzen 5 5600X 16/32/64GB RAM RX 9060 XT 8GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! MSI B760 i7 12700K 64GB DDR4 512GB SSD RX 7800XT 16GB Zalman S2 TG GIGABYTE 750W
- -68%OFF HP Spectre x360 14 (14-ef2276ng) i7-1355U/16GB/1TBSSD/3K 3000X2000 Amoled
- Apple iPhone 12 128GB,Újszerű,Dobozaval,12 hónap garanciával
- Azonnali készpénzes nVidia RTX 4000 sorozat videokártya felvásárlás személyesen / csomagküldéssel
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest







