-
IT café
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
-
m.zmrzlina
senior tag
válasz m.zmrzlina #29903 üzenetére
Egy fokkal talán jobb ez a megoldás:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlNone
Cells.Font.ColorIndex = xlAutomatic
ActiveCell.EntireRow.Interior.ColorIndex = 1
ActiveCell.EntireRow.Font.ColorIndex = 2
End Sub[ Szerkesztve ]
-
dellfanboy
őstag
válasz m.zmrzlina #29908 üzenetére
koszi ez jonak tunik de az angol excelben sehogy se tudom elohivni ezt a menut.. hol talalom?filter -advance tok mas on fel..
eladó dolgok:mondd az árát és vidd http://hardverapro.hu/tag/dellfanboy#aprohirdetesei
-
dellfanboy
őstag
válasz m.zmrzlina #29920 üzenetére
eladó dolgok:mondd az árát és vidd http://hardverapro.hu/tag/dellfanboy#aprohirdetesei
-
firemanus82
senior tag
válasz m.zmrzlina #29925 üzenetére
Bocsánat, nem írtam le. Szóval legördülő menűben (adatérvényesítéssel) van a névsor. És abból szeretném kiválasztani az embereket.
LG Optimus Black => LG Optimus 4X HD => LG G2 32Gb => LG G5 Titan => Samsung S8 => Huawei P20 Pro => Huawei P30 Pro => Huawei P40 Pro => Honor Magic 4 Pro=> A tűzoltó nem azért rohan be az égő házba, mert rettenthetetlen, hanem mert az elhivatottsága erősebb a félelménél. John C. Maxwell
-
m.zmrzlina
senior tag
válasz m.zmrzlina #29933 üzenetére
helyesbítés: (lejárt a szerk. idő)
a "Ha jól értem a feladatot van öt terület," helyesen
Ha jól értem a feladatot van három terület,
[ Szerkesztve ]
-
sztanozs
veterán
válasz m.zmrzlina #30145 üzenetére
Ha ki van jelölve a tartomány és szerkesztés módban vagy (F2), akkor a ctrl+enter bemásolja az értéket (vagy függvényt) a többi kijelölt cellába.
[ 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...
-
m.zmrzlina
senior tag
válasz m.zmrzlina #30147 üzenetére
Na meglett. Ha valaki más is szeretné használni: Ctrl+L
Ez ugyan nem pontosan az amit kerestem mert ennél előbb ki kell jelölni a kitöltendő tartományt úgy hogy a legfelső cellában - vagy ha több oszlopot jelölünk ki akkor a felső sorban - az a tartalom szerepeljen amivel ki akarjuk tölteni a a kijelölt tartományt.
Aztán CTRL+L és ....TADÁÁÁÁM....
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz m.zmrzlina #30335 üzenetére
Közben rájöttem. Előbb gondolkozni kellett volna.
-
m.zmrzlina
senior tag
válasz m.zmrzlina #30335 üzenetére
Szóval az előbbi kérdésben leírt probléma megoldódott a For Each cella In ws_Kabelo.UsedRange.Cells használatával.
Tovább szeretném finomítani a dolgot hogy megadok egy szűkebb tartományt és csak ezen belül szeretnék kerestetni. Ha úgy csinálom pl hogy:
For Each cella In ws_Kabelo.Range("C2:AQ135").Cells akkor műdödik de mivel a kérdéses tartomány mindig más méretű ezért más módszerre van szükség.
Ismerem a tartomány bal felső celláját (ez mindig a C2) illetve integer tipusú változóban megvan, hogy hány sor hosszú és hány oszlop széles a tartomány amiben kerestetni akarok.
Ezek figyelembevételével hogyan adjam meg a For Each cella... sorban a tartomány határait.
[ Szerkesztve ]
-
Delila_1
Topikgazda
válasz m.zmrzlina #30341 üzenetére
Például
kezdsor = 9: kezdoszlop = 3
sorok = 5: oszlopok = 4
Set terület = Range(Cells(kezdsor, kezdoszlop), Cells(kezdsor + sorok - 1, kezdoszlop + oszlopok - 1))
For Each cella In ws_Kabelo.területC9 a bal felső cella, a vizsgálandó terület 5 sor és 4 oszlop.
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 m.zmrzlina #30344 üzenetére
Próbálkoztam az offset-tel, de az nem jött össze, pedig elegánsabb lett volna.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
bsh
őstag
válasz m.zmrzlina #30352 üzenetére
set terulet = worksheets(1).range(satöbbi)
a range kisbetűre váltás csak ebben a sorban van vagy mindenütt? esetleg tegyél be egy olyan sort, hogy "Dim Range" (nagybetűvel), és utána töröld ki ezt a sort.
-
Delila_1
Topikgazda
válasz m.zmrzlina #30352 üzenetére
Most egy kicsit rendesebben írom be a két makrót. Tegnap siettem, és eléggé el nem ítélhető módon nem dekraláltam a változókat, ráadásul az idézett makrókat nem jelöltem programkódként. Bocsi.
Sub Adatok()
Dim Balfelső As String
Balfelső = "$B$2": Végrehajtás Balfelső
Balfelső = "$C$9": Végrehajtás Balfelső
End Sub
Sub Végrehajtás(Balfelső)
Dim sorok As Long, oszlopok As Long, Jobbalsó As String, cella As Range, osszeg
Dim ws_Kabelo As Worksheet
Set ws_Kabelo = Sheets("Kabelo")
sorok = 5: oszlopok = 4: osszeg = 0
Jobbalsó = ws_Kabelo.Range(Balfelső).Offset(sorok - 1, oszlopok - 1).Address
For Each cella In ws_Kabelo.Range(Balfelső & ":" & Jobbalsó)
osszeg = osszeg + cella
Next
ws_Kabelo.Range(Jobbalsó).Offset(1) = osszeg
End SubAz osszeg változónál nem adtam meg a típust. Közel sem biztos, hogy összegezni akarsz a ciklusban, és ha mégis, nem tudom, hogy egész-, vagy lebegőpontos értékeid vannak-e.
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 m.zmrzlina #30373 üzenetére
Sub valogat()
Dim int_usor As Integer, int_uoszlop As Integer, int_vege As Integer
Dim cella As Range, tartomany As String
int_usor = 135: int_uoszlop = 50: int_vege = 2
tartomany = Range(Cells(2, 3), Cells(int_usor, int_uoszlop)).Address
For Each cella In Sheets(1).Range(tartomany)
If cella.Interior.ColorIndex = 6 And cella.Value <> "" And Application.WorksheetFunction.CountIf(Worksheets("csatorna").Range("D2:D50"), cella.Value) = 0 Then
Worksheets("csatorna").Cells(int_vege, 4).Value = cella.Value
int_vege = int_vege + 1
End If
Next
End SubA tartomany változó string legyen, ne range. Nézd meg a for each sort is.
A Dim sorokat érdemes mindig a makró elejére tenni egy kupacba, akkor egy hosszabb makróban könnyű megtalálni. Betettem a cella változót is oda, azt nem dimenzionáltad.
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 m.zmrzlina #30378 üzenetére
A címet adja vissza, mégpedig $ jelekkel együtt, fixen.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
bsh
őstag
válasz m.zmrzlina #30373 üzenetére
azért dobja a hibát, mert a Cells() nincs explicit kvalifikálva (vagy hogy híjják ezt magyarul?), így az az activesheet.cells()-re vonatkozik. magyarán kábé így kell használnod:
Set tartomany = ThisWorkbook.Worksheets(1).range(ThisWorkbook.Worksheets(1).Cells(2, 3), ThisWorkbook.Worksheets(1).Cells(int_usor, int_uoszlop))
a kisbetűs range-re meg írtam már, mit lehet ellene tenni. az nem segített?
-
bsh
őstag
válasz m.zmrzlina #30392 üzenetére
beírsz a kódba egy olyan sort, hogy "Dim Range" (Range nagy betűvel), ekkor elvileg az editor automatán átváltja nagybetűsre az összes range-et. ezután ki is törölheted a "dim Range" sort. ennyi.
ez a kisbetűsség azért (is) lehet, mert valahol valamikor valamiért akár véletlenül definiáltál egy kisbetűs "range" nevű valamit, ami már lehet azóta nincs is benne a kódban, de még az editor emlékszik rá. ez okozhat problémákat is akár, mert kitudja így most mi az a "range"? (option explicit javasolt)
de ez csak egy tipp, egy próbát megér. -
Delila_1
Topikgazda
válasz m.zmrzlina #30392 üzenetére
Változóként soha ne adj olyan nevet, ami VBA kulcsszó (for, with, range, on, else, string, not, do, loop ...).
A kulcsszavakat a VBE – ha az eredeti színbeállításodat tartottad meg – sötétkéken jeleníti meg.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 m.zmrzlina #30401 üzenetére
Egyszer mégis előfordulhatott, hogy range nevet adtál egy változónak.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
mindanee
tag
válasz m.zmrzlina #30429 üzenetére
Köszi szépen!
Ha több ársávom van, akkor gondolom többszörös HA függvénnyel kellene próbálkoznom, ugye?
-
mindanee
tag
válasz m.zmrzlina #30431 üzenetére
Szuper!
Nagyon szépen köszönöm!
-
Fferi50
őstag
válasz m.zmrzlina #30435 üzenetére
Szia!
Szerintem az Fkeres még egyszerűbb, ha a tartományban keres (4. paraméter) igazra van állítva, akkor ugyanezt az eredményt adja egy függvénnyel.
Üdv.
-
mindanee
tag
válasz m.zmrzlina #30435 üzenetére
Hú, ez nagyon jó, köszönöm.
Épp elkezdtem a favágást a HA függvényekkel, de akkor átállok erre
-
alfa20
senior tag
válasz m.zmrzlina #30524 üzenetére
Bocsi lehet rosszul fogalmaztam:
szóval:
Dim alap, ker, alap_mf As String, usor As Long
alap = ActiveWorkbook.Name
alap_mf = ActiveSheets.Name
ker = Munka1.TextBox1.Value
Workbooks.OpenText Filename:=ker
keres = ActiveWorkbook.Name
usor = Application.CountA(Columns(1))
Range(Cells(2, 1), Cells(usor, 2)).Copy
Windows(rendez).Worksheets(alap_mf).Range("A2").PasteAz utolsó sor hibára fut, az nem tetszik neki.
A 'keres' Excel fájlból kellene az 'alap' Excel fájlba másolni adatokat és ki akarom hagyni a sok 'Windows(változó).Activate'-t."Az agy olyan, mint az ejtőernyő: csak akkor működik, ha nyitott." (Thomas Dewar)
-
norby91
tag
válasz m.zmrzlina #30542 üzenetére
Ez működött köszi.
Annyi a baj, hogy törli/nem mutatja a többi sort, ami "nem oda való", s igy a másik érték eltűnik, amit látni kellene.
Nem szűrni akarok, csak összeadni.
Ideiglenesen megoldottam egy fkeres függvénnyel, ha nem lenne rá más megoldás.
Új táblázat, egyenkénti listázás, majd 5-10-15-ös sorban levő eredményt kiirja
[ Szerkesztve ]
-
MegaNorby
tag
-
Delila_1
Topikgazda
válasz m.zmrzlina #31651 üzenetére
Próbáld így: NumberFormat = "@"
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 m.zmrzlina #31651 üzenetére
Szia!
Szerintem az
Application.LanguageSettings.LanguageID(msoLanguageIDUI)=msoLanguageIDHungarian
lekérdezés megadja, hogy magyar vagy sem a beállítás, ettől függően állíthatod be a form paramétert "Szöveg" vagy "Text" értékre.
pl.
paramforma=iif(Application.LanguageSettings.LanguageID(msoLanguageIDUI)=msoLanguageIDHungarian,"Szöveg",'Text")
Activesheet.Pastespecial Format:=paramforma stb.Üdv.
[ Szerkesztve ]
-
samfishR
senior tag
válasz m.zmrzlina #34136 üzenetére
köszönöm!!
-
cekkk
veterán
válasz m.zmrzlina #34149 üzenetére
Köszönöm!
F oszlopban vannak de kijavítottam így:
=LEFT(F3;LEN(F3)-2) & "90" és csak annyit írki, hogy #Név?(#34150) Fferi50
Köszönöm! Működik, remélem a számlázó is megeszi majd. -
Pakliman
tag
válasz m.zmrzlina #36295 üzenetére
"Természetesen a fájlokon valaki úgy dolgozik, hogy a hálózati meghajtóról nyitja meg és oda is ment, van aki a saját gépére másolja ott dolgozik rajta aztán másolja vissza, néha nem is ugyanabba a könyvtárba és nem is ugyanazon a néven mint amin levette."
Ha ez nem lenne, makróval még meg is lehetne oldani. De így...
Ha Te vagy a felelőse/"karbantartója" ennek a dolognak, akkor MEG KELL tiltanod/akadályoznod, hogy mindenki azt csináljon, amit akar.
Ha ezt nem teszed, marad a kézimunka
Bár így is működhet a makró, csak ez esetben a Te feladatod lesz a makró futásakor kiválasztani a szükséges munkafüzeteket. -
Delila_1
Topikgazda
válasz m.zmrzlina #36465 üzenetére
Set honnanvegye = Application.InputBox("Jelöld ki a kiinduló területet", "Kiinduló terület", , , , , , 8)
Az utolsó paraméter (type, jelen esetben 8) adja meg, hogy területet vár az inputbox, ezért kell az értékadás elején a Set
Különböző típusú adatok bekérésénél az utolsó paraméter:
Type:=0 képlet
Type:=1 szám
Type:=2 szöveg
Type:=4 logikai, true vagy false
Type:=8 cellahivatkozás (range)
Type:=16 hibaérték, mint #érték
Type:=64 tömb érték (array)Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Bobrooney
senior tag
válasz m.zmrzlina #41891 üzenetére
Nem kötelező, alapból 0 lesz az értékük, logikainak meg FALSE.
[ Szerkesztve ]
-
Mutt
aktív tag
válasz m.zmrzlina #41897 üzenetére
Szia,
Ezt nézd meg: Fájl -> Beállítások -> Speciális -> E füzet megjelenítési beállításai -> Objektumoknál megjelenítendő -> Az összes
Szerintem inkább az adatérvényesítésnél van vmi elcsúszva (pl. rossz hivatkozás, hibás képlet).
üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Fferi50
őstag
válasz m.zmrzlina #41894 üzenetére
Szia!
Változók tekintetében nincs igazság, csak ajánlások. A VBA önmagában nem követeli meg a változók első használat előtti deklarációját sem: A változó egyszerűen létrejön, amennyiben egy értékadó utasítást adtál a változónév használatával. Pl. x=5 automatikusan létrehozza az x változót. Ez egyik oldalról nézve roppant praktikus, mert nem kell foglalkozni vele, hogy él-e a változód, hiszen az utasítással létrejön. De: Ezt a változót ebben az esetben nem ellenőrzi a VBA, sem típusra, sem tartalomra. Újabb értékadással más típusú változó lesz belőle. Ezen kívül komoly hibalehetőség is, mert egy betű elütése már egy másik változót hoz létre, nyilvánvaló szándékaid ellenére. Aztán a futtatás során keresheted a hibát napestig, mire rájössz, hogy a nap helyett véletlenül a naap (eddig nem létezett) változóhoz adtad a további számolás eredményeit.
Ezért igen erős ajánlás a VBA ellenőrzési és segítségnyújtási lehetőségeit minél jobban kihasználni. Ezt viszont csak a változók előzetes (explicit) deklarációjával érhetjük el, amikor megadhatjuk, hogy a változó milyen típusú legyen - és akkor csak olyan értéket fogad el -, privát vagy publikus legyen, esetleg megmaradjon az értéke mindaddig, amíg az Excelből ki nem léptünk(!). Ezek az opciók deklaráció nélkül (implicite) nem állnak rendelkezésre. A deklaráció egyúttal inicializálja is a változót a típusának megfelelő null/nothing/stb értékkel. Az ellenőrzés során kiderül, ha elütöttünk egy változó nevet, hiszen az nem lesz deklarálva előzetesen.
Az ellenőrzést egy modulban az Option Explicit utasítás modul eleji kiadásával érhetjük el, de ha a Tools - Options - Editor fülön a Require Variable Declaration opciót bepipáljuk, akkor a VBA minden modullapon automatikusan kiteszi a modul elejére az Option Explicit utasítást.
Tapasztalataim alapján egyértelműen hasznos az előzetes deklaráció, mindenkinek, kezdőknek pedig pláne csak ajánlani tudom. Megszokni könnyű és megkönnyíti a munkát. Hiszen deklarálni nemcsak eljárás elején, hanem menet közben is lehet, a változó első használata előtt.
Remélem ez segít a választásban.
Üdv. -
Fferi50
őstag
válasz m.zmrzlina #43421 üzenetére
Szia!
"erre külön be kell vezetni egy új névtartományt?"
Szerintem igen.
Bár az OFFSET függvény használatával úgy gondolom, ki lehet venni a második oszlopot:OFFSET(évkat,0,1,,1)
Ez angol formátum. Magyarban 2016-os óta ELTOLÁS a függvény neve.
(Nem tudom, milyen az Exceled, de amit beírtál, abban keveredik az angol és magyar szintaktika esetleg a régebbi verziókban még MATCH van magyarul is a HOL.VAN függvény helyett...?)
Üdv.[ Szerkesztve ]
-
Fferi50
őstag
válasz m.zmrzlina #43424 üzenetére
Szia!
A pontosvesszők mint elválasztók.... azok úgy tudom, csak magyarban működnek, angolban vessző van. Vagy rosszul tudom?
Üdv. -
Fferi50
őstag
válasz m.zmrzlina #43428 üzenetére
Szia!
Mutt megírta a megfejtést #43426.Üdv.
-
Fferi50
őstag
válasz m.zmrzlina #45252 üzenetére
Szia!
Bocs, de miért nem jó az, ha eleve kétoldalas nyomtatást állít be a user? Egy-egy lista után nem érzékeli a nyomtató, hogy ezt már új lapra kellene nyomtatnia?
Üdv. -
Fferi50
őstag
válasz m.zmrzlina #45254 üzenetére
Szia!
Szerintem sajnos makróból nem lehet ezt a beállítást szabályozni. Tudom, nehéz ügy de én megpróbálnám első körben az Excel nyomtató menüben a nyomtató beállításait kézzel megcsinálni, ha ott lehet kétoldalas nyomtatást beálítani, akkor megtenném. Utána ellenőriztetném egy próbanyomtatással, hogy valóban kétoldalast nyomtat-e.
Ha igen, akkor csak annyit kell tenned, hogy te beállítod kézzel a nyomtatási makró futása előtt ezt az opciót. (Illetve talán meg is őrzi a beállítást az Excel, ezt nem tudom, ellenőrizni kell.)
Egyébként pedig gondolom a printerdrivert kellene tudni programozni.
Üdv. -
Fferi50
őstag
válasz m.zmrzlina #45258 üzenetére
Szia!
Ha "kézzel" nem lehet normálisan beállítani, akkor szerintem makróból sem menne.
Talán meg kellene nézni, hogy a nyomtató kezelési könyve miket mond a vezérlési lehetőségekről illetve a driverről. Esetleg Windows parancssorral rá lehet venni a kétoldalas nyomtatásra, ha a driver vezérelhető így.
Üdv. -
Fferi50
őstag
válasz m.zmrzlina #45324 üzenetére
Szia!
Mi lenne, ha a kimenő tömböt csak 1 dimenziósra definiálnád. Ez a dimenzió így dinamikusan növelhető. Az elemeket elválasztójellel olvasnád be a tömb adott helyére.
Amikor kész vagy, akkor bemásolod az eredményt és az elválasztójel alapján a szövegből oszlopok (TextToColumns) függvénnyel tennéd át az oszlopokba az adatokat.
Persze kérdés, hogy ez mennyivel változtatja meg a futásidőt.
Esetleg csak a feltétel tartományokat beolvasni - akár külön-külön tömbbe - és akkor csak egy ciklusváltozó kell a vizsgálathoz.
Üdv.
Ps. Talán az AdvancedFilter függvény is érdekes lehet. -
marec1122
senior tag
válasz m.zmrzlina #45325 üzenetére
köszi
Csak megfontoltan :D "Öregember nem gyorsvonat!" John McClane
-
Fferi50
őstag
válasz m.zmrzlina #45328 üzenetére
Szia!űjEsetleg csak a feltétel tartományokat beolvasni:
Arra gondoltam, hogy csak azokat az oszlopokat olvasd be külön-külön tömbökbe, amelyekre a feltételt meg kell vizsgálni. Így lesz 2-3 (esetleg több) egydimenziós(nak tűnő) tömböd, amelyeknek azonos sorában lesznek az egy sorhoz tartozó vizsgálandó elemei, tehát egy ciklussal elég végigmenni a vizsgálat során.
A feltételnek megfelelő sorok számát egy szövegváltozóban gyűjteném összePe Pl.dim sorkell as string
sorkell="1:1"
sorkell=sorkell & ",5:5")
sorkell=sorkell & ",9:9")
Persze ezeket a feltétel megfelelősége esetén.
A hasonlítás megtörténte után pedig:Sheets(forrás).Usedrange.Range(sorkell).Copy Sheets(eredmény).Range("A1")
egy lépésben átmásolja a teljes szűrt tartományt.
Üdv. -
Mutt
aktív tag
válasz m.zmrzlina #45324 üzenetére
Szia,
Most olvasva végig a leírásodat, ugyanazt csinálod amit én is javaslok és napi szinten használok. Nincs jobb megoldás, kivétel ha Office Script-re térnél át mert ott simán lehet tömbök méretét növelni.
2 megoldást tudok javasolni.
1. A kiTömb csak 1-dimenziós legyen és a beTömb indexét tartalmazza. Amikor pedig íratsz ki, akkor a kiTömb-ből kapott index-el a beTömb-ből olvasod ki az értékeket.
Memóriában nem fog sok helyet foglalni, lassitani sem igen fogja a feldolgozást, egyedül csak a kiírás lesz lassabb mivel nem tudod egy lépésben a tömb tartalmát kiírni. (Ez a megoldás nálam egy 3 percig futó makróból 2 percet vett el, szóval nem ideális ha sokat kell a lapon dolgozni. A 2-es opcióval gyors kiíratást elérsz, de oda kell figyelni a helyes indexek használatára!)2. Ne legyen probléma hogy a nem fixelt definiált tömbnek csak az utolsó méretét lehet változtatni. Képzeld el, hogy ez a tömb 90 fokkal el van forgatva az eredetihez képest. Az első sor innentől az első oszlopban lesz, a második sor a második oszlopban és így tovább. A kódod ilyenkor csak a hivatkozásban változik.
Az alábbi minta kód a kék listából kiszűri az adatot, egy dinamikusan változó tömbbe.
A sárga a dinamikus tömb eredeti (inverz) állapotát mutatja, de azt vissza lehet könnyedén konvertálni.Sub ReDIM_Minta()
Dim minta As Range
Dim beTomb()
Dim kiTomb()
Dim oszlopok As Long, sorok As Long, i As Long, j As Long
Set minta = ActiveSheet.Range("A1").CurrentRegion
oszlopok = minta.Columns.Count
sorok = minta.Rows.Count
'erre nincs szükség, de látható hogy sorok és oszlopok szerint van a beTömb
ReDim beTomb(1 To sorok, 1 To oszlopok)
'adatok betöltése a tömbbe
beTomb = minta
'kiTomb-öt állítsuk be hogy annyi "sora" legyen mint az erdeti oszlop szám
ReDim kiTomb(1 To oszlopok, 1 To 1)
'az első sor a beTomb-ben egy fejléc másoljuk be a kitömb-be
For i = 1 To oszlopok
'itt látszik hogy csak az index sorrendet kell felcserélni
kiTomb(i, 1) = beTomb(1, i)
Next i
'szűréssel a nőket tartalmazó rekordokat tegyük be a kiTömb-be
For i = 2 To sorok
'ha a beTomb 4. oszlopában N van akkor
If beTomb(i, 4) = "N" Then
'növeljük a kiTomb utolsó dimenzióját 1-el
ReDim Preserve kiTomb(1 To oszlopok, 1 To UBound(kiTomb, 2) + 1)
'bemásoljuk az adatokat a beTomb-ből
For j = 1 To oszlopok
kiTomb(j, UBound(kiTomb, 2)) = beTomb(i, j)
Next j
End If
Next i
'konvertálatlan dump - sárga
ActiveSheet.Range("F1").Resize(UBound(kiTomb, 1), UBound(kiTomb, 1)) = kiTomb
'konvertált dump - zöld
ActiveSheet.Range("F10").Resize(UBound(kiTomb, 2), UBound(kiTomb, 1)) = Application.Transpose(kiTomb)
End Subüdv
[ Szerkesztve ]
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
tcsaba007
tag
válasz m.zmrzlina #45340 üzenetére
Köszi!!!!
-
Hege1234
addikt
válasz m.zmrzlina #45354 üzenetére
ennyit kaptunk ez a 7. feladat
képFKERES, INDEX?
nekem egyik se rémlik..
ezek szerint akkor van több megoldás is
melyik lenne a legegyszerűbb?
(kezdő szinten)[ Szerkesztve ]
-
Hege1234
addikt
válasz m.zmrzlina #45356 üzenetére
ohh.. tényleg félreértettem
igen a =NAGY(C2:C11;2) fv-t használtam hozzá
ha most már jól értem akkor ez a megoldás hozzá
=KICSI(C2:C11;9)
köszi a segítséget! -
Hege1234
addikt
válasz m.zmrzlina #45358 üzenetére
nagyság szerint az utolsó előtti számot kéri
ez nálam a 15
=KICSI(C2:c11;9)
amit te mutatsz ott kiválasztottam a 9 -et
mivel úgy adja meg az utolsó előtti számotvagy azért nem értem mert
nekem a 2. legnagyobb és az Utolsó előtti
az ugyan az vagyis mindkét sorba ez kerül?
=NAGY(C2:c11;2)[ Szerkesztve ]
-
Hege1234
addikt
válasz m.zmrzlina #45360 üzenetére
igen, az volt a jó ahogy írtad
köszi a segítséget és a példát[ Szerkesztve ]
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Alpha Laptopszerviz Kft.
Város: Pécs
Cég: Ozeki Kft.
Város: Debrecen