Hirdetés

2024. május 4., szombat

Gyorskeresés

Útvonal

Fórumok  »  OS, alkalmazások  »  Microsoft Excel topic (kiemelt téma)

Téma összefoglaló

Téma összefoglaló

  • Utoljára frissítve: 2023-11-13 08:31:56

LOGOUT.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.

Összefoglaló kinyitása ▼

Hozzászólások

(#28201) #20368384


#20368384
törölt tag

Érdekes hiba:
1. Van egy táblázatom (Google Adwords-ből CSV vagy XLSX export - ugyanúgy előjön a hiba)
2. Vannak oszlopok, ahol csak számok vannak
3. CTR+F-el vagy makróval eltávolítom belőlük az ALT+0160 típusú szóközkaraktert
4. Majd valutává konvertálom
5. Az ezrestől nagyobb, régebben (ALT+0160) típusú szóközt tartalmazó, mostanra normális számként funkcionáló cellákba az érték nem állítódik be.
6. Bele kell egyszer legalább kattintani és kikattintani belőlük vagy entert ütni.
7. Akkor végre jobbra igazítja és valóban valuta lesz belőle.

A kérdésem, az, hogy ez Excel hiba, és hogy orvosolható-e egyetlen lépésben?
Van olyan lehetőség, ami újra beírja az értékeket az adott tartományban?

A Makrót amit eddig írtam hozzá a következő

Sub Google_Kulcsszojelentes_Formazas()
'
ActiveCell.Range("A1:M1").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.Font.Bold = True
ActiveCell.Offset(1, 0).Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$2:$M$36"), , xlYes).Name = _
"Táblázat1"

ActiveCell.Range("A1:M35").Select
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

ActiveCell.Offset(-1, 3).Range("A:A,E:E,F:F,I:I").Select
ActiveCell.Offset(0, 11).Range("A1").Activate
Selection.Style = "Currency"
End Sub

(#28202) poffsoft válasza spe88 (#28195) üzenetére


poffsoft
addikt

Szia,
nekem a makrórögzítéssel simán megy.

most ha behúzol három fájlt, és van köztük htm/html, és a runmymacro-ra kattintasz, megnyitja a htm-t, elmenti xlsx-ként, és bezárja, a draganddropban frissíti a fájlokat.
klikk
?

[ Szerkesztve ]

(#28203) spe88 válasza poffsoft (#28202) üzenetére


spe88
senior tag

Zsír nem vágtam mire jó a runmymacro gomb, csak a másik, na holnap ki is próbálom a melóban! Köszi szépen :)

Spóroljunk! Kerül, amibe kerül!

(#28204) earthy


earthy
újonc

Sziasztok! Új vagyok itt, engedelmetekkel segítségért fordulnék hozzátok!
Egy jókora excel táblázatban fogok dolgozni, amely vízszintesen változó számú adatot fog tartalmazni. Pillanatok alatt át kell látnom, hogy az adott sorban az utolsó adatot tartalmazó cellába mit írtam. (szöveges)
Ezért kellene azt megoldanom, hogy a mellékelt kép szerint pl. az első oszlopban képlettel folyamatosan jelenítse meg, hogy az adott sor utolsó adatot tartalmazó cellájában mi szerepel.

Makróval megoldottam úgy, hogy a lépéseket végrehajtva letároltam, mármint egy cella jobbra, ugrás a sor végére, másol, vissza, beilleszt... - ezzel az a gondom, hogy minden sorra egyesével ki kell adni, másrészt manuális futtatást igényel. Ezért gondolkodtam az FKeres és hasonló függvényekben, azonban tapasztalat hiányában nem tudtam úgy megalkotni, hogy működjön. Feltöltöttem egy egyszerűsített példa táblát, ez lenne a cél.

Kérlek segítsetek ha tudtok ebben. Köszönettel: Csaba

/dl/upc/2015-08/24/567624_b5olidopdu6mcv5z_alaptabla.jpg

(#28205) alfa20 válasza earthy (#28204) üzenetére


alfa20
senior tag

Szia!

Ezt próbáld ki:
A2-be:

=HAHIBA(INDIREKT(CÍM(SOR(B2);HOL.VAN("";B2:J2;-1)+1));"üres")

[ Szerkesztve ]

"Az agy olyan, mint az ejtőernyő: csak akkor működik, ha nyitott." (Thomas Dewar)

(#28206) earthy válasza alfa20 (#28205) üzenetére


earthy
újonc

Szia Alfa20! Nagy vagy, működik! :) Kipróbáltam, minden sorra érvényesül, és működik rendben! :)

Ha van még rám pár perced megkérhetlek hogy a miértjét is leírd majd, mert bár ezt várhatóan át tudom majd ültetni a végső táblába, szeretném megérteni a miértjét is...

=HAHIBA(INDIREKT(CÍM(SOR(B2);HOL.VAN("";B2:J2;-1)+1));"üres")

Köszönet mégegyszer!!!!

(#28207) alfa20 válasza earthy (#28206) üzenetére


alfa20
senior tag

Haladjunk sorban:

Hol.van: megtudod keresni, hogy hol található a keresett érték. itt ugye megadható pontos keresés, de nekem a 'semmit' (üres cellát) még sosem sikerült pontos kereséssel találni, így a '-1'-t használom mert ilyenkor mindig megadja hol van az utolsó kitöltött cella. Arra viszont figyelni kell, hogy a tartomány ha számokból áll, akkor a két macskaköröm helyett egy 'space' kell, különben nem működik. ezt lehet nem így kellene használni, de majd holnap jönnek az Guruk és kijavítanak.
ja igen a +1 azért kell mert az első oszlopban a képlet van, így el kell tolni egyel a CÍM() függvényt.

Sor: vissza adja a hivatkozott cella sorának számát.

Cím: Egy cella címét adja eredményül (sor,oszlop) pl: =CÍM(2;2)-ből, $B$2-lesz.

Indirekt: A hivatkozott cella értékét kapod vissza(pl, ha 'A2' cellába 'B2'-t irtsz és indirekttel az 'A2'-re hivatkozol, akkor 'B2' cella értékét kapod eredményül.

Hahiba: érték hiba esetén a megadott érték lesz az érték.

[ Szerkesztve ]

"Az agy olyan, mint az ejtőernyő: csak akkor működik, ha nyitott." (Thomas Dewar)

(#28208) poffsoft válasza earthy (#28206) üzenetére


poffsoft
addikt

szia,
hahiba(képlet ha nemhibás; érték ha hibás a képlet eredménye)
indirekt: szöveggel megadott hivatkozás értéke
cím(sor, oszlop): hivatkozást ad a sor, oszlop cellára.
hol.van : megkeresi a tartomány első üres celláját

megjegyzem, a sor(B2) helyett én sor()-t használnék.

[ Szerkesztve ]

[ Szerkesztve ]

(#28209) Delila_1 válasza alfa20 (#28207) üzenetére


Delila_1
Topikgazda

Szerintem elég a

=CÍM(SOR();DARAB2(B4:DD4)+1)

képlet.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#28210) Delila_1 válasza Delila_1 (#28209) üzenetére


Delila_1
Topikgazda

Az aktuális sorszám megjelenítése nélkül

=KÖZÉP(CÍM(SOR();DARAB2(B1:DD1)+1);2;SZÖVEG.TALÁL("$";CÍM(SOR();DARAB2(B1:DD1)+1);2)-2)

[ 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.

(#28211) earthy válasza Delila_1 (#28209) üzenetére


earthy
újonc

Sziasztok!

Hála Nektek, sikerült beillesztenem a képletet a saját táblázatba is. Miután itt nem az első oszlopba várom eredményül a sor utolsó értéket tartalmazó cellájának tartalmát, így a

=HAHIBA(INDIREKT(CÍM(SOR(J2);HOL.VAN("";J2:JA2;-1)+9));"üres")

képletre írtam át, hogy a 9. oszlop a kimeneti cella, és ezzel bővítettem a vízszintes tartományhosszt is.

Csak még egy kérdés, habár így is tökéletes, azt tapasztaltam, hogy amennyiben kizárólag számokat írok be, úgy figyelmen kívül hagyja a képlet az utolsó cellát, mármint azt amiben számadat található... Egyszerű megoldás, hogy a cellát szöveges tartalmúra formáztam - habár gyanítom ez a barbárabbik módszer...

Mindenesetre köszönöm a segítségeteket!

(#28212) nyirisandor


nyirisandor
újonc

Sziasztok!
Azt szeretném elérni hogy egy adott névsorban szereplő neveket kilistázza és ha egy név többször szerepel akkor is csak egyszer jelenjen meg a listában, valamint számolja ki hogy egy ember hány alkalommal volt jelen. Ennek a folyamatnak automatikusnak kell lennie mert a nevek folyamatosan bővülnek és változnak is.
Ebben kérem a segítségeteket. A szűrésnél nem tudtam automatikusra beállítani.

Sajnos nekem nem sikerült megoldanom. Az Spss, és az Access tudja, de sajnos excelben kellene megoldanom ezt a feladatot.

Kérlek benneteket segítsetek ha tudtok rá megoldást.

üdv: Nyíri Sándor

[ Szerkesztve ]

(#28213) bayay válasza poffsoft (#28163) üzenetére


bayay
csendes tag

Köszönöm szépen!

betettem két dátummal, összegzősorral, működni látszik a jelenlegi dátumokkal.

(#28214) poffsoft válasza bayay (#28213) üzenetére


poffsoft
addikt

nincs mit :B

[ Szerkesztve ]

(#28215) poffsoft válasza nyirisandor (#28212) üzenetére


poffsoft
addikt

Szia,
google tömbképletes megoldásokat kínál.
Ha lehet makróval is:
Dim row As Range
Dim elements() As String
Dim elementSize As Integer
Dim newElement As Boolean
Dim i As Integer
Dim distance As Integer
Dim result As String

elementSize = 0
newElement = True

For Each row In rng.Rows
If row.Value <> "" Then
newElement = True
For i = 1 To elementSize Step 1
If elements(i - 1) = row.Value Then
newElement = False
End If
Next i
If newElement Then
elementSize = elementSize + 1
ReDim Preserve elements(elementSize - 1)
elements(elementSize - 1) = row.Value
End If
End If
Next

distance = Range(Application.Caller.Address).row - rng.row

If distance < elementSize Then
result = elements(distance)
listUnique = result
Else
listUnique = ""
End If
End Function

forrás

több

ha megvan a lista, már csak egy sima DARABTELI() amire szükséged van.

A példatáblát jobb lenne xls formátumban mellékelni :)

[ Szerkesztve ]

[ Szerkesztve ]

(#28216) Delila_1 válasza nyirisandor (#28212) üzenetére


Delila_1
Topikgazda

A lapodhoz kell rendelned a makrót. Keress rá a laphoz rendelésre.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim usor As Long

If Target.Column = 2 And Target.Row > 2 And Target.Count = 1 Then
Application.EnableEvents = False
usor = Range("B" & Rows.Count).End(xlUp).Row
Range("B3:B" & usor).Copy Range("D3")
Range("E3:E" & usor).ClearContents

ActiveSheet.Range("$D$3:$D$" & usor).RemoveDuplicates Columns:=1, Header:=xlNo
usor = Range("D" & Rows.Count).End(xlUp).Row
Range("E3:E" & usor) = "=countif(B:B,D3)"
Application.EnableEvents = True
End If
End Sub

Szerk. Látom, már kaptál választ, míg én irkáltam.

Mikor új nevet viszel be a B oszlopba, a D és E oszlop felülíródik az új értékekkel.

[ 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.

(#28217) coldfirexx

Hello!

Kellene egy kis segítség makró írásban. A következő feladatot kellene megoldani:

Az A oszlopban minden sorban van egy képlet mely eredménye üres vagy "elrejtve"(Kiírja hogy Elrejtve).
Ez annak függvényében változik hogy, a mögöttes PIVOT tábla mennyi adatot tölt be.
Frissítem a PIVOTOT (ezt sikerült makró rögzítéssel megcsinálni), majd ennek függvénye hogy mennyi sor le az ahova nem jut adat=el kell rejteni.
Ahol kiírja az A oszlopban hogy "Elrejtve" azt egy gombnyomasra el kellene rejteni.

Köszi ha valaki veszi a fáradságot.
Csak makró jöhet szóba.

(#28218) Delila_1 válasza coldfirexx (#28217) üzenetére


Delila_1
Topikgazda

Sub Elrejt()
Dim terulet As Range, CV As Range
Set terulet = Range(Range("A2"), Range("A" & Rows.Count).End(xlUp))

For Each CV In terulet
If CV = "Elrejtve" Then
Rows(CV.Row).EntireRow.Hidden = True
Else
Rows(CV.Row).EntireRow.Hidden = False
End If
Next
End Sub

Talán ez jó lesz.

[ 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.

(#28219) coldfirexx válasza Delila_1 (#28218) üzenetére

Szia!

Köszönöm működik.
Csak kicsit sokáig csinálja.
Lehet azzal gyorsítani rajta hogy egyébként tudom hogy a 39:83 sorokban kell csak a vizsgálatot végezni?

(#28220) Delila_1 válasza coldfirexx (#28219) üzenetére


Delila_1
Topikgazda

Szívesen.

Set terulet=Range("A39:A83")

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#28221) coldfirexx válasza Delila_1 (#28220) üzenetére

Ez is működik. :R :R

Még egy.
Meg lehet oldani hogy a legutolsó elrejtés sor után a sorban alul B től N oszlopig vastag alsó vonal legyen?

[ Szerkesztve ]

(#28222) Delila_1 válasza coldfirexx (#28221) üzenetére


Delila_1
Topikgazda

Sub Elrejt()
Dim szam As Long, CV As Range

For Each CV In Range("A39:A83")
If CV = "Elrejtve" Then
Rows(CV.Row).EntireRow.Hidden = True
Else
Rows(CV.Row).EntireRow.Hidden = False
End If
szam = CV.Row
Next
Range("B" & szam & ":N" & szam).Borders(xlEdgeBottom).Weight = xlMedium
End Sub

Nem világos, hogy az alsó, látható adat, vagy az utolsó elrejtett sor aljára akarsz-e vastag vonalat?
Ha az utóbbi, akkor a szam = CV.Row sort az Else fölé tedd át. Ebben az esetben viszont nem látszik, mert ez a sor rejtett.

[ 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.

(#28223) coldfirexx válasza Delila_1 (#28222) üzenetére

Szia!

Igen így nem megy.
Az elrejtett sorok utáni első sor felső vastag vonala amit keresünk! :))

(#28224) Delila_1 válasza coldfirexx (#28223) üzenetére


Delila_1
Topikgazda

Sub Elrejt()
Dim szam As Long, CV As Range

For Each CV In Range("A39:A83")
If CV = "Elrejtve" Then
Rows(CV.Row).EntireRow.Hidden = True
Else
Rows(CV.Row).EntireRow.Hidden = False
szam = CV.Row
End If
Next
Range("B" & szam & ":N" & szam).Borders(xlEdgeTop).Weight = xlMedium
End Sub

Akkor az utolsó, nem rejtett sornak adunk felső szegélyt.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#28225) coldfirexx válasza Delila_1 (#28224) üzenetére

Elvileg kellene működjön mégsem teszi oda a szegélyét.
Szépen elrejti de utána úgyhagyja

(#28226) Delila_1 válasza coldfirexx (#28225) üzenetére


Delila_1
Topikgazda

Az utolsó makrót másold be, azzal ott lesz szegély, ahol 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.

(#28227) coldfirexx válasza Delila_1 (#28226) üzenetére

Köszönöm szépen minden flottul működik!

(#28228) Delila_1 válasza coldfirexx (#28227) üzenetére


Delila_1
Topikgazda

Szívesen. :)

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#28229) alfa20 válasza earthy (#28211) üzenetére


alfa20
senior tag

Ha csak számok vannak, akkor így:

=HAHIBA(INDIREKT(CÍM(SOR();HOL.VAN( ;J2:JA2;-1)+9));"üres")

ahogy ezt említettem is #28207 :)

"Az agy olyan, mint az ejtőernyő: csak akkor működik, ha nyitott." (Thomas Dewar)

(#28230) nyirisandor válasza Delila_1 (#28216) üzenetére


nyirisandor
újonc

Az már kiderült számomra hogy nem vagyok Excel guru :-(

Egyik megoldást sem sikerült működőképessé tennem. Még próbálkozom velük.
Azért köszönőm a segítségeteket.

Megpróbáltam az Excel táblát föltenni de az sem sikerült, mert nem kép. :-(

Úgy tűnik ebből nem élnék meg.
Kicsit elkeseredtem de még nem adom föl.
Köszönöm a segítséget és szép napot mindenkinek

(#28231) poffsoft válasza nyirisandor (#28230) üzenetére


poffsoft
addikt

töltsd fel a data.hu-ra (vagy a google drive-odra, ha van), és a letöltő linket posztold ide.
Vagy küldd el emailben.

[ Szerkesztve ]

(#28232) nyirisandor válasza poffsoft (#28231) üzenetére


nyirisandor
újonc

Feltöltöttem a Google Drive-ra, és előre is köszönöm a segítséget.

https://drive.google.com/file/d/0B5JXwZrGZH5NOVNMM21zeUdRLWs/view?usp=sharing

(#28233) Delila_1 válasza nyirisandor (#28232) üzenetére


Delila_1
Topikgazda

Valószínű, hogy azóta poffsoft már válaszolt privátban, de ha nem, ez is megteszi.

Mikor egy új nevet viszel be a B oszlopba, a jobb oldali táblázat automatikusan frissül.

Az A1:B1 és a D1:G1 tartományban megszüntettem a cellák összevonását. Javaslom, hogy ezután is kerüld ezt a formázási lehetőséget, mert elég sok galibát okozhat.
Egyenként jelöld ki a két tartományt, és a cellaformázásnál nézd meg a vízszintes elrendezés beállítását.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#28234) coldfirexx

Sziasztok!

Egy olyan makrót keresek amelyik a következőt csinálja:
Van egy táblám, ahova adatok vannak betöltve "A3: Y3" között, és "Z3: AM3" ig képletek.
Jön egy új adathalom és akár "A5000: Y5000" ig feltölti a táblát.
A makró amit keresek hogy másolja le a képleteket addig amíg az "A: Y" ban van adat.

[ Szerkesztve ]

(#28235) Delila_1 válasza coldfirexx (#28234) üzenetére


Delila_1
Topikgazda

Nem kell ehhez makró, 1 (dupla) kattintással megvan.

Kijelölöd az eddigi utolsó képleteket (Z3:AM3 tartomány). A kijelölés jobb alsó sarkában van egy kis fekete négyzet, azon egy duplaklikk lemásolja a képleteket addig, amíg a mellette lévő Z oszlopban valamilyen értéket talál.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#28236) nyirisandor válasza coldfirexx (#28234) üzenetére


nyirisandor
újonc

Köszönöm szépen a segítséget.
Működik :-) és most meg is tanulom.

(#28237) coldfirexx válasza Delila_1 (#28235) üzenetére

Szia.

Azt ismerem de most makroval kellene ezt megoldani.

(#28238) Delila_1 válasza coldfirexx (#28234) üzenetére


Delila_1
Topikgazda

Pl. így:

Sub Kepletek()
Dim usor1 As Long, usor2 As Long

usor1 = Range("A" & Rows.Count).End(xlUp).Row
usor2 = Range("Z" & Rows.Count).End(xlUp).Row
Range("Z" & usor2 & ":AM" & usor2).Copy
Range("Z" & usor2 + 1 & ":Z" & usor1).PasteSpecial xlPasteFormulas
Application.CutCopyMode = False
End Sub

[ 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.

(#28239) coldfirexx válasza Delila_1 (#28238) üzenetére

Mint mindig ez is tökéletes megoldás.
Írok privátot.

(#28240) wolfman


wolfman
veterán

Sziasztok!

Lehetséges olyat kivitelezni excel-ben, hogy kijelölt területen a beszínezett cellákat is belevegye a számításba a végén? Arra gondolok, hogy pl. egy sorban van 10 cella, az első 4 találomra be van színezve, aztán pár számadat és a végén a szummába kiszámolva a korábbi számok úgy hogy az első változó aszerint lenne hogy a 4 cellából mondjuk kettő van kékre színezve, akkor 2x bla bla.

Nem tudom érthető-e? :F

„Ami mérhető, mérd meg! Ami nem mérhető, tedd mérhetővé!” – Galileo Galilei

(#28241) poffsoft válasza nyirisandor (#28232) üzenetére


poffsoft
addikt

Nem , még csak most végeztem.
Delila megoldását is alkalmazva, a munka1-en makrós, munka2-n függvényes megoldás
[link]

[ Szerkesztve ]

(#28242) poffsoft válasza wolfman (#28240) üzenetére


poffsoft
addikt

szerintem csak makróval megy.

[ Szerkesztve ]

(#28243) coldfirexx válasza Delila_1 (#28238) üzenetére

Hello!

Megint kérnék egy kis segítséget.
Egy olyan makróra lenne szükségem amelyik megvizsgálja hogy az AE oszlopban ha az van írva hogy "A szerződés az előző évben lejárt" akkor törölje ki az egész sort.

(#28244) coldfirexx

Végül sikerült így megcsinálni:
Sub Szerződések_törlése()
Sheets("Alapadatok").Select
Dim MyCol As String
Dim i As Integer
For i = 1 To Range("AE" & "65536").End(xlUp).Row Step 1
If Application.WorksheetFunction.CountIf(Range("A" & i & ":AZ" & i), "A szerződés előző évben lejárt") > 0 Then
Range("C" & i).EntireRow.Delete
End If
Next i
Range("A2").Select
Sheets("Vezérlő").Select
Range("B6").Select
End Sub

De vagy 3 perc mire lefutott 5000 sornál.
Van valami gyorsabb módja makróval?

(#28245) Mittu88


Mittu88
senior tag

Sziasztok!

VBA-ban szeretnék egy hibakezelő modult létrehozni, ami azt csinálja, hogy hiba esetén vár egy másodpercet dob egy hibaüzenetet, amit leokézva, majd újra próbálkozik attól a sortól, amelyiken a hiba előfordult.

Erre azért van szükség, mert van egy makró, amivel sokan dolgoznak, és bezáráskor (illetve egy pár művelet során) megnyit egy szerveren lévő fájlt egy pillanatra, amíg a saját adatait beletölti.
A probléma, hogy néha egyszerre lépnek ki a makrós fájlból, így egy megnyitott fájlt akar megnyitni és szerkeszteni, ami hibára futtatja.

Alapból ez a makrós fájl formokból áll csak, tehát cellába nem is tudnak írni (célszerűbb lett volna amúgy futtatható állományt csinálnom sima VB-ben, de ahhoz nem értek), mert induláskor felugrik az első form. Ez változtat valamit a hibakezelésen?

[ Szerkesztve ]

(#28246) Mittu88 válasza coldfirexx (#28244) üzenetére


Mittu88
senior tag

Ha van egy olyan sorod, amiben végig vannak adatok, akkor a következőt csináld a For ciklus helyett:
i = 0
Do
i = i + 1
If Cells(i, 31).value = "A szerződés előző évben lejárt" then 'A 31 az AE oszlop száma
Cells(i, 31).entirerow.delete
i = i-1
End if
Loop until Cells(i, végigtöltöttsor sorszáma).value = "" 'Addig megy, amíg nem talál üres cellát

Amúgy a CountIf függvény lassítja nagyon, nincs rá szükség. Simán a cella értékét (value) vizsgáld.

[ Szerkesztve ]

(#28247) schmiedpeter


schmiedpeter
csendes tag

Sziasztok, jelenléti ívet készítek, de elakadtam,
amit én szeretnék az az, hogy ne csak azok a cellák legyenek szürkére színezve automatikusan amik "Szo" vagy "V" vel vannak kitöltve, hanem ezeknek az egész sora...

Válaszotokat előre köszönöm.

(#28248) coldfirexx válasza schmiedpeter (#28247) üzenetére

Szerintem feltételes formázásnál, jelöld ki a teljes sort majd a feltétel megadása képlettel: =HA(VAGY(B21="SZ";B21="V");IGAZ;HAMIS) és állítsd be hogy szürke legyen.
Maj formátummásolással mehet minden sorra.

[ Szerkesztve ]

(#28249) coldfirexx válasza Mittu88 (#28246) üzenetére

Leírnád ezt úgy hogy csak be kelljen másolnom SUB tól End Sub ig? :R

(#28250) Mittu88 válasza coldfirexx (#28249) üzenetére


Mittu88
senior tag

Sub adattorles()

Dim i as integer
Dim j as integer

Worksheets("Alapadatok").Activate
j = 0
i = 0
Do
i = i + 1
If Cells(i, 31).value = "A szerződés előző évben lejárt" then 'A 31 az AE oszlop száma
Cells(i, 31).entirerow.delete
i = i-1
j = j + 1
End if
Loop until Cells(i, 1).value = "" 'Addig megy az első oszlopon végig, amíg nem talál üres cellát

Msgbox "A művelet sikeresen lefutott, " & j & " sor került eltávolításra", vbokonly

End sub

Útvonal

Fórumok  »  OS, alkalmazások  »  Microsoft Excel topic (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.