-
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
Topikgazda
válasz Bobrooney #15571 üzenetére
A For Each - Next ciklussal végig lépkedhetsz a terület tagjain. A lenti példában a ciklusváltozó CV.
Sub TeruletBejaras()
Dim ter As Range, CV As Object
Set ter = Range("A1:C15")
For Each CV In ter
MsgBox CV.Address
MsgBox CV.Value
If CV < 300 Then Cells(CV.Row, CV.Column).Font.ColorIndex = 3
Next
End SubA két kiíratást csak azért tettem bele, hogy megmutassam, miket tud még ez a különleges ciklus.
A For Each CV In ter helyett For Each CV In Range("A1:C15") is szerepelhet.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
sztanozs
veterán
válasz Bobrooney #15628 üzenetére
ÁÁ dehogy - ha függvénmnyel szedem szét (vagy vlookup-ozok), akkor felmegy commited memory 200.000 MB környékére, de így lent marad ~30 MB-on, viszont így is folyamatosan tekeri a procit. Ami érdekes, hogy ha fut másik Office alkalmazás, akkor ugyan 100%-on pörög továbbra az Excel process, de úgy tűnik, mintha a CPU idő 1%-át kapná csak meg gyakorlatilag, a többi valami más folymatban várakozik.
Mintha a VBA hívásoknak lenne valami in-app szinkronizációja az Office Suite-on belül, és minden hívásnál megvárná, míg a többi Office alkalmazás visszaigazolja, hogy továbbmehet.JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Delila_1
Topikgazda
válasz Bobrooney #15659 üzenetére
A VB szerkesztőben duplán klikkelsz a listboxra, megjelenik a kódja úgy, hogy a kezdő- és záró sor közé bármit írhatsz.
Private Sub ListBox1_Click()
'itt megadva egy általad írt makró címét, végrehajtja annak a tartalmát
End SubMegváltoztathatod az eseményt Click-ről pl. AfterUpdate-re, vagy bármire, amit fent a jobb oldalon lévő legördülőben találsz.
A ListBoxt RowSource tulajdonságában megadhatod a listát, amit meg akarsz jeleníteni benne.
Pl.: Munkalap1!A1:A20Programozó: 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
válasz Bobrooney #15665 üzenetére
Mikor a változó deklarálásánál az As után kezded beírni a típust, kapsz egy ablakot a választhatók felsorolásánál. Ezek között nincs Document. Ha egy füzetre akarsz hivatkozni, célszerű a Workbook típust választani. A makróban
Public Doc As Workbook
Sub mm()
Set Doc = ActiveWorkbook
Doc.Sheets("Munka1").Range("A1") = "asdf"
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
válasz Bobrooney #22542 üzenetére
Ha jól látom, az F oszlopból akarod kinyerni az egyedi értékeket. Erre jó a speciális szűrő, amit makróval is előállíthatsz.
A lenti pár sor a Z oszlopba ír, címsorral együtt, majd a kinyert adatokat a tomb nevű tömbbe rakja. A végén kiírja a tomb() harmadik értékét, próbaként.Sub TombbeEgyedi()
Dim usor As Long, tomb()
usor = Range("F" & Rows.Count).End(xlUp).Row
Range("F1:F" & usor).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Range("Z1"), Unique:=True
usor = Range("Z" & Rows.Count).End(xlUp).Row
tomb = Application.Transpose(Range("Z2:Z" & usor))
MsgBox tomb(3)
End SubMikor betöltötted a tomb()-be az adatokat, megadhatod a makróban a további felhasználásra az utasításokat. Ehhez már nincs szükség a Z oszlopra, törölheted.
Szerk.:
Közben kibővítetted a kérdést. Valószínű, hogy érvényesítéshez kellenek az egyedi értékek. A Z oszlopból megadhatod a tartományt.[ 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
válasz Bobrooney #22545 üzenetére
Szívesen. Az
usor = Range("Z" & Rows.Count).End(xlUp).Row
tomb = Application.Transpose(Range("Z2:Z" & usor))
MsgBox tomb(3)rész helyett betehetsz egy rendezést, és egy névadást. A névadásból hagyd ki a Z1 cellát, az hivatalból az oszlop címe. Az érvényesítésnél a nevet adhatod meg forrásként.
Ha eleve ofszettel adod meg a nevet a Z adatainak, a makróban csak rendezni kell az adatokat a szűrés után.
[ 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.
-
Fferi50
őstag
válasz Bobrooney #22542 üzenetére
Szia!
Excel 2007-től működik az adatok ismétlődések eltávolítása.
Ennek felhasználásával:
Átmásolod az eredeti listádat egy új helyre - ahonnan majd használni szeretnéd.
Utána az új helyen adatok - ismétlődések eltávolítása menüpont használata.
Makróban pl.
ActiveSheet.Range.("Y11200").RemoveDuplicates columns:=1 header:=xlYes vagy xlNo attól függően, hogy van-e fejléc.
Előtte pedig Application.DisplayAlerts=False
Utána: Application.DisplayAlerts=True
Ez a két sor arra kell, hogy ne "üzengessen", hány adatot távolított el.Üdv.
-
Fferi50
őstag
válasz Bobrooney #22548 üzenetére
Szia!
Makróba foglalva így nézne ki:
sub egyedi()
Dim usor as Long, tomb()
usor = Range("F" & Rows.Count).End(xlUp).Row
Range("F1:F" & usor).copy range("Z1")
Application.DisplayAlerts=False
Range("Z1:Z" & usor).RemoveDuplicates Columns:=1, Header:=xlYes
Application.DisplayAlerts=True
tomb = Application.Transpose(Range("Z2:Z" & usor))Üdv.
-
Bobrooney
senior tag
-
-
slashing
senior tag
válasz Bobrooney #22673 üzenetére
huh most hirtelen nem jut eszembe a pontos menete de ha utánna nézel a gyakoriság vagy norm.eloszl függvénynek. Vagy az egyiknek vagy a másiknak tuti jónak kell lennie de lehet kombinálni kell a kettőt.
Inkább csak a gyakoriság lesz az a norm.eloszlást csak azért jutott eszembe mert akkor kellett használnom mikor a gyakoriságot is.
[ Szerkesztve ]
-
Delila_1
Topikgazda
válasz Bobrooney #22673 üzenetére
Az Fkeres függvény kell ide.
Az A oszlopban vannak a pontszámok, az I-ben a "tól" értékek (0; 11; 21; stb.), mellettük a J-ben az osztályzat (1; 2; 3; stb.)A képlet =FKERES(A1;I:J;2;1)
Az utolsó paraméter, az 1-es – ami el is hagyható – mondja meg a függvénynek, hogy nem pontos-, hanem közelítő értéket keresel.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Fferi50
őstag
válasz Bobrooney #22916 üzenetére
Szia!
Nem kötelező a második paraméter használata, de vedd figyelembe az alábbiakat:
A második paraméter azt határozza meg, hogy melyik nap a hét kezdőnapja. Ha elhagyod, akkor a vasárnapot tekinti a hét kezdőnapjának. Ha a hétfőt tekinted kezdőnapnak (mint Mo-n általában), akkor a második paraméter értéke 2.Üdv.
-
Fferi50
őstag
válasz Bobrooney #22949 üzenetére
Szia!
Ha a modulok azon értékeit, amelyeket más modulok is használnak, Public változóként definiálod, akkor azokat modulnév.változónév formában el tudod érni máshonnan is.
Ha a modulok nem osztálymodulok (nem class), akkor Global változóként is definiálhatod a közös változókat és akkor minden macera nélkül eléred mindenhonnan.Üdv.
-
Delila_1
Topikgazda
válasz Bobrooney #29852 üzenetére
Valószínűleg meg lehet oldani tömbképlettel is, én egy függvényt írtam rá.
Function HibaDarab(tartomány As Range)
Dim db As Long, CV As Range
For Each CV In tartomány
If CV > 0 And IsNumeric(CV) And CV * 2 Mod 7 > 0 Then
db = db + 1
End If
Next
HibaDarab = db
End FunctionAz összegző cellába ez jön: =HibaDarab(tartomány), ahol a tartományt beírod, vagy kijelölöd egérrel.
Programozó: 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
válasz Bobrooney #29868 üzenetére
Korábban írtad feltételnek ezt, hogy: "Érvénytelen adatok: mindegyiknek vesszük a dupláját és maradék nélkül osztjuk 7-el"
Csak azért idézem, mert ez egy értelmetlen feltétel, hisz ha valaminek a dupláját el tudod osztani maradék nélkül 7-el, akkor magát a számot is el lehet osztani maradék nélkül 7-el... (ettől függetlenül meghagytam a képletben, csak szóltam)E1 cella képlete (természetesen tömbképletként kell bevinni)
=DARAB(HA(MARADÉK(A1:C5*2;7)=0;A1:C5))-DARABÜRES(A1:C5)-DARABTELI(A1:C5;"=0")Az üres és a nullákat tartalmazó cellákat kivontam a képletben, ellenkező esetben a tömbképlet azokat is megfelelőnek tartaná a kritériumnak(azaz a kétszeresük maradék nélkül osztható 7-el).
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)
-
sztanozs
veterán
-
sztanozs
veterán
válasz Bobrooney #29852 üzenetére
=SUMPRODUCT((1=1)*(A1:E12=(INT(A1:E12/7)*7)))
vagy
=SUMPRODUCT((1=1)*(0=MOD((A1:E12)
*2,7)))Az aláhúzott range az amin keresel (a kétszeres szorzó belerakható, de áthúztam, mert felesleges).
(#29877) Delila_1 :
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
-
-
Delila_1
Topikgazda
válasz Bobrooney #33413 üzenetére
Egy tömbfüggvénnyel megoldható. Vegyük, hogy a tartományod A1:T20.
A képlet
=DARAB(HA((A1:T20*10/2)=INT(A1:T20*10/2);A1:T20))
Shift+Ctrl+Enter-rel kell bevinned.
Ilyen lesz:
{=DARAB(HA((A1:T20*10/2)=INT(A1:T20*10/2);A1:T20))}
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
válasz Bobrooney #33419 üzenetére
"...azt kellene megszámolni..."
Érvényesítéssel hogy lehet számolni?!
Érvényesítés az, mikor egy cellába, vagy egy tartományba csak bizonyos feltételeknek megfelelő adatot engedünk bevinni. Ha az a feladat, hogy egy 20×20-as területre a megadott feltételeidnek megfelelő számot lehessen bevinni, az érvényesítés képlete legyen
=ÉS(A1*10=INT(A1*10);MARADÉK(A1*10;2)=0)
és ezt másold a tartomány többi tagjához is.
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
-
-
m.zmrzlina
senior tag
válasz Bobrooney #41892 üzenetére
Igen közben találtam róla valamit én is. Mondjuk elég dodonai:
When you run a macro, all variables are initialized to a default value. The initial default value: for a numeric variable is zero; for a variable length string it is a zero-length or empty string (""); a fixed length string is initialized with the ASCII code 0, or Chr(0); an object variable defaults to Nothing; a Variant variable is initialized to Empty. In numeric context, an Empty variable denotes a zero while in a string context an Empty variable is a zero-length string ("") . A zero-length string ("") is also referred to as a null string. However, it is advised to explicitly specify an initial value for a variable instead of relying on its default initial value.
Szóval csináld ahogy jónak látod!
Új hozzászólás Aktív témák
- PC JÁTÉKOK (OLCSÓ STEAM, EA , UPLAY KULCSOK ÉS SOKMINDEN MÁS IS 100% GARANCIA )
- Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Adobe Creative Cloud - 2024. 04. 05 - 2025. 04. 05-ig
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Warhammer Online - Age of Reckoning (DE) Collectors Box (Figurával!)