Hirdetés
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- D@reeo: Pi-hole és a Telekom Sagemcom F@st 5670 DNS beállítása
- sziku69: Fűzzük össze a szavakat :)
- Brogyi: CTEK akkumulátor töltő és másolatai
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- bb0t: Ikea PAX gardrób és a pokol logisztikája
- GoodSpeed: A RAM-válság és annak lehetséges hatásai
- bambano: Bambanő háza tá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
dellfanboy
#21077
üzenetére
Nyitva kell lennie. Az Excelből nem is látod, mert rejtett füzetként jelenik meg, csakis a VBE-ben látszik.
-
Delila_1
veterán
válasz
dellfanboy
#21074
üzenetére
Mivel a makrót a personalba tetted, igen, normális. No de miért zárod be a personalt?

-
Delila_1
veterán
válasz
alfa20
#21069
üzenetére
Gondolom, a label nem tartalmazza a kiterjesztést.
A makró további részét egyszerűsítheted. A select utasítások nem szükségesek, és lassítják a futást.
Dim oszlop As Long
Rows("1:2").Delete shift:=xlUp
Rows("1:1").NumberFormat = "@"
For oszlop = 1 To 27: Cells(1, oszlop) = oszlop & "": Next -
-
Delila_1
veterán
válasz
soundsthu
#21053
üzenetére
"alma" helyett a kritérium "*alma*" legyen. A csillag helyettesítő karakter, ami azt jelöli, hogy az alma szó előtti és mögötti akárhány karaktert ne vegye figyelembe a képlet. Ez számol azokkal a cellákkal, amiknek tartalma például az "alma", "almafa", "kivirágzott az almafa", stb.
Másik helyettesítő karakter a kérdőjel, ez csak 1 karaktert helyettesít. A "b?mba" kritérium megtalálja a bomba, és a bamba szót.
-
Delila_1
veterán
válasz
Geryson
#21031
üzenetére
Szia!
A lapokat elrejtheted. Ha úgy gondolod, hogy ezt könnyen felfedik, a VBA szerkesztőben szigorúbb tiltást adhatsz. Lapfülön jobb klikk, Kód megjelenítése. Ha nem látszik a Properties menü bal oldalon, akkor a View menüből megnyitod.
Az utolsó paraméter a lap láthatósága (visible), ezt weryhidden-re állítva a lap a füzetből nem, csak a VB szerkesztőből tehető ismét láthatóvá.
Másik kérdés:
A HOL.VAN függvény megadja az utolsó kitöltött sorod számát, ha olyan nagy számot kerestetsz vele, amilyen biztosan nincs az adataid között.Vegyük, hogy az árfolyamok a B oszlopban vannak, a képlet:
HOL.VAN(10000;B:B;1)Ezt beágyazzuk az INDIREKT függvénybe, ami megadja a tartományt az átlag kiszámításához:
INDIREKT("B2:B" & HOL.VAN(10000;B:B;1))Utolsó lépésként jön az ÁTLAG függvénybe történő beágyazás:
=ÁTLAG(INDIREKT("B2:B" & HOL.VAN(10000;B:B;1))) -
Delila_1
veterán
válasz
ccs2929
#21026
üzenetére
Nézd meg a 21024-es választ, abban találsz az FKERES függvényre idevágó példát.
Nálad a segédtábla első oszlopa a mintád szerint a számokat tartalmazza 1-től 12-ig, a második pedig a számokhoz tartozó betűt. Mindegyik szám mellé be kell írnod a betűt, ne összevont cellákban egyszerre add meg, az hibát okoz.
-
Delila_1
veterán
Nézd meg a "szövegből oszlopok" funkciót, az segít szétszedni az adatokat.
Mikor szétszedted oszlopokba a cella értékeit, összeállítasz egy segédtáblát, ami az egyes betűkhöz tartozó számértékeket tartalmazza. A képen ez nálam az M1:N5 tartomány.
A számokat a G2 cellába írt, és a mellette-, alatta lévőkbe másolt képlet állítja elő.

-
Delila_1
veterán
Az első üres oszlop 2. sorába (címsort feltételezve) beviszed a =DARABTELI(B$2:B2;B2) képletet, és lemásolod a többi sorod mellé. Ügyelj a $ jelre.
Ez az oszlop megmutatja soronként, hogy a cikkszámod hányadik alkalommal szerepel a B oszlopban. A cikkszámos oszlopot szűröd, és megkapod az eredményt.
-
Delila_1
veterán
válasz
SkizoFreen
#20953
üzenetére
A törlés, és az oszlopszélesség egységben írd át az oszlopazonosítókat a saját igényeidnek megfelelőre.
Sub Atszerkesztes()
'Áthelyezés
Columns("G:H").Cut
Columns("D:E").Insert Shift:=xlToRight
'Törlés
Range("M:M,Q:Q,T:T").Delete Shift:=xlToLeft
'Oszlopszélesség
Columns("A:R").EntireColumn.AutoFit
End Sub -
Delila_1
veterán
válasz
#02644736
#20954
üzenetére
Ez változik:
If f Then
Range("K" & usor) = TextBox11 + 1 & "/" & Year(Date)
Else
Range("K" & usor) = TextBox11 & "/" & Year(Date)
End IfNem írtad, mihez kell a range. Feltételezem, hogy a formon lévő listboxhoz, vagy comboboxhoz, vagy egyéb, listát tartalmazó objektumhoz.
Private Sub UserForm_Activate()
Dim usor As Long
usor = Sheets("Munka1").Range("A" & Rows.Count).End(xlUp).Row
ComboBox1.List = Sheets("Munka1").Range("A2:A" & usor).Value
End SubA ComboBox1.List = Sheets("Munka1").Range("A2:A" & usor).Value sort bemásolhatod az előbbi makró végére is, hogy a lapra felírás után frissüljön a lista.
-
Delila_1
veterán
válasz
#02644736
#20949
üzenetére
Az A oszlop formátuma legyen Normál"/XY", a K-é pedig szöveg.
A makróban az A oszlopba írandó adatot számként mentem (TextBox1*1), a többit szövegként. A textbox, mint a neve is mutatja, szöveges értéket ad alapból. Ha számként akarod menteni valamelyik adatot, szoroznod kell a felíráskor 1-gyel.
10 db textboxba viszem be az adatokat a formon (A:J oszlop), a K oszlop adatát a TextBox1 értéke adja.
Private Sub CommandButton1_Click()
Dim sor As Long, usor As Long, kezd As Long, WF As WorksheetFunction, f As Boolean
Set WF = Application.WorksheetFunction
f = False
Sheets("Munka1").Activate
If WF.CountIf(Columns(1), TextBox1 * 1) > 0 Then
kezd = WF.Match(TextBox1 * 1, Columns(1), 0) + 1
usor = Range("A" & Rows.Count).End(xlUp).Row
For sor = kezd To usor
Cells(sor, "A") = Cells(sor, "A") + 1
Cells(sor, "K") = Cells(sor, "A") & "/" & Year(Date)
Next
f = True
Else
usor = Range("A" & Rows.Count).End(xlUp).Row + 1
End If
'Adatbevitel a Munka1 lapra
If f Then
usor = usor + 1
Range("A" & usor) = TextBox1 * 1 + 1
Else
Range("A" & usor) = TextBox1 * 1
End If
Range("B" & usor) = TextBox2
Range("C" & usor) = TextBox3
Range("D" & usor) = TextBox4
Range("E" & usor) = TextBox5
Range("F" & usor) = TextBox6
Range("G" & usor) = TextBox7
Range("H" & usor) = TextBox8
Range("I" & usor) = TextBox9
Range("J" & usor) = TextBox10
If f Then
Range("K" & usor) = TextBox1 + 1 & "/" & Year(Date)
Else
Range("K" & usor) = TextBox1 & "/" & Year(Date)
End If
'Rendezés
usor = Range("A" & Rows.Count).End(xlUp).Row
ActiveWorkbook.ActiveSheet.Sort.SortFields.Clear
ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range("A2:A" & usor), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Munka1").Sort
.SetRange Range("A1:K" & usor)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End SubSzerk.: beteheted a végére a textboxok kiürítését.
-
Delila_1
veterán
válasz
m.zmrzlina
#20940
üzenetére
Sok szerencsét!
-
Delila_1
veterán
válasz
m.zmrzlina
#20938
üzenetére
Igen.
-
Delila_1
veterán
válasz
m.zmrzlina
#20936
üzenetére
Teljesen más ötlet.

Egy oszlopba bevinném az időpontokat, a címsorba pedig a dátumokat (nn formátummal, hogy kevés helyet foglaljanak). Lehet fordítva is az idő és dátum elhelyezése. A metszéspontokba 1-es értéket adnék, mikor égett a villany, és semmit, ha nem.
Egy feltételes formázással hátteret adnék az 1-et tartalmazó celláknak, azonos karakterszínnel. Diagram kilőve.
A dátumok helyett lehetnek a munkahelyek, vagy amire szükséged van.
-
Delila_1
veterán
válasz
LordVader80
#20931
üzenetére
Szívesen.

-
Delila_1
veterán
válasz
LordVader80
#20928
üzenetére
Az FKERES függvényt alkalmazd.
-
Delila_1
veterán
válasz
Prosectura2
#20926
üzenetére
A D14 cella képlete egy relatív hivatkozás. Azt tartalmazza, hogy a függvény adja össze a tőle 1 oszloppal balra lévő adatokat a 6 sorral fentebb kezdődő sortól a cellával azonos sorig.
Ha csak ezt a képletet másolod a D21-be, ott a 6 sorral fentebbi a 15. sor, a vele azonos a 21, C15:C21 lesz a képlet hivatkozása. Megtehetnéd, hogy mindig csak az összegző képletet másolnád a megfelelő sorokba, akkor is ezt az eredményt kapnád.
Egyszerűbb azonban az üres, képleteket nem tartalmazó cellákkal együtt másolni. Az egyszerűségen kívül biztosabb is a helyes eredmény. Az üres cellák biztosítják a megfelelő távolságot, nem kerül véletlenül feljebb, vagy lejjebb 1-1 képlet, ami ráadásul átfedést, hamis értékeket eredményezne az összegzéseknél.
-
Delila_1
veterán
válasz
Prosectura2
#20924
üzenetére
-
Delila_1
veterán
válasz
Prosectura2
#20921
üzenetére
Gondolom, a D oszlopba írtad az összegzéseket, a szum(C8:C14) a D14-es cellában van.
Jelöld ki a D8:D14 tartományt, és ezt húzd le. Így az üres cellákat is másolod, a képletek jó helyre kerülnek.Nem lesznek tapsikoló figurák, ha a Konvertálatlan opciót alkalmazod.
-
Delila_1
veterán
Ha lépésenként futtatod, rájössz, hogy minden sort másol, de felülírja az előzőt.
Csv-kel nem szoktam dolgozni. Beteszek egy rövid makrót, amit majd átalakítasz. Ez az A oszlop adatait másolja át egyenként a B-be, és hozzáfűzi, hogy 1, 2, vagy 3. adatsorról van szó.
For sor = 1 To 9 Step 3
Cells(sor, 2) = Cells(sor, 1) & " 1"
Cells(sor + 1, 2) = Cells(sor + 1, 1) & " 2"
Cells(sor + 2, 2) = Cells(sor + 2, 1) & " 3"
Next -
Delila_1
veterán
Tom Teke és gyga
szívesen. -
Delila_1
veterán
A makró akkor másolja át a 2 cellát, ha mindegyiknek adtál háttérszínt.
Tegyél ki hozzá egy gombot, vagy adj bill. kombinációt.Sub masol()
If Range("A2").Interior.ColorIndex <> -4142 And Range("B2").Interior.ColorIndex <> -4142 Then
Range("A2:B2").Copy Sheets(2).Range("A" & Sheets(2).Range("A" & Rows.Count).End(xlUp).Row + 1)
End If
End Sub -
Delila_1
veterán
válasz
TomTeke2
#20879
üzenetére
A képletek másolása után a csatolást kell átírni az új füzetedre.
2003-as verzióban ezt a Szerkesztés | Csatolások menüpontban találod meg, ahol a (ha jól emlékszem) Módosítás gomb lenyomása után ki tudod tallózni az aktív füzetedet, mire megszűnnek az átirányítások.Magasabb verziókban ezt ügyesen elrejtették. A Gyorselérési eszköztárra ki kell tenned egy ikont. A További parancsoknál a Választható parancsok helye legyen a Minden parancs. Itt kikeresed a Fájlhivatkozások szerkesztése nevűt, kiteszed az eszköztárra, innen tudod meghívni a csatolás módosításához.
-
Delila_1
veterán
válasz
alfa20
#20877
üzenetére
A látható sorokat töröljük, majd a végén a többi sort láthatóvá tesszük a szűrő feltétel kihagyásával.
Sub szur()
Dim usor As Long
usor = Range("A" & Rows.Count).End(xlUp).Row
ActiveSheet.Range("$A$1:$V$" & usor).AutoFilter Field:=2, Criteria1:="*alma*"
ActiveSheet.Rows("2:" & usor).SpecialCells(xlCellTypeVisible).Delete
ActiveSheet.Range("$A$1:$V$" & usor).AutoFilter Field:=2
End Sub -
Delila_1
veterán
A laphoz rendeld:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$15" Then Rejt
End SubModulba:
Sub Rejt()
Sheets("Munka2").Select
Rows("2:202").Hidden = False
Rows(Sheets("Munka1").Range("E15") + 2 & ":202").Hidden = True
End SubNálam Munka1 a lap, ahol az E15-ben megadod a megjelenítendő adatsorok számát, és Munka2 a másik. Ezeket írd ár a makróban a saját lapjaid nevére.
Mikor írsz az E15-be, a másik lapon végrehajtódik a rejtés, és az a lap lesz aktív.
-
Delila_1
veterán
válasz
bandus
#20863
üzenetére
Az első cellába beírod: 00:00:00. A mellette lévőbe 01:00:00. Kijelölöd a két cellát együtt, és a cellaformázásnál az egyéni kategóriánál megadod a formátumot: "H " óó:pp.
Most lemásolod az első cellát addig, míg eléri a 23 órát. A másik cellát kijelölve a jobb alsó sarkában lévő kis fekete négyzeten duplaklikk, kész a jobb oldali oszlopod.
A két oszlopot lemásolod közvetlenül a kitöltött cellák alá, és a formátumban a H-t átírod K-ra. Ezt ismételd meg a többi nap beírásához.
Mindig ezt a füzetet hívd be, és az új adatok beírása után a Mentés másként opciót választva más néven mentsd el.
-
Delila_1
veterán
válasz
#02644736
#20800
üzenetére
Úgy tűnik, szeretsz velem levelezni. Ha nem így lenne, már először megírtad volna, hogy más lapokról akarod behozni az adatokat. Azt még most sem árultad el, hogy az egyes lapoknak melyik oszlopából várod az értékeket. Nem baj, a megadott képletet átalakítod, ha nem az A-ból.
A Munka1 lapon megadod az egyes lapok számát, ami nálam az első sorban van.
A szerkesztőlécen látod az A3 képletét, ezt másold jobbra az R (18) oszlopig. -
Delila_1
veterán
-
Delila_1
veterán
válasz
motinka
#20786
üzenetére
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column=3 Then OpenCalendar
End SubEz akkor indítja a calendart, ha a C (harmadik) oszlop bármelyik celláján kattintasz duplán.
Persze nem tudom, mit tartalmaz az OpenCalendar makród. -
Delila_1
veterán
válasz
alfa20
#20779
üzenetére
Igen, annyi különbséggel, hogy a Dim sorokat a makró elejére szoktuk bevinni, hogy később könnyebben megtaláljuk.
Dim tbl1_fulnev As WorkSheet, tbl2_fulnev As WorkSheet, tbl3_fulnev As WorkSheet
Alá már jöhetnek az értéket adó Set sorok.A Dim változónév As Típus helyet foglal a memóriában a változónak. Ennek az az előnye, hogy ha a makró írása közben elgépeled egy változó nevét, aminek helyet foglaltál, már az indításkor rád kiabál, hogy nincs dimenzionálva egy változó. Ha ezt a lehetőséget kihagyod, nehezebben találod meg a hibát, ami abból adódhat, hogy 1-1 karakter eltéréssel írtad be a változót több helyre. Érdemes hozzászokni a dimenzionáláshoz.
Példa:
Szoveg="Ez itt egy szöveg"
Range("A10")=Szöveg
Ha nem deklaráltad a Szoveg változót, az A10 üres lesz, mert a Szöveg változó üres string, nem adtál neki értéket. Az is lehet, hogy nulla lesz az A10, mert nem közölted a VBA-val, hogy a Szöveg milyen típusú (szöveg, dátum, szám, logikai, stb.) változó legyen. Keresheted a hibát, és könnyű átsiklani 1 betű eltérésen. Ha viszont foglaltál neki helyet, indításkor jön az üzenet, hogy nincs Szöveg változód.A VBE Tools | Option menü Editor fülén jelöld be a Require Variable Declaration négyzetet. Ettől kezdve a moduljaid tetején automatikusan megjelenik az Option Explicit felirat, ami kötelezővé teszi a változók deklarálását, futtatáskor azonnal figyelmeztet a hiányra.
Szerk.: a helyfoglaláskor ne hagyd ki a típus megadását sem, akkor egy dátumot váró változónak nem adhatsz véletlenül szöveg típusú értéket. Előfordulhat, hogy 1-1 változóhoz változó típusú adatot kellene rendelned, ilyenkor a típust elhagyhatod, vagy Variant-ra állítod.
-
-
Delila_1
veterán
Az Összesen sorban (20. sor) SZUM függvény van, ami betűnként megszámolja, hogy az A oszlopban hány a, b, c, stb. karakter található.
Nézd meg, hogy az alma szónál az A betűhöz 2-t írt a függvény, a ribizlihez 3 db i-t.
Szűrni úgy tudsz, hogy *a*-t írsz keresési feltételnek. Ez azokat a sorokat szűri ki, amik tartalmaznak a betűt. Ám összeszámolni nem tudja.
-
Delila_1
veterán
válasz
konyi79
#20739
üzenetére
Egyszerűen megoldhatod. Rögzítesz egy makrót a csökkenő sorrend beállításához, és kiteszel hozzá egy gombot. Egy másik gombhoz az emelkedő sorrendhez rögzített makrót rendeld.
A makróban a mindenkori utolsó sorig kell kiterjesztened a rendezéseket. Ehhez fel kell venned egy változót a makró első sorában, legyen mondjuk usor:
Dim usor As LongA következő sorban meghatározod az értékét:
usor=WorksheetFunction.CountA(Columns(1))A Columns(1) az A oszlop, ehelyett írhatsz másik oszlopot, ahol biztosan ki van töltve minden sor, mert a CountA a Darab2 függvény megfelelője. Azt adja meg, hogy a jelölt területen (most 1 oszlopban) hány nem üres cella van.
Mikor ez megvan, a rögzített makrókban átírod a területet. Például olyan találsz benne, hogy Range("A1:H1524"), akkor ezt átírod Range("A1:H" & usor)-ra.
-
Delila_1
veterán
válasz
dellfanboy
#20728
üzenetére
Egy kis makró a personalba:
Sub Szamformatum()
Selection.NumberFormat = "#,##0_L"
End SubEhhez kiteszel egy ikont. A formátum végén a _L jobbról ad egy behúzást, hogy ne "ragadjon" az adat a jobb szegélyre.
A personal szóra keresve több leírást találsz itt a fórumon.
-
Delila_1
veterán
válasz
the radish
#20719
üzenetére
Szívesen.
A helyedben a cbEv AfterUpdate eseményébe tennék egy feltételt
if cbHonap>"" then
'ide jön a cbHonap makrója
end ifMikor csak az évet váltod, a febr. akkor is az évre jellemző napszámot adja.
-
Delila_1
veterán
válasz
klambi
#20721
üzenetére
="@" & A1
Ez persze akkor igaz, ha a cellád, ami elé a @-ot kell tenni, az A1.
A képletet másolod, ameddig kell, majd kijelölöd az oszlopot, Ctrl+c-vel másolod, és az eredeti oszlop helyére irányítottan, értékként beilleszted. A képleteket tartalmazó oszlopot törölheted.
Nincs szükség az előző bekezdésre, ha az eredeti, kukactalan oszlopot is meg akarod tartani.
-
Delila_1
veterán
-
Delila_1
veterán
válasz
the radish
#20714
üzenetére
A Munka!A1:A12-be vittem be a hónapok nevét, melléjük a B-be, hogy melyik hány napos. Februárhoz 28-at adtam.
D1-től D31-ig a napok jönnek 1-től 31-ig, és valahova a választható évszámok.A formon 3 combobox van. A cbEv rowsource tulajdonságához fixen megadtam az évek tartományát, a cbHonap-hoz az A1:A12-t. Ez utóbbihoz jön a makró.
Private Sub cbHonap_AfterUpdate()
If cbEv * 1 Mod 4 = 0 And cbHonap = "febr" Then
cbNap.RowSource = "Munka1!D1:D29"
Else
cbNap.RowSource = "Munka1!D1:D" & Application.WorksheetFunction _
.VLookup(cbHonap, Range("A2:B12"), 2, 0)
End If
End Sub -
Delila_1
veterán
válasz
bmenya
#20682
üzenetére
Gyakorold be, hogy mikor elindítod a rögzítést, minél kevesebb hibát vigyél bele.
Ha a sok lapodon azonos sorokat kell elrejtened, érdemes együttesen kijelölni a lapokat, akkor mindegyiken egyszerre végrehajtja a műveleteket. FONTOS! a végén meg kell szüntetned a közös kijelölést.
-
Delila_1
veterán
válasz
bmenya
#20677
üzenetére
Rögzíts egy makrót, ahol elrejted a sok sort.
A feltételes formázással csak a saját lap celláinak értékei szerint formázhatsz. Megteheted, hogy a formázandó lapra behivatkozod a kezd lap d2 celláját – =kezd!D2 –, és ennek alapján színezel. A színezendő cella képlete, ha a fenti hivatkozás például a P1-ben van, =P2=1.
Új hozzászólás Aktív témák
- PC Game Pass előfizetés
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Most Ünnepi áron! :)
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Árváltozás+játék!The Witcher 2 Assassins of Kings Collector's Edition
- Árváltozás: Deus Ex Human Revolution Collector's Edition
- Bomba ár! HP Revolve 810 G2 - i7-G4 I 12GB I 256GB SSD I 11,6" HD Touch I Cam I W10 I Garancia
- GYÖNYÖRŰ iPhone 13 mini 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS4077, 100% Akkumulátor
- GYÖNYÖRŰ iPhone 13 mini 128GB Green -1 ÉV GARANCIA - Kártyafüggetlen, MS3837, 100% Akkumulátor
- ÁRGARANCIA! Épített KomPhone Ultra 7 265KF 32/64GB RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
- iPhone 13 mini 128GB Green -1 ÉV GARANCIA -Kártyafüggetlen, MS3897, 100% Akkumulátor
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: ATW Internet Kft.
Város: Budapest

Az más dolog, hogy létezik az Excelben erre egy beépített funkció.






Fferi50
