- Tényleg jobban fogyaszt a Peugeot, az Opel és a Citroen?
- iPhone topik
- Az iPhone 15 frissítésgaranciát, a 16 szép rendereket kapott
- Vodafone mobilszolgáltatások
- MIUI / HyperOS topik
- Erősebb zajszűrést ad ismerős formában a Galaxy Buds 2 Pro
- Milyen okostelefont vegyek?
- Samsung Galaxy S20 és S20+ duplateszt
- Micro headset használatával vizsga közben a mobilt belehet mérni? Valamint le lehet hallgatni?
- Motorola Moto G54 5G Power Edition - nem merül le
Hirdetés
-
MediaTek lapkával érkezhet a következő Samsung csúcstablet
ma Merőben szokatlan lenne, ha a Samsung nem Qualcomm vagy Exynos szettet használna a prémium termékvonalon, de a Geekbench szerint mégis ez lehet a helyzet a Tab S10+ esetében.
-
Retro Kocka Kuckó 2024
lo Megint eltelt egy esztendő, ezért mögyünk retrokockulni Vásárhelyre! Gyere velünk gyereknapon!
-
Íme a Valorant trófea/achievement listája
gp Nem sokkal a hivatalos bejelentés után máris felbukkantak a megszerezhető eredmények.
-
Mobilarena
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
-
Fferi50
őstag
válasz ThaBoss #28038 üzenetére
Szia!
Próbáld meg ezt a képletet:
=DARABTELI($B$2:$B$300;$B2)=DARABHATÖBB($B$2:$B$300;$B2;$F$2:$F$300;"nem vették fel")
valamelyik következő oszlop második cellájában és húzd az oszlop végéig.
Ezután szűrő az oszlopra - igaz mutatja azokat a sorokat, ahol egész nap nem vették fel a hívást.(A képlet megszámolja, hány hívás volt a nap során és összehasonlítja a fel nem vett hívások számával. Ha a kettő egyforma, akkor nem vettek fel hívást egész nap.)
Annyit még hozzá, hogy egy szám többször is szerepelni fog, ezért a B oszlopra is rá kell tenni a szűrőt, ott fogod látni, hány érték maradt meg.
Üdv.
-
Fferi50
őstag
válasz Carasc0 #28047 üzenetére
Szia!
1. A makrót én kiegészíteném ezzel az első sorral:
If Target.Cells.Count>1 then exit sub
Ez azt jelenti, ha több cellát jelöltél ki egyszerre, akkor nem vizsgálja, hogy a V3 cellát hagytad-e el.2."Adott egymás alatt 4 cella: A1 : D1 " Ez a négy cella egymás mellett van
A véletlenszám generáláshoz nézd meg a RandBetween munkalapfüggvényt (Worksheetfunction). Itt megadhatod a határokat. Az eredményt kerekítő függvénnyel kerekítheted. Ezután megnézed, van-e már ilyen számod. Ha igen, akkor új generálás és vizsgálat, ha nem, akkor beírod a cellába.Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
Szia!
Egy kicsit pontatlanul fogalmazol.
"egy oszlopból, hogyan lehet kitörölni azokat a sorokat ami nem tartalmaz adatokat és üresek"
Egy oszlopban csak cellák vannak, amelyek lehetnek üresek is.
Ha egy db cellát törölsz, akkor eldöntheted, hogy a cellától jobbra vagy az alatta levő cella "tolódjon" a helyére, de valamelyik megtörténik, azaz megváltozik az adatszerkezet.
Ha egész sort törölsz, a többi oszlopban levő adat is törlődik.
Autószűrő - az üresek látszanak opció kiválasztása után a megjelenő üres sorokat kijelölés után egy mozdulattal tudod törölni, viszont egy-egy cellát külön nem lehet. (sorok kijelölve - jobb egérgomb, sorok törlése).Üdv.
-
Fferi50
őstag
válasz the radish #28189 üzenetére
Szia!
Legyen egy fejléc az első sor.
Utána autoszűrő az A oszlopra, értéke 1, ami látszik - SpecialCells(xlCellTypeVisible - azt átmásolod - a fejlécet "kiütöd belőle" az új helyen. (Ezt akár makrórögzítő mellett is megteheted).
Ezután szűrő 2 és másolás, kiütés.
Ezt folytatod addig, amíg a szűrés után egyetlen sor marad látható - a fejléc.Vagy: A megkapott adatokat rendezed az A oszlop szerint és utána az egészet átmásolod (szerintem ez az igazán nyerő).
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz irodakukac #28276 üzenetére
Szia!
Ha legalább 2007-es exceled van, akkor adatok - szövegből oszlopok , elválasztójelnek beírod a / jelet, kijelölöd, hogy hova tegye és enter.
Ha ennél korábbi, akkor a bal(A2; szöveg.keres(A2,"/")-1) és a közép(A2,szöveg.keres(A2;"/")+1;20) a két szétválasztó képlet.
Üdv.
-
Fferi50
őstag
válasz coldfirexx #28251 üzenetére
Szia!
Miért nem használod ki az Excel beépített lehetőségeit?
Sub Szerződések_törlése()
With Sheets("Alapadatok")
.UsedRange.Autofilter Field:=31, Criteria1:="A szerződés előző évben lejárt"
.UsedRange.Offset(1,0).Specialcells(xlCelltypeVisible).EntireRow.Delete
.AutofilterMode=False
End With
Sheets("Vezérlő").Select
Range("B6").Select
End SubÜdv.
-
Fferi50
őstag
válasz Delila_1 #28337 üzenetére
Szia!
Milyen korlátait tapasztaltad az autodszűrőnek? Mert én még nem találkoztam vele.
Másrészt viszont a speciális szűrés kifejezetten megfelel ennek a célnak is.
Pl. az Eredeti munkalap M1 cellájába Kód, M2 cellájába *J* kerül.
Ezután egyetlen sor:
Sheets("Eredeti").Range("A1:I30").AdvancedFilter Action:=xlFilterCopy, criteriarange:=Sheets("Eredeti").Range("M1:M2"), copytorange:=Sheets("Jó").Range("A1:I1")átmásolja a kívánt értékeket a Jó munkalapra.
De a Jó munkalapra átváltva - az Adatok - Speciális kiválasztása után megjelenő párbeszéd ablakot a fentieknek megfelelően kitöltve makró nélkül is megy a dolog.
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz Delila_1 #28340 üzenetére
Szia!
Akkor fordítva adom meg a szűrőfeltételt, ugyanannak a lapnak a "következő" oszlopaiba irányítom a szűrést, majd az eredeti oszlopokat - a szűrőfeltétellel együtt - kitörlöm. Megy ez makróval is persze, esetleg formázni kell az új oszlopokat.
(Viszont nem tudom, ha az autoszűrő nem ment, akkor vajon a spec/irányított szűrő megy-e.)Üdv.
-
Fferi50
őstag
Szia!
Próbálj ki egy teljesen új munkafüzetet, abban hogyan viselkednek a sorok/oszlopok.
A problémás munkafüzetet pedig feltehetnéd egy helyre, ahol el tudjuk érni, mert így "messziről" nem nagyon van tippem a jelenségre.
Védettség: 2010-es verzióban menüszalagon korrektúra - lapvédelem. Ezt véletlenül is bekapcsolhattad és akkor nem enged sor/oszlop beszúrást/törlést normál esetben.
Üdv.
-
Fferi50
őstag
válasz Claude Leon #28565 üzenetére
Szia!
Nézd meg, milyen a cella formátuma, ha szöveg, váltsd át általánosra, utána F2 majd enter.
Azután előfordulhat az is, hogy a képlet elején van egy aposztróf, amitől szövegnek tekinti a kiértékelő (esetleg szóközök vannak az egyenlőségjel előtt...).Üdv.
-
Fferi50
őstag
válasz the radish #28568 üzenetére
Szia!
Próbáld ki az alábbi makrót:
Sub csvment()
Dim fileszam As Integer, sor As Range
fileszam = FreeFile()
Open "Minta.csv" For Output As #fileszam
For Each sor In ActiveSheet.Rows
Print #fileszam, Join(Application.Transpose(Application.Transpose(sor.Value)), ";")
Next
Close #fileszam
End SubÜdv.
-
Fferi50
őstag
válasz the radish #28551 üzenetére
Szia!
Úgy gondolom, az a probléma, hogy a meghívott makróból nem ugyanabba a helyzetbe térsz vissza, ahonnan meghívtad:
Rows(tol & ":" & ig).copy WSM.Range("A2") Ezzel átmásolod a sorokat a forrás munkalapról a cél munkalapra
proba
Itt a másolandó munkafüzet innen nevű munkalapja az aktív.
Itt viszont:
Sub proba()
Range("A1:E3693").Select ' még mindig a másolandó munkafüzet aktív, annak az A:E oszlopát másolod
Selection.copy
Windows("B.xls").Activate 'átváltasz a cél munkafüzetre
Sheets("Munka2").Select 'abban is a Munka2 munkalapra
Range("A1").Select 'és ide másolod be a kijelölt részeket
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
Sheets("ide").Select ' itt pedig a cél munkafüzet ide nevű munkalapját aktíválod - a cél munkafüzet marad az aktív!!! - Pedig a másolandó munkalap volt aktív, amikor a makrót meghívtad!!!
'Azaz ide a Windows("A.xls").Activate sor kellene ezen sor helyett.
MsgBox "Makró"
End SubTovábbá nem egészen értem, miért kell a Select - Copy - Paste és munkafüzet aktíválások sora (amiben el is vesztél szépen ).
A Copy metódusnak van egy Destination paramétere, amivel megadhatod, hogy hova másolja át az adott tartományt. (Ráadásul ezt alkalmazod is a fejléc másolásánál!).
Vagyis a másolás egy sorral megoldható:
Range('A1:E3693").copy destination:=WSM.parent.Sheets("Munka2").range("A1")
Magyarázat: A WSM.parent eredménye a B munkafüzet, így a másolás egyből annak Munka2 munkalapjára megy át.A rövidebb makród azért "tökéletes", mert abban csak egy üzenet van és nem végzel vele semmilyen egyéb - munkalap, munkafüzet megváltoztatási - feladatot.
A leírtakból az is kiderül, ha nem kell mást csinálnia a meghívott makrónak, csak ezt a másolást, akkor nincs is rá szükség, mert az egy sort be lehet oda is szúrni a meghívás helyére.
Bocsi, hogy egy "lerágott csontot" próbáltam meg egy kicsit kibogozni eléggé elkésve, de csak most volt időm foglalkozni vele.
Üdv.
-
Fferi50
őstag
válasz boomkat88 #28690 üzenetére
Szia!
Szerintem nem kell a közbenső táblázat és kézi munka sem nagyon...
Csinálj fejléceket a 3 oszlopnak (én hely, db és kód szöveget adtam meg).Ezután csináltam egy kimutatást az alábbiak szerint:
Menüszalag beszúrás, kimutatás
Oszlopcimkék a kód, sorcimkék a hely és db, értékek a db. Ekkor megkapod a 3. tábla szerinti állapotot - azzal a különbséggel, hogy a "db" mező értéke is látszani fog a "hely" mellett.
A "hely" mező értékére megadhatod, hogy ne összegezzen, így a zavaró összesítő sorok eltűnnek. Az op2 mezőt összecsukhatod és akkor egymás mellett lesz a két érték (és ezt minden olyan sorcimkével megteheted, amelyben egy oszlopcimkéhez egy adat tartozik.
Végül az egész kimutatás sor és oszlop összegzését letilthatod, ha zavarónak találod.
Ráadásul a db sorcimkét tartalmzó oszlopot el is rejtheted.
Úgy gondolom ez gyorsan megoldja a gondjaidat.Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz poffsoft #28706 üzenetére
Szia!
Mivel a makródnak tudnia kell, hogy mivel számoljon, egyszer mindenképpen meg kell adnod valahol a programban ezeket az értékeket. Mivel a ciklust vezérlő változóid érteke valószínűleg nem állandó, hiszen ellenkező esetben a konkrét számokat adtad volna meg a select case-ben ezért a tömb értékeid sem lesznek valódi konstansok!
Ha tényleges értékeket tudsz, akkor megoldás lehet pl. az, hogy egy munkalapon beírod ezeket az értékeket mondjuk az A1-B8 tartományba, majd a tombvaltozó=range("A1:B8").value utasítással egy lépésben bekerül a tömb értékébe mind. A tömböt dinamikusnak kell deklarálni.
Beteheted az értékeket egy szövegfájlba és akkor onnan is be lehet olvasni fájlművelettel.Ha az excel azt mondja, körkörös hivatkozás van, akkor az úgy is van, csak valószínűleg olyan "bonyolult módon", hogy "szabad szemmel" nem látható. Érdemes ilyenkor a képletvizsgálatot bekapcsolni.
A beállítások képletek részénél van olyan, hogy közelítés engedélyezése x lépésben, ha ide beírod az 1 lépést, akkor nem kiabál a körkörös hivatkozás miatt - cserébe viszont nem is számolja át ismét az értékeket, ha változott a bemenő adat, csak kérésre.
Ezért nem ajánlott a "kikapcsolása".Üdv.
-
Fferi50
őstag
válasz poffsoft #28708 üzenetére
Szia!
Akkor deklaráld a tömbödet Public-nak, vagy Global-nak. Egy külön eljárásban töltsd fel a tömböt, mielőtt meghívnád a "számoló" rutint. Ha a külön eljárásod lefut, megnézheted, hogy benne maradnak az értékek a tömbben (ez biztos, de ellenőrizd egyszer). Idézet a 2010-es VBA helpből: "You can also use the Public statement with empty parentheses to declare a dynamic array. After declaring a dynamic array, use the ReDim statement within a procedure to define the number of dimensions and elements in the array"
A többszöri meghíváskor már nem kell feltölteni a tömböt, mert az már megtörtént külön. Az értékük addig él, amíg ki nem lépsz a főprogramból.Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz poffsoft #28710 üzenetére
Szia!
Látom, közben megtaláltad a jó (jobb) megoldást. De most leírt esetben is működik a dolog. Mivel a Thisworkbook modul u.n. osztálymodul, ezért az ott deklarált Public változók úgy érhetők el, ha "teljes névvel", a modul nevével is hivatkozunk rá: Thisworkbook.változónév. Ebben az esetben látható az értéke más modulokból is.
Ez az eljárás minden osztálymodulnál működik (tehát pl. egy munkalaphoz tartozó kódban is deklarálható Public változó és a kódmodulneve.változónév formában lehet rá hivatkozni más modulokban).Üdv.
-
Fferi50
őstag
válasz boomkat88 #28713 üzenetére
Szia!
Sajnos, úgy tűnik ez nem műxik a sor/oszlop cimkéknél. Viszont ha jobb egérgombbal rákattintasz egy sorcimkére és kiválasztod a rendezést, ott van olyan lehetőség, hogy kézi húzással. Ekkor tetszés szerinti sorrendbe rakhatod az adott cimke értékeit (ez persze akár sok munka is lehet). Másik trükk esetleg, hogy számokat vagy betűket raksz a cimkék első betűjébe a kívánt sorrend szerint.
Üdv.
-
Fferi50
őstag
válasz the radish #28750 üzenetére
Szia!
Workbooks.Open Filename:= "C:\A.xls"
Range(cells(2,2),cells(2,2).End(xlDown)).Copy destination:=Workbooks("B.xls").Sheets("munka1"). Range("A2")Üdv.
-
Fferi50
őstag
Szia!
Ha a képen levő értékek számok (azaz cellaformázással van a " m" hozzáadva), akkor a GYAKORISÁG függvénynek működnie kell (Ha F2 után, illetve a szerkesztősorban csak a szám jelenik meg).
A "titok", hogy poffsoft képletét tömbképletként kell megadni annyi sort kijelölve, ahány gyakorisági osztályt tartalmaz a második paraméter, jelen esetben 4 sort, ha bővíted az osztályok számát akkor annak megfelelő sort kell kijelölnöd a cél oszlopban.Ha viszont a 2655 m érték szövegként van beírva (azaz 2655 m a cella értéke, ha F2-t nyomsz rá), akkor nem használható a gyakoriság függvény, mert nem számként értelmezi.
Egyébként mit jelent a sajna nem működik? 0 értéket ír ki vagy hibát, ha hibát akkor melyiket? Adj több információt, hogy segíthessünk.
Üdv.
-
-
Fferi50
őstag
válasz the radish #28797 üzenetére
Szia!
Szerintem ez saját alkotású UserForm-mal oldható meg. Egy cimke az üzenettel, két parancsgomb + egy cimke a timernek.
Amikor megmutatod a formot, beállítod az üzenetet és a timert - megjelenítés userform.show false paraméterrel, hogy a program fusson tovább, de a programba beteszed a 10 mp várakozási időt is (Application.Wait) a megjelenítő sor után - ha lejárt az idő, végrehajtod a műveletet és eltünteted a formot.
Ha Mégse gombot nyomnak, akkor is el kell tüntetned a formot, mielőtt tovább mész.Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz the radish #28799 üzenetére
Szia!
A userformnak van egy modal paramétere, ami
vagy 1 (ha nem adod meg, ez a default), ebben az esetben addig nem megy tovább a program, amíg a form látszik
vagy 0 ill. False lehet, ezt mindig meg kell adni. Ilyenkor a form nem állítja meg a program futását. Ezért is írtam, hogy a False paramétert is állítsd be a show meghívásakor.Az application.wait valóban megállítja a program futását, bocs erre nem voltam figyelemmel, más módon kell a 10 mp - visszaszámlálást megoldani.
Még agyalok rajta egy kicsit, lehet az időzítő funkciót kell használni.Üdv.
-
Fferi50
őstag
válasz the radish #28799 üzenetére
Szia!
Mégis az Application.Wait lett a nyerő.
A UserForm1 tartalmaz egy Label1 cimkét - itt fut az idő visszafelé, Commandbutton1 parancsgomb a művelet végrehajtására, Commandbutton2 parancsgomb a megszakításra.
A UserForm1 kódlapja így néz ki:
Option Explicit
Dim xx As Integer
Sub mutato()
UserForm1.Show False
For xx = 11 To 0 Step -1
UserForm1.Label1.Caption = xx
Application.Wait Now + TimeSerial(0, 0, 1)
DoEvents 'figyeli, hogy volt-e gombnyomás, ha igen, végrehajtja
Next
If xx = -1 Then UserForm1.CommandButton1_Click ' ha lefutott az idő, végrehajtjuk a műveletet, ha már megvolt, nem történt semmi
End Sub
Public Sub CommandButton1_Click()
MsgBox "Kilépek"
xx = -2
Me.Hide
End Sub
Private Sub CommandButton2_Click()
MsgBox "Cancel"
xx = -2
Me.Hide
End Sub
Private Sub UserForm_Terminate()
xx = -2
End SubHa kérdésed lenne, kérlek írj!
Üdv.
-
Fferi50
őstag
válasz Lacikaaaa #28826 üzenetére
Szia!
Mihez képest kell nézni a 3 ill. a 4 és több napot. Valahol egy cellában rögzítve van ez a "referencia dátum", mert ha nincs, akkor sem Te sem a rendszer nem fogja ám kitalálni (gondolom ez a rögzítés dátuma lenne).
Ha van ilyen cella, akkor 2 feltételes formázással megoldható a dolog - formázás képlet alapján, a képlet pedig: ma - referencia dátum >2 kitöltés sárga ez az egyik
ma - referencia dátum >=4 kitöltés sárga ez a másikÜdv.
-
Fferi50
őstag
Szia!
Ha mindig ugyanoda kell másolni, akkor a makróba beírod egymás után:
Sheets("Sheet2").Range("B3").value=Sheets("Sheet1").Range("A2").value
Sheets("Sheet3").Range("B3").value=Sheets("Sheet1").Range("A3").value
Sheets("Sheet4").Range("B3").value=Sheets("Sheet1").Range("A4").value
és így tovább, minden egyes cellára.
Ha van valami szabályszerűség a másolásban, akkor ciklusba is szervezhető.(Ha nem csak az értékeket, hanem a formát is szeretnéd átvinni, akkor a fenti sorok helyett a copy metódust használhatod:
Sheets("Sheet1").Range("A2").Copy destination:=Sheets("Sheet2").Range("B3")
Sheets("Sheet1").Range("A3").Copy destination:=Sheets("Sheet3").Range("B3")
Sheets("Sheet1").Range("A4").Copy destination:=Sheets("Sheet4").Range("B3")
a másolásra.)Ha változó a másolás helye, akkor használhatod az Applicaction.inputbox metódust a cél cella bekéréséhez, ahol megadhatod, hogy milyen típusu legyen az input (8-as tipus a cella referencia). Így minden kérdéses cellánál megkérdezheted, most hova legyen másolva.
Az inputbox értékét egy változóba kérheted be:
Set myCell = Application.InputBox( prompt:="Select a cell", Type:=8)
majd ezt a változót használod célként.
Ebben az esetben az inputboxban egérrel kijelölheted melyik munkalap melyik cellájába kívánod a másolást.
Utána:
Sheets("Sheet1").Range("A4").Copy destination:=myCellRemélem, sikerülni fog valamelyik módszerrel megoldani a problémát.
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
Szia!
Ha a sorok száma alapján szeretnéd dinamizálni, akkor:
For each sor in Sheets("Sheet1").UsedRange.Rows
célmunkalap létrehozása/kijelölése
ide jönnek a másolási műveletek
nem ártana ellenőrizni, hogy nincs-e esetleg üres sor benne, ha van, azt nyilván ki kell hagyni a másolásból.
NextÜdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz BenJoe80 #28883 üzenetére
Szia!
Tömbképletként kell bevinni az adott cellába, vagyis nem sima enterrel, hanem shift+ctrl+enterrel kell befejezni. Ekkor a képlet kapcsos zárójelek közé kerül. Az A1 és AA1 cellák helyére beírod a B6 és M6 cellákat.
Így fog kinézni a cellában a képlet:
{=INDEXB6:M6;MAX((B6:M6<>"")*(OSZLOP(B6:M6))))}Ezt húzhatod lefelé úgy, hogy kijelölöd az alatta levő cellákat, majd Ctrl+l.
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
-
Fferi50
őstag
válasz BenJoe80 #28893 üzenetére
Szia!
Ne haragudj, sajnos az excelnek most igaza van, én voltam figyelmetlen:
A remélem helyes képlet
=INDEX(B6:M6;MAX((B6:M6<>"")*(OSZLOP(B6:M6)))-1)Az INDEX után kimaradt egy nyitó zárójel. Másrészt, mivel nem az A oszloptól kezdődik a tartomány, amiben dolgozik, ezért a szorzat eredményéből (ami a keresés helyét határozza meg) le kell vonni 1-et. Ebből az is következik, ha a tartományt eltolod jobbra, pl. D oszlopig, akkor már 3 a levonandó érték.
Üdv.
Ps. Elnézést a felesleges "küzdelem" miatt, néha vannak rosz napjaink.. -
Fferi50
őstag
válasz lenkei83 #28894 üzenetére
Szia!
A SZUMHA függvénnyel is meg lehet oldani:
=SZUMHA(INDIREKT("" & $F2 & "!$A$" & HOL.VAN($E2;INDIREKT("" & F2 & "!$A52:$A$1000");0 )+51 & ":A" & HOL.VAN($E2;INDIREKT("" & F2 & "!$A52:$A$1000");0 )+51+14);$B2;INDIREKT("" & F2& "!$B$" & HOL.VAN($E2;INDIREKT("" & F2 & "!$A52:$A$1000");0 )+51 &":B" & HOL.VAN($E2;INDIREKT("" & F2 & "!$A52:$A$1000");0 )+51+14))Bővebbet az index fórumon írtam.
Még annyit hogy nevet is lehet adni pl. ennek a kifejezésnek a névkelezelőben "!$A52:$A$1000"
pontosan így beírva, akkor helyette elég akár 3 betűs nevét is beírni.Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz DeFranco #28901 üzenetére
Szia!
Az aposztrof használatának szükségességét az előttem szóló már megmagyarázta (névkonvenció), persze bele lehetne tenni a cella értékébe is - de ott vigyázni kell arra, hogy formázási jelentése is van az aposztrofnak!.
Az & és a szóköz inkább szépészeti dolog, jobban lehet látni a részeket - vba mindig használja a makrókban, excel nem foglalkozik vele.Üdv.
-
Fferi50
őstag
válasz m.zmrzlina #29030 üzenetére
Szia!
Én megfordítanám a dolgot. Az utolsó sortól mennék felfelé addig amíg számot nem találok az adott cellában, ha nem szám van, akkor törölném a sort.
Sub torolo()
Dim usor As Long, xx As Long
usor = Cells(Rows.Count, 1).End(xlUp).Row
For xx = usor To 1 Step -1
If IsNumeric(Cells(xx, 1)) Then Exit For
Rows(xx).EntireRow.Delete
Next
End SubValószínűleg kevesebb a szemét, mint az értékes sor
(A select- eket pedig próbáld meg elfelejteni.)
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz m.zmrzlina #29035 üzenetére
Szia!
Akkor még azt is meg kellene vizsgálni, hogy a szám esetében az megegyezik-e az előző cella +1 értékkel:
If IsNumeric(Cells(xx, 1)) Then
if cells(xx,1).value=cells(xx-1,1).value +1 then Exit For
endifÜdv.
-
Fferi50
őstag
válasz BenJoe80 #29061 üzenetére
Szia!
Hát ez elég "óvodás" probléma volt. Látatlanban sajnos nem tudtam, hogy a hónapok celái nem üresek, hanem 0 van bennük (azért óvodás, mert gondolhattam volna rá...).
Ezért a képlet így jó:=INDEX(B6:M6;MAX((B6:M6<>0)*(OSZLOP(B6:M6)))-1)
Persze tömbképletként és angolosítva az oszlopot.
Remélem, így már sikerül "megennie".
Üdv.
[ Szerkesztve ]
Új hozzászólás Aktív témák
- Politika
- Anime filmek és sorozatok
- Luck Dragon: Asszociációs játék. :)
- Vicces képek
- Azonnali informatikai kérdések órája
- EAFC 24
- Tényleg jobban fogyaszt a Peugeot, az Opel és a Citroen?
- Sorozatok
- Intel Core i3 / i5 / i7 / i9 10xxx "Comet Lake" és i3 / i5 / i7 / i9 11xxx "Rocket Lake" (LGA1200)
- Elektromos autók - motorok
- További aktív témák...