-
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
-
m.zmrzlina
senior tag
Makróból szeretném meghatározni a B oszlopban szereplő értékek maximumát.
Miért van az, hogy ez:
maxpont = Application.WorksheetFunction.Max(B:B)
nem működik, ez:
Set eredmenyek = Worksheets("Munka1").Range("B:B")
maxpont = Application.WorksheetFunction.Max(eredmenyek)viszont igen?
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #11937 üzenetére
Mindkettő működik. Köszönöm.
Az első verzió egészen pontosan így nézett ki :
maxpont = Application.WorksheetFunction.Max("B:B")
de az sem működött.
[ Szerkesztve ]
-
-
m.zmrzlina
senior tag
válasz Regirck #12293 üzenetére
Ez egyszerű DARABTELI()-vel megoldható. Mondjuk a Q oszlopba Q2-től lefelé létrehozol egy számsort 1-90-ig. R2-be a következő képletet teszed majd lemásolod R91-ig.
=DARABTELI($L$2:$P$2858;Q2)
Így minden számod mellé odakerül egy szám ami megmutatja, hogy hányszor fordult elő az L2:P2558 tartományban.
Ezután a Q:R tartományt R-re rendezed csökkenőre és meg is kaptad a leggyakrabban előforduló számokat.
Ennél egyszerűbb megoldás szerintem nincs (feltéve ha jól értettem a kérdést).
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz m.zmrzlina #12298 üzenetére
Itt egy képes példa is: http://kephost.hu/share-6740_4EE389DF.html
Nekem az A oszlopban vannak az azonosítók amelyek különböző számban szerepelnek a C1:G1000 tartományban. A "B" oszlopban már rendezve ott vannak a mérőszámok is, hogy melyik azonosító hányszor szerepel. A "B" oszlop képletei a megjegyzésben.
-
m.zmrzlina
senior tag
válasz cousin333 #12302 üzenetére
Ha új elemet adsz hozzá, azt be kell tenned a Q-beli listádba is.
Ez így van.A "minden elem egyszer" elv is nehézkes, ha több oszlopod is van
Ezt nem értem.Tudtommal a rendezés sem megy magától.
Valóban nem. 3-4 kattintás.Ráadásul lesz egy csomó cellád tele sosem használt értékekkel. Vagy azokat is mindig törölheted le.
???Tényleg, ha már itt tartunk: nem tudsz valami gyors módszert tömbök (nem tartományok!) gyors rendezéséhez? Esetleg két dimenziós tömböt egy adott oszlop szerint rendezni? Vagy a tömb tartalmát invertálni (az első elem legyen az utolsó... stb.)?
Túlértékelsz. Majd ha egyszer szükségem lesz ilyesmire akkor kitanulom ezt is. -
m.zmrzlina
senior tag
Pedig épp javasolni akartam hogy az idő adataid (kb így nézhet ki szám formátumban 40465,041898148) tizedesvesszőtől jobbra lévő részét (ez jelöli az órákat, perceket, másodperceket) kerekítsd az 1/1440=0,000694 egész számú többszörösére és máris megszabadultál a másodpercektől.
Nem vicc, tényleg működik.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz jani-wan #12343 üzenetére
Delila_1 is elmondaná ha itt lenne de ott szúrtad el hogy a duplakatt-tal a munkalaphoz rendelted a makrót.
Úgy csináld, hogy az Insert menüpontnál válaszd a Modul opciót és az így kapott az előzőhöz nagyon hasonló szövegszerkesztő-szerű területre másold a kódot. Nem fog magától működni, előbb tedd ktívvá a kérdéses munkalapot Excelben majd a VBA editorban nyomj egy F5-öt.
Meg leht csinálni önműködőre is de akkor kicsit másmilyen lesz a kód.
Kérdés: A1, B1 tartalmát te írod vagy valami képlet adja?
-
m.zmrzlina
senior tag
válasz jani-wan #12346 üzenetére
Ez egy elég buta kód, de kiindulásnak jó lesz.
Private Sub Worksheet_Change(ByVal Target As Range)
For i = 1 To 20
If Cells(1, i).Value <> "igen" Then Sheets("Munka1").Columns(i).EntireColumn.Hidden = True Else Sheets("Munka1").Columns(i).EntireColumn.Hidden = False
Next
For j = 1 To 20
If Cells(i, 1).Value <> "igen" Then Sheets("Munka1").Rows(i).EntireRow.Hidden = True Else Sheets("Munka1").Rows(i).EntireRow.Hidden = False
Next
End SubEzt a kódot viszont a másik munkalaphoz kell rendelni (amelyiken beállítod hogy mely oszlopok érdekelnek az elsőn) úgy ahogy az előbb nem jött össze duplakattal, vagy lent a munkalap fülön jobkatt majd kód megjelenítése.
Azt feltételezi, hogy az első oszlopban és az első sorban (A1, A2, A3..... illetve A1, B1, C1...)cellákba írt "igen" szóval állítod be, hogy melyik oszlopra és melyik sorra van szükséged a másik munkalapon (az én esetemben a neve Munka1).
Ha bármelyik cellát átírod az első sorban vagy oszlopban "igen"-re (vagy kitörlöd a benne lévő "igen"-t) akkor lefut a kód és a másik munkalapon csak az "igen"-es sorok és oszlopok megfelelői fognak látszani. Ha nem "igen"-re írod át akkor is lefut csak nem észlelsz semmi változást.Na ez most jó bonyolult de kérdezz bátran ha valami nem világos!
Mostani formájában 20 oszlopot és 20 sort tud kezelni de ez ezerféle módon variálható.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz m.zmrzlina #12348 üzenetére
Bocsánat! A kód helyesen, rendberakott ciklusváltozókkal:
Private Sub Worksheet_Change(ByVal Target As Range)
For i = 1 To 20
If Cells(1, i).Value <> "igen" Then Sheets("Munka1").Columns(i).EntireColumn.Hidden = True Else Sheets("Munka1").Columns(i).EntireColumn.Hidden = False
Next
For j = 1 To 20
If Cells(j, 1).Value <> "igen" Then Sheets("Munka1").Rows(j).EntireRow.Hidden = True Else Sheets("Munka1").Rows(j).EntireRow.Hidden = False
Next
End Sub[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz jani-wan #12352 üzenetére
Próbáld ezt:
Private Sub Worksheet_Change(ByVal Target As Range)
For i = 1 To 60
If Cells(2, i).Value <> "igen" Then Sheets("Munka1").Columns(i).EntireColumn.Hidden = True Else Sheets("Munka1").Columns(i).EntireColumn.Hidden = False
Next
End SubHa jól emlékszem ötvenvalahány oszlopot írtál ezért átírtam 60-ra a kezelt sorok számát. A Munka1-et javítsd át a te munkalapod nevére!
-
m.zmrzlina
senior tag
válasz jani-wan #12360 üzenetére
Bocs nem voltam egyértelmű, és összekeverted a két dolgot.
Tehát ha jól értem van (legalább) két munkalapod. Az egyik amin az adatokat akarod ellenőrizni a másik amin beállítod, hogy mely oszlopokra van szükséged.
Van még a következő kód (most csak erre lesz szükséged semmi másra):
Private Sub Worksheet_Change(ByVal Target As Range)
For i = 1 To 60
If Cells(2, i).Value <> "igen" Then Sheets("Munka1").Columns(i).EntireColumn.Hidden = True Else Sheets("Munka1").Columns(i).EntireColumn.Hidden = False
Next
End SubEzt a kódot a beállító munkalapodhoz rendeled úgy, hogy a lapfülön jobbkatt majd Kód megjelenítése opciót választod. Az így kapott VBA mezőbe bemásolod a kódot úgy, hogy a Munka1 munkalapneveket átírod a saját munkalapod nevére. Nem amelyik fülén kattintottál az előbb, hanem azéra amin az adatokat fogod ellenőrizni.
Ebbe a munkafüzetbe semmi más kód nem kell!
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz jani-wan #12365 üzenetére
azt jelenti hogy
Ha a cellák értéke a második sorban minden oszlopban 1-től 60-ig nem egyenlő Igen-nel akkorAzt jelenti, hogy ha az első hatvan oszlop második cellájának értéke nem egyenlő "igen"-nel akkor az ahhoz tartozó oszlopot a másik munkalapon elrejti. Ez a rész felelős ezért:
Then Sheets("Munka1").Columns(i).EntireColumn.Hidden = True
Másképpen: amelyik oszlop második cellájában "igen" van az annak megfelelő oszlop látszani fog a másik munkalapon.
Programozni én sem tudok, aki viszont velem ellentétben tud azok számára ez nyilvánvaló.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz jani-wan #12369 üzenetére
tehát, ha nem tévedek, ez a kód a beállító lap meghatározott celláit veszi figyelembe sorban oszloponként.
Így van!A probléma hogy míg a C2 cella a H25-ből vesz adatot addig a G2 a J25-ből.
Ez egyáltalán nem problémaa legegyszerűbb az lenne ha csak erre a lapra szólna a macro ahol a statokat szeretném látni az alapján hogy a cella értéke "" vagy valami.
Akkor én is félreértettem mert úgy gondoltam, hogy "igen" van abban a cellában amelyik oszlopára szükség van.Szerintem legjobb lenne, ha magánban küldenél egy lebutított munkafüzetet amiben nincsenek nem publikus adatok viszont a szerkezete megegyezik az igazival. Így csak vaktában lövöldözök, még a végén lábon lövöm magamat.
-
m.zmrzlina
senior tag
válasz jani-wan #12453 üzenetére
Ez a makró azt akarja csinálni, hogy a 2. oszlop első cellájától végigmegy a 2. oszlop utolsó olyan cellájáig amiben van valami. Minden cellában lévő dátumot összehasonlítja a megadott dátummal (12/31/2012) és ha az kisebb mint a megadott dátum akkor törli az aktuális cella sorát. A baj ott van, hogy ebben a sorban:
Cells(i, "B").EntireRow.delete
szerintem elírás van. Írj az i helyére x-et. (a honlapon ahonnan kimásoltad ott is hibásan van) Illetve ha már a Cells van használatban akkor a "B" helyett (második argumentum) én 2-t használnék
Ja és hagyd ki a Debug.Print Cells(x, "B").Value sort is hacsak nem akarod kiíratni az Immediate ablakba az összes megvizsgált cella értékét!
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz Vizes Tomi #12546 üzenetére
Mi alapján kell a másik táblázatot szervezni?
-
m.zmrzlina
senior tag
válasz Vizes Tomi #12546 üzenetére
Esetleg ha az FKERES()-t a HA()-val kombinálod valahogy így:
=HA(FKERES(F1;$A$1:$D$12;2;0)="";"";FKERES(F1;$A$1:$D$12;2;0))
-
m.zmrzlina
senior tag
válasz Vizes Tomi #12551 üzenetére
Nincs mit.
-
m.zmrzlina
senior tag
válasz erich85T #12573 üzenetére
Ha a valódi táblázatod is olyan szerkezetű mint a példa (nincs az ügyfelek oszlopában üres cella) akkor lehet ez egy megoldás:
Sub osszead()
Dim eredmeny As Double
Dim ugyfel As String
eredmeny = 0
Cells(2, 1).Select
ugyfel = ActiveCell.Value
Do Until ActiveCell.Value = ""
Do While ActiveCell.Value = ugyfel
eredmeny = eredmeny + ActiveCell.Offset(0, 1).Value
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Offset(-1, 2).Value = eredmeny
eredmeny = 0
ugyfel = ActiveCell.Value
Loop
End SubNálam A1-től indul a táblázat.
-
m.zmrzlina
senior tag
Add meg képlettel!
1, Jelöld ki a címek tartományát
2, Feltételes fomázás>Cellák formázása ha a képlet igaz
3, Képlet helyére pl: =AB2>5 (természetesen ide a te feltételed kerül)
4, Add meg a kívánt formátumotTermészetesen összetettebb képleteket is meg lehet adni, és ez a lehetőség a 2007 előtti Exceleknél is megvolt.
-
m.zmrzlina
senior tag
Tehát pl az 2es sorban akkor az AB2alapján fogja számolni, de a 3as sorban is az AB2 alapján fogja számolni :S
Nem, ha nem abszolút, hanem relatív hivatkozást használsz ($ jel nélkül), úgy ahogy a példámban van. Olvasd el ezt és Delila_1 a kérdésre adott válaszait. Nagyon hasonló a probléma mint a tiéd. Ez a mondat:
" A két oszlopra egyszerre bevitt képlet úgy működik, mintha beírtad volna az A oszlopba, majd átmásoltad volna a B-be " a sorokra is vonatkozik, csak ezt semmilyen Sugó (aki tudvalevőleg a barátunk ) nem írja. Vagy csak én vagyok balf...és nem találtam sehol.Egyébként 2010es Excelem van, remélem hogy ebben van lehetőség ezt megoldani
Van. Nekem 2007-em van és azzal is megy. Sőt a korábbi verzióknál is van hasonló lehetőség csak sokkal korlátozottabb.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz dellfanboy #12892 üzenetére
Esetleg próbáld meg ezt!
Bizonyos Epson nyomtatókhoz ingyen adják (adták). Meglepően jó karakterfelismerést csinál. Nem mondom, hogy nem kell az Excelbe illesztés után gyomlálgatni de messze kevesebb munka mint begépelni a scannelt dokumentum tartalmát.
-
m.zmrzlina
senior tag
válasz DopeBob #12900 üzenetére
Nem tudom milyen Excel verziót használsz de a 2007 előttieknél ez a módszer működik. Valójában arról szól, hogy beállítod a kérdéses lap visible tulajdonságát xlSheetVeryHidden-re majd egy jelszóval levéded a projektet. Excel97-tel kipróbáltam, működik.
2007-nél kicsit más a helyzet ott ez az út makrómentes (*.xlsx) fájllal nem járható. Vagy csak én csinálok valamit rosszul.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
Van egy kimutatásom, abban egy oszlop amiben a következő 4 értékeket vehetik fel az elemek:
"0"
"no"
telefonszám pl a köv. formátumban 301110000
emailcímSzeretnék egy szűrést csinálni ami csak a telefonszámok sorait jeleníti meg. Feliratszűrővel egyenként ki tudom szűrni mindhárom felelsleges értéket (0, no, emailcím) de együtt nem megy.
Lehet-e a szűrésben valahogyan összekapcsolni több feltételt?
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz föccer #13066 üzenetére
Segédoszloppal autoszűrő nélkül is megy, ha a kérdéses oszlopot beviszem az Érték mezőbe és az Összegzés alapját Összegre állítom. Innen egy Értékszűréssel megoldható.
Arra gondoltam, hogy a Feliratszűrésben is meg lehet adni többszörös feltételt csak én nem jövök rá, hogy hogyan.
-
m.zmrzlina
senior tag
Van egy ilyen táblázatom.
G1-ben listás adatérvényesítéssel kiválaszthatók a fejléc elemei. Azt szeretném, hogy ha G2-be beírok egy számot akkor mondjuk G3-ban megjelenjen, hogy a G2-be írt szám benne van-e a G1-ben kiválasztott elemmel jelölt oszlopban. Én DARABTELI()-vel gondoltam megoldani de nem tudom megadni a változó tartományt a f-nek.
-
m.zmrzlina
senior tag
Hogyan nevezzük hivatalosan a sor- és oszlopazonosítók metszéspontjában lévő mezőt amivel a munkalap összes celláját egyszerre ki lehet jelölni?
Egy help-ben kellene többször hivatkozni rá lehetőleg nem egy kétsoros meghatározással
-
m.zmrzlina
senior tag
Hogyan tudom elérni, hogy ha egy cellába teszek egy hiperlinket ami ugyanannak a munkalapnak egy másik cellájára mutat akkor a hivatkozott cella a bal felső cella helyére kerüljön a kattintás után?
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz Delila_1 #13499 üzenetére
Fire és Delila köszönöm a megoldást. Működik.
Eredetileg ugyan nem így (makróval) terveztem hanem a Hivatkozás beszúrása> Dokumentum adott pontja menüpont segítségével de azzal a módszerrel a hivatkozott cella a "kliensterület" jobb alsó sarkába került (vagy máshová de nem a bal felsőbe). Gondolom a trükk a Scroll:=True-ban van de ezt nem lehet közvetlenül használni a munkalapon.
-
m.zmrzlina
senior tag
Adott egy táblázat:
"A" oszlopban azonosító számok, B oszloptól kezdődően egy sorban az azonosító számokhoz tartozó adatok (kb 50) Ebből a szerkezetből van mondjuk 200 sor.Másik munkalapon egy form amit fel kell tölteni egy adott azonosítóhoz tartozó adatokkal természetesen nem sorban.
Hirtelen nem nagyon látok más módszert mint egyenként másolni a cellákat
egyik!A1--->másik!B5
egyik!B1--->másik!B26
egyik!C1--->másik!C5
.
.
.
egyik!AJ1--->másik!P27Van-e valami elegánsabb módszer ennél? Mire érdemes guglizni?
-
m.zmrzlina
senior tag
válasz Delila_1 #13561 üzenetére
Itt egy végletekig leegyszerűsített illusztráció:
A felső öt sor az adatbázis. A valóságban természetesen sokkal nagyobb sor és oszlop irányban is. A bekeretezett rész a form amit ki kell tölteni. A valóságban külön munkalapon vannak.
A harmadik munkalapon van egy lista ami részhalmaza a az A oszlopban lévő számoknak(azonosítók). MATCH()-csel megkeresem a lista első elemét az adatbázisban majd a hozzá tartozó adatokat beírom a formba majd mentem a formot egy új munkafüzetbe.
Ezután form törlése, a lista második elemének keresése, form kitöltés, mentés stb... amíg van a listában elem.A keresés és a mentés nem gond csak a form kitöltésére keresek egy elegánsabb megoldést mit hogy a:
Worksheets("lista").Range("A" & sor).Copy Worksheets("űrlap").Range("A2")
sort leírjam 50-szer néha többször (természetesen megfelelő cellahivatkozásokkal) a makróba. (a hivatkozásokat ne nézd nem illenek az képhez)
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz Delila_1 #13566 üzenetére
Amint írtam az adatbázis és a form is bonyolultabb a kép csak illusztráció.
Arra gondoltam, hogy nem lehetne-e bevezetni változót minden adatra (ami akár 50-nél több különböző változót jelentene) Ezt viszonylag könnyen fel lehet tölteni ciklussal, aztán kiirogatni megfelelő helyre a formra.
Nincsen ötletem.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
Egy külső adatbázisból importált tömb fejlécét szeretném leellenőrizni, hogy megvan-e benne minden szükséges oszlop amiből a makrónak kell dolgoznia. (A külső adatbázisban kívánság szerint összeállítható az Excelbe exportálandó "étlap")
Mi a célszerű megoldás ebben az esetben?
=DARABHATÖBB()-bel próbálkozom, de nem sok sikerrel
=DARABHATÖBB(B10:M10;"=alma") ez működik és 1-et ad vissza ha benne van az alma
=DARABHATÖBB(B10:M10;"=alma";B10:M10;"=banán") ez 0-t ad vissza ha mindkettő benne van.
Valsz. nem értem ezt a fv-t[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz m.zmrzlina #13760 üzenetére
Ez viszont:
=DARABHATÖBB(B10:M10;"=alma";B11:M11;"=banán")
1-et ad vissza, ha mindkettő benne benne van a hozzá tartozó kritériumtartományban és 0-t ha bármelyik hiányzik.
Én viszont azt szeretném ha azonos kritériumtartománnyal is működne a képlet.
Új hozzászólás Aktív témák
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Autómatricák a legjobb minőségben, több ezer minta! PH tagoknak 30% kedvezmény!
- Új, bontatlan World of Warcraft gyűjtői kiadások
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Megmaradt - Eredeti Humble, Choice - Steam kulcsok
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs