-
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
-
Kobe
veterán
-
Delila_1
Topikgazda
-
Delila_1
Topikgazda
Ez a makró az A oszlopban A1-től figyeli, van-e megjegyzés. Ha nincs, törli a sort.
Sub DelRow()
Dim sor As Integer
sor = 1
Do While Cells(sor, 1) <> ""
If Range(Cells(sor, 1).Address).Comment Is Nothing Then
Rows(sor).EntireRow.Delete
sor = sor - 1
End If
sor = sor + 1
Loop
End SubAz A helyett 2 helyen a Cells(sor,1)-ben írd át az 1-et az oszlopod sorszámára. Ha nem az első sortól akarod a vizsgálatot végrehajtani, a sor=1-et írd át.
A makró feltételezi, hogy a kérdéses oszlop minden cellájában van valamilyen adat, ott is, ahol nincs megjegyzés.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
"nem a pivot része, csak a pivotnak megfelelő sorba mellév an írva egy megjegyzés"
Akkor más a helyzet. A kimutatásokat másold egy lapra egymás alá, értékként beillesztve, mert a pivotokból nem engedi az Excel a sortörlést. Mivel nem írtad, melyik oszlopokban vannak a billentyűzetről – vagy érvényesítésből – bevitt megjegyzések, önhatalmúlag a H és I oszlopokba tettem (8. és 9. oszlop). Ezeket írd át a makróban a megfelelőkre.
Sub DelRow()
Dim sor As Integer, usor As Integer
usor = Range("A50000").End(xlUp).Row
For sor = usor To 2 Step -1
If Cells(sor, 8) = "" And Cells(sor, 9) = "" Then Rows(sor).EntireRow.Delete
Next
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
félisten
-
Delila_1
Topikgazda
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.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Excelbarat
tag
Jól sejted csak a forrást kell átírnod így:
így kezdődjön:
Range("A3").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ujforras = Sheets("Munka1").[A6].CurrentRegion.Address(ReferenceStyle:=xlR1C1)Majd a forrásnál így hivatkozz:
SourceData:= "Munka1!" & ujforrasA makró végére pedig be kell írni ezt:
Sheets("Munka4").PivotTables(1).RefreshTable[ Szerkesztve ]
-
Mutt
aktív tag
Hello,
Ennek kellene ott lennie:
"Munka1!R1C1" & LR & "C3"Azonban javaslom, hogy hozz létre adattáblát (Beszúrás -> Táblázat) és azt add meg a pivot forrásának (SourceData:="Táblázat1"), mivel ez dinamikusan tud nőni/csökkenni.
üdv.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Mutt
aktív tag
Hello,
Röviden, ahol egy macskaköröm van oda ilyenkor 2 kell, ahol meg kettő oda 4 db.
pl. Range("P1") -> Range(""P1"") és ""YES"" -> """"YES""""3 macskaköröm pedig a legelső vagy legutolsó egyszereset jelenti:
pl. "=IF(.... -> """=IF(....üdv.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Mutt
aktív tag
Hello,
...megkrealni a pivot tablat es ujranevezni az aktiv tabot, ami mar ugye letezik
Mielőtt futtatnád a makrót nézd meg, hogy van-e már Pivot a lapon.
If ThisWorkbook.Sheets("munkalap neve").PivotTables.Count = 0 Then
'ide jön az eredeti makró
End Ifvagy ahogy m.zmrzlina írta ellenőrízheted a munkalapok nevét is.
üdv.
[ Szerkesztve ]
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Delila_1
Topikgazda
Ehhez kellene tudni, mit kell összefűzni az Y oszlopban. Az is kellene, hogy az X oszlop melyik sorában kezdődnek az adataid, és hogy folyamatosan vannak-e. Vaktában nem lehet makrót írni.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
Sub Osszefuz()
Dim sor As Long, usor As Long
usor = Range("W" & Rows.Count).End(xlUp).Row
For sor = 2 To usor
If Cells(sor, "X") = "Hazai" Then _
Cells(sor, "Y") = Cells(sor, "X") & "-" & Round(Cells(sor, "W"), 0)
Next
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Mutt
aktív tag
-
lapa
veterán
ez micsoda?
LineNum2 = LineNum2 + 1
amúgy ettől függetlenül elég csúnya a sok select meg activecell meg ilyenek. valami ilyesmi is működne szerintem:
Dim lngLastRow
lngLastRow = Cells(Rows.Count, "A").End(xlUp).Row
Columns("X").Insert Shift:=xlToRight
range("X1").value = "common_id"Range("X2").Select
End Sub[ Szerkesztve ]
-
lapa
veterán
továbbra sem teljesen értem az első kérdésem. mi lenne, ha azt kihagynád, és beírnád, hogy "2" vagy ilyesmi?
magyarán szerintem a linenum2 = linenum2 + 1 sorhoz használj valami más változót.
emellett select alapvetően semmihez nem szabad, hogy kelljen. sőt, gonosz.
[ Szerkesztve ]
-
Mutt
aktív tag
Hello,
A hibát a
LineNum2 = .VBE.MainWindow.Visible = False sor okozza.
Mivel ez egy parancs a VBA editornak ezért csak így lesz jó:Application.VBE.MainWindow.Visible = False
Nekem így már lefut .xls-en is, látszólag .xlsx-en is megcsinálja, de mivel az makrómentes ezért mentéskor eldobja.
üdv.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Mutt
aktív tag
Hali,
Ugyanarra jutottunk.
Az egyetlen gondom az, hogy a sub nem fut le automatikusan...
Mivel a Sheet1 Change eseményébe szúrod be ezért nem fut le, Workbook Open esemény kell, de meg kell oldanod hogy ne minden megnyitáskor, hanem csak változáskor fusson le.
LineNum = .CreateEventProc("Open", "Workbook")
Esetleg csinálhatod azt hogy
If Thisworkbook.Sheets("Sheet1").Range("A1") = "" Then
<ide az eredeti kód>
Thisworkbook.Sheets("Sheet1").Range("A1") = 1
End ifüdv.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Mutt
aktív tag
Hello,
A létező xls-ben van-e már workbook open event?
Ha tőled függetlenül már van, akkor meg van az indok hogy miért hasal el.
Ha azt nem tudod/mered változtatni, akkor Auto_Open névvel kell egy module-ba a kódódat beszúrni.'új module beszúrása
Set VBComp = VBProj.VBComponents.Add(vbext_ct_StdModule)
VBComp.Name = "NewModule"
Set CodeMod = VBComp.CodeModule
'Auto_Open sub létrehozása
With CodeMod
LineNum = .CountOfLines + 1
.InsertLines LineNum, "Sub Auto_Open()"
LineNum = LineNum + 1
.InsertLines LineNum, Code3
LineNum = LineNum + 1
.InsertLines LineNum, "End Sub"
End WithEsetleg az Auto_Close sub-ba pedig tehetsz egy olyat, hogy az Auto_Open-t törölje ha az már lefutott.
üdv.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
félisten
Vélhetően nem ennyire egyszerű a megoldás, mert arra magadtól is rájöttél volna, de azért beírom, hátha mégis. Szóval pl így
If ActiveSheet.Name = "INT" Then
MsgBox ("OK, ez az INT nevű munkalap")
End IfMindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
1. Ha az a korábbi kód egy valós kód volt(és nem csak valamit betettél példának), akkor az a kód minden esetben az épp aktív munkalapon dolgozik, ergo mindegy hány darab és nevű munkalap van a munkafüzetben, mindig azon végzi el a módosításokat/feladatát, ami épp ki van jelölve, azaz aktív.
2. Az is egyértelműen leírtad, hogy az INT nevű munkalap minden esetben biztosan létezikEbből kiindulva ennyi az egész ("if munkalap neve = INT, lefut a makró, else nem fut le" - olyan nincs, hogy else nem fut le)
Private Sub MyMacro()
Dim lngLastRow
If ActiveSheet.Name = "INT" Then
lngLastRow = Cells(Rows.Count, "A").End(xlUp).Row
Columns("X:X").Select
Selection.Insert Shift:=xlToRight
Range("X1").Select
ActiveCell.FormulaR1C1 = "common_id"
Range("X2").Select
.
.
.
.
End If
End Sub[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
"Az eredeti if feltetel igy kicsit pontatlan volt: nem azt szeretnem, hogy akkor fusson le ha van INT nevu munkalap a fileban, hanem azt, hogy a kod maga az INT nevu munkalapon fusson le"
Nem, ez nem kicsit volt pontatlan.Akkor annyi az egész, amit Delila_1 már leírt.
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Delila_1
Topikgazda
IDNUMBER= Cells(lnglastrow,"AB")=Cells(lnglastrow,"O")&"-"&Round(Cells(lnglastrow,"L"),0)[/M
Ez a sor számomra értelmezhetetlen. Itt akarsz értéket adni az IDNUMBER változónak, de a két egyenlőségjel ezt megakadályozza.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
Felvettem 2 változót. Az egyik a WS, ami Worksheet típusú, és a test.xls INT nevű lapját adtam meg értékének. A másik, WF, WorksheetFunction típusú. Ezt azért vettem fel, hogy a VLookup-ot tartalmazó sor könnyebben olvasható legyen.
Ha jól értettem, az indító füzet aktuális lapján az AB oszlopban lévő adatot keresed a test.xls INT lapjának A oszlopában, és a találat sorában az E oszlop tartalmát íratod az indító füzet T oszlopába.
Betettem a Vlookup sor elé egy hibaelhárítást arra az esetre, ha a keresett érték nem szerepelne a másik füzetben (On Error Resume Next).Sub Keres()
Dim sor As Long, usor As Long, WS As Worksheet, WF As WorksheetFunction
Set WS = Workbooks("test.xls").Worksheets("INT")
Set WF = Application.WorksheetFunction
usor = Range("AB" & Rows.Count).End(xlUp).Row
For sor = 2 To usor
If Cells(sor, "AB") > "" Then
On Error Resume Next
Cells(sor, "T") = WF.VLookup(Cells(sor, "AB"), WS.Range("A:P"), 5, 0)
End If
Next
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
Be van kapcsolva az Excelben az Analysis ToolPak, és az Analysis ToolPak - VBA? Lehet, hogy ezeket hiányolja. Eszközök | Bővítménykezelő menüpontban kapcsolhatod be.
Mivel láttam, hogy xls a kiterjesztés, 2003-as verzióban írtam a makrót, a bővítmények bekapcsolása után működnie kell.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
Ezt úgy szokás áthidalni, hogy a nem publikus adatok helyére hamis adatokat írsz. Csak arra ügyelj, hogy az eredeti típusnak megfelelőek legyenek a próba adatok (dátum, szöveg, képlet, stb. egyezzen az eredetivel). Elég néhány rekord.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
Úgy látom, az adataid egy része szöveg, másik része szám.
A =JOBB("0000"&A1;4) képlet mindegyiket szöveggé alakítja. Irányítószámként úgysem akarsz számolni velük.
Ha kész, jelöld ki az új oszlopot, másold, majd irányítottan, értékként illeszd az eredeti oszlopra.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
Dim usor As Long
usor = Range("A" & Rows.Count).End(xlUp).Row
Range("B2:B" & usor) = "=right(""0000"" & A2,4)"
másolás, ir. beillesztés, segédoszlop törlése
Columns(2).Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlValues
Columns(2).Delete[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Mutt
aktív tag
Hello,
1. A B-oszlopban a dátum van vagy "XYZ"?
Az IF részben egyszer szöveget, keresel másszor dátumot.
2. A Format-os rész Datediff függvénnyel helyettesítendő.
3. Now helyett Date adja meg az aktuális dátumot.
4. Hátulról kell kezdeni a tőrlést.
5. Select-et érdemes mellőzni.Itt az én változatom (A-oszlopban dátum, B-ben szöveg):
If Menu.CheckBoxDateRangeFilter.Value = True Then
lastrow = Cells.Find(what:="*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
Do
If (Cells(lastrow, "B").Value <> "" And Cells(lastrow, "B").Value <> "XYZ") _
Or DateDiff("d", Date, Cells(lastrow, "A").Value) > Menu.TextBoxDaysAfter.Value Then
Rows(lastrow).Delete
End If
lastrow = lastrow - 1
Loop Until lastrow = 1
End IfAmi nem volt tiszta, hogy igazából mely sorokat kell törölni, a fenti kód azokat tőrli ahol
- van szöveg a B-ben és az nem XYZ (üres szöveges sorokat meghagyja)
- és ahol a dátum kívül van a megadott napokon.üdv.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Mutt
aktív tag
Hello,
Egy olyan fuggvenyre lenne szuksegem, amivel az excel kepes eldonteni, hogy az 1 flottahoz tartozo kocsik kozul melyiknek a legmagasabb a rendszama.
Ha legalább Excel 2007-et használsz akkor az ÖSSZESÍT függvénnyel megoldható a legnagyobb rendszám keresése (A oszlop flotta, B rendszám, C-E oszlopok dátumok; 5000 sorig múködnek a képletek):
=ÖSSZESÍT(14;6;$B$2:$B$5000/($A$2:$A$5000=A2);1)Bármelyik Excel verzióban pedig az alábbi tömbképlet működik:
{=MAX(HA($A$2:$A$5000=A2;$B$2:$B$5000;))}A fenti képletek vmelyikét választva a calculated cellád képlete:
=HA(csodakeplet=B2;E2-D2;E2-C2)Ha a rendszámod alphanumerikus, akkor ezt tudom javasolni:
=HA(SZORZATÖSSZEG(($A$2:$A$5000=A2)*($B$2:$B$5000>B2))=0;E2-D2;E2-C2)üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
Új hozzászólás Aktív témák
- Politika
- Kompakt vízhűtés
- EA Sports WRC '23
- EAFC 24
- Milyen CPU léghűtést vegyek?
- Autós topik
- Musk meggondolta magát, mégsem pereli az OpenAI-t
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- CURVE - "All your cards in one." Minden bankkártyád egyben.
- Okosóra és okoskiegészítő topik
- További aktív témák...
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen