-
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 poffsoft #12449 üzenetére
Az előző lap kódnevét pl. így kaphatod meg:
lap = ActiveSheet.CodeName
lap = "Munka" & Right(lap, Len(lap) - 5) - 1
MsgBox lapNem szerencsés dolog aktív cellára hivatkozni makróban, mert ha véletlenül másik cellára kattintasz a makró indítása előtt, hamis eredményt kapsz.
Írd le pontosan, mit szeretnél elérni a makróval.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
jani-wan
tag
válasz jani-wan #12438 üzenetére
No, arra már találtam leírást hogy lehet sort töröltetni dátum alapján:
Sub DeleteRowbyDate()
Dim x As Long
For x = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row
Debug.Print Cells(x, "B").Value
If CDate(Cells(x, "B")) < CDate("12/31/2012") Then
Cells(i, "B").EntireRow.delete
End If
NextEnd Sub
de sajnos nem értem egészen
Jól látom hogy ez
If CDate(Cells(x, "B")
a B oszlop x cellájában található dátumot megvizsgálja hogy kisebb-e mint "az általam megadott dátum", és ha igen akkor törli a "B" oszlop 9. sorát?viszont lövésem sincs az utasítás elején mit csinál.
mi a csuda az ott az x?
mert ha itt
If CDate(Cells(x, "B")
az x-et átírom a dátumot tartalmazó cellára akkor
itt
For x = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row
mi a csuda folyik????
Ezt is át kell írnom?Arról nem beszélve hogy ez csak egy sor töröl, vagy be lehet álltani hogy több sort töröljön?
És ha már kérdezek akkor még egy dolog amit nem tudok, hogy van-e makro ami időnként lefut saját magától, és nem kell nekem aktiválni minden alkalommal?
Előre is köszönöm a segítséget.
-
GrandS
senior tag
Hogy tudom megszámolni, hogy egy adott oszlopban egy adott kifejezés hány sorban szerepel?
Kösz!
-
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 ]
-
Delila_1
Topikgazda
válasz jani-wan #12453 üzenetére
Mikor sorokat töröltetsz, az oszlop aljától felfelé kell elindulni, másképpen kimaradnak a vizsgálatból bizonyos sorok.
Ez a makró a második sortól – címsort feltételezve – törli azokat a sorokat, ahol a B oszlopban kisebb dátum szerepel, mint az E1 cellában.
Sub DeleteRowbyDate()
Dim so As Long
For sor = ActiveSheet.UsedRange.Rows.Count To 2 Step -1
If Cells(sor, "B") < Range("E1") Then
Rows(sor).EntireRow.Delete
End If
Next
End SubAz ActiveSheet.UsedRange.Rows.Count a lapon létező utolsó sor számát adja.
Ha több sor van a lapon valamelyik oszlopban, mint a B-ben, a fenti helyett ezt írd: Range("B1").End(xlDown).Row[ 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 m.zmrzlina #12457 üzenetére
"ha már a Cells van használatban akkor a "B" helyett (második argumentum) én 2-t használnék"
Mostanában szoktam rá, hogy "B"-t használok inkább, mint oszlopszámot. 2-nél még könnyen követhető, de pl. 179-nél egy javításnál egyszerűbb követni a betűvel – FW – jelölt oszlop átírása.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
amdk7
aktív tag
Sziasztok,
Kellene egy kis segítség!
Van egy ilyen táblázatom (az eredetit leegyszerüsítettem picit ):A következő kellene:
A G8 cellába bevitt szöveget keresném az "B" oszlopban.
Ha megtalálta, akkor a hozzá tartozó adatokat kellene kiíratnom (szín, szám stb.)Remélem egyszerüen és érthetően fogalmaztam, gondolom van valami egyszerü megoldása.
Köszönöm előre is.
Üdv: amdk7
[ Szerkesztve ]
Adataimat többé kevésbé az adatlapomon, illetve a személyigazolványomban találod meg. :)
-
GrandS
senior tag
válasz m.zmrzlina #12463 üzenetére
Csak a keresett mező szerint rendezettnek kell lenni a táblázatnak!
[ Szerkesztve ]
-
jani-wan
tag
válasz m.zmrzlina #12457 üzenetére
köszi értem
akkor ezt el is felejtem gyorsan -
Delila_1
Topikgazda
válasz jani-wan #12467 üzenetére
A VB szerkesztőben duplaklikk a ThisWorkbookon, jobb oldalra
Private Sub auto_open()
Dim so As Long
For sor = Range("B1").End(xlDown).Row To 2 Step -1
If Cells(sor, "B") < Range("E1") Then
Rows(sor).EntireRow.Delete
End If
Next
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.
-
amdk7
aktív tag
válasz Delila_1 #12462 üzenetére
Angol excel 2007 fut a gépemen, úgyhogy a HLOOKUP -al használtam azt amit javasoltál, (G9=HLOOKUP(G8;b:d;2;0)
viszont a válasz: #N/AA 2-es szám azt jelenti, hogy melyik oszlopban keressen?
A 0-as mit jelent?[ Szerkesztve ]
Adataimat többé kevésbé az adatlapomon, illetve a személyigazolványomban találod meg. :)
-
-
fi:zi'k
nagyúr
Mi a különbség a két művelet között? Ugyanazt kapom értéknek.
=HA(ÉS(E19<>"";SZÁM(E19));KEREKÍTÉS(E19*D18*0,9;0);"-")
és
=HA(E19<>"";KEREKÍTÉS(E19*D19*0,9;0);"-")Az egész onnan jön, hogy szeretném bővíteni/módosítani a képletet. Ez a P19 cellában van.
Vizsgálnia kellene hogy az adott sor Y cellájában mi szerepel. Ha semmi nem szerepel, akkor a KEREKÍTÉS(E19*D18*0,9;0) műveletet hajtsa végre, ahogy eddig is. Ha szám, akkor pedig a D19*E19 műveletet.Remélem érthető vagyok.
[ Szerkesztve ]
96.5% MORE WUB-WUB ◄◄|►► Hirdetéseim: https://goo.gl/khUC1Y ◄◄
-
poffsoft
addikt
válasz Delila_1 #12452 üzenetére
Egy egész éves műszakbeosztásban pl a megmaradt szabadnapokat minden hónapban összesíteni kell, és ezt görgetni végig az éven. Mivel minden hónap külön lapon van, így az előző hónap zárását a következő lapra (hónapra) át kell másolnom nyitásként, minden dolgozóra (sorra). Ezt szeretném ( a képlet beírását) klasszikusan makróként picit egyszerűsíteni. Tehát akkor futtatom a makrót, amikor pontosan azon a cellán állok, ahová az előző lap adott cellájának értékét szeretném bemásolni. A következő makró meg az, amelyik már az adott lapon, az első (előző lapra mutató képletet) átmásolja minden szükséges cellámba, de ezt már megcsinálja a makrófelvevő.
Pontosan annyi a problémám, hogy a makrófelvevő az előző lapra hivatkozáskor abszolút címet használ a lapnál ('LAP1!RC'), ahelyett, hogy relatív címet szúrna be ( valami ilyesmit, mint az Application.Caller.Parent.Previous.Range().Value)...
[ Szerkesztve ]
-
Delila_1
Topikgazda
válasz poffsoft #12480 üzenetére
Makróíráshoz, ami figyeli a bevitel helyét, tudnom kellene, melyik oszlopról van szó, de ezt nem adtad meg. Őszintén szólva az egész leírás kicsit zavaros nekem.
Írtam egy makrót, ami a 2. laptól (az első lap a januári adatokat tartalmazza) a 12-ig a C2:C30 tartományba beírja az előző lap C2:C30 értékeit hivatkozással. Hátha hasznodra válik.
Sub keplet()
Dim lap%
For lap% = 2 To 12
Sheets(lap%).Select
Range("C2:C30") = "=" & Sheets(lap% - 1).Name & "!C2"
Next
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.
-
WLDRK
csendes tag
Sziasztok!
Szeretném a segítségeteket kérni abban, hogy excel egy munkalapján egy cellában szeretnék legördülő választéklistát létrehozni úgy, hogy az adattáblából kiválasztott elemhez tartozó többi oszlopban található információt is megjelenítse, ne csak azt az egy cellát.
Pl. ilyenek az oszlopok:
Név város irsz. telefon.
A legördülő listából , ha kiválasztok egy nevet akkor azt szeretném, ha hozná automatikusan magával az össze többi adatot is.
Ezt hogy lehet megcsinálni?
Köszönöm előre is a segítséget!
Üdv
WLDRK
-
félisten
A hagyományos érvényesítéssel létrehozott lenyíló csak egy oszlopot tud megjeleníteni, nem többet. Ahhoz, hogy mégis kivitelezhető legyen egy egyszerű "trükköt" kell alkalmazni.
Nyilván van egy munkalapod, ahol az adatok kapnak helyet, a példádnál maradva a NÉV, VÁROS, ISZ, TELEFONSZÁM külön oszlopokban.
Vegyél fel egy plusz oszlopot, amiben meg egyesíted egy egyszerű függvénnyel ezt a 4 oszlopot, majd az érvényesítéskor létrehozott lista tartományaként ezt adod meg.Képben, mire is gondolok: [link]
[ Szerkesztve ]
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)
-
félisten
válasz fi:zi'k #12479 üzenetére
A 2 függvény között a hibakezelésben van különbség, mert az első azt is megvizsgálja, hogy ha az E19 nem üres, akkor szám-ot(vagy számmá alakítható szöveget) tartalmaz-e vagy sem, hisz string-el nem lehet matematikai műveleteket végezni. A második ezzel nem foglalkozik, így ha az E19-be beírod, hogy UBUL, akkor az #ÉRTÉK hibát ad eredményül, míg az első függvény nem csinál semmit(pontosabban a kötőjelet adja vissza, mint üres cella esetén is)
[ Szerkesztve ]
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)
-
WLDRK
csendes tag
válasz Fire/SOUL/CD #12485 üzenetére
Szuper, nagyon köszönöm!
Ez már nekem is eszembe jutott, csak nem vagyok benne biztos, hogy ezt így elfogadják.
Mi lenne a másik megoldás? Makrót kell rá írni?
-
fi:zi'k
nagyúr
válasz Fire/SOUL/CD #12487 üzenetére
Akkor jól sejtettem.
A második felében, a képlet bővítésében is tudsz segíteni?
96.5% MORE WUB-WUB ◄◄|►► Hirdetéseim: https://goo.gl/khUC1Y ◄◄
-
félisten
Először azért kérdezd meg, hogy elfogadják-e, mert a másik lehetőség az az, amit pedzegetsz is, azaz a makrózgatás, persze vannak olyan alapvető dolgok, amik esetén elkerülhető a makró, de ahhoz pontosan kell tudni a feladatot.
fi:zi'k
Az ÉS függvényen belül felsorolhatsz több feltételt, nem csak kettőt, és az hivatkozhat bármely cellára és annak tartalmára is.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)
-
WLDRK
csendes tag
válasz Fire/SOUL/CD #12490 üzenetére
Fire,
Köszönöm, meg is csináltam megmentetted az állásom ( remélem )
Ha mégsem fogadják el, hétfőn kereslek! és ezt nyugodtan veheted fenyegetésnek
KÖszönöm!
-
fi:zi'k
nagyúr
válasz Fire/SOUL/CD #12490 üzenetére
Ez így mennyire jó? Mert a kapott értékek jók.
=HA(ÉS(E19<>"";SZÁM(E19));HA(Y19<>"";D19*E19;KEREKÍTÉS(E19*D19*0,9;0));"-")
96.5% MORE WUB-WUB ◄◄|►► Hirdetéseim: https://goo.gl/khUC1Y ◄◄
-
WLDRK
csendes tag
Még egy kérdés...
Ha egy táblázatból csak azokat a sorokat akarom kiíratni egy másik munkalapra amelyek januári dátummal szerepelnek? ezt melyik fgv-vel tudom megtenni?
-
félisten
válasz fi:zi'k #12492 üzenetére
Hogy mennyire jó, azt nem tudom, de ha úgy működik ahogy szeretnéd, akkor nyilván jó.
Szövegesen leírva ez a képlet azt csinálja, hogy ha az E19 számot tartalmaz, akkor megvizsgálja az Y19 tartalmát, ha Y19 nem üres, akkor összeszorozza a 2 megadott cellát, ha meg üres, akkor kerekítést is eszközöl.
Na ha ez volt a feladat/a cél, akkor a képlet jó.
Ha így mondatszerűen meg tudod fogalmazni a feladatot, akkor a képletek legyártása is könnyebb.
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)
-
félisten
Használj szűrőt. A dátumokat tartalmazó oszlopokat szűrőd Dátumszűrők/E hónapban, aztán egérrel kijelölöd a szűrt területet és copy/paste, majd megszünteted a szűrést.
Egyszerűbb, mint feleslegesen függvényt írni (persze ha csak ennyi a feladat és nincs egyéb igény, amiről esetleg nem tettél említést)
[ Szerkesztve ]
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)
-
WLDRK
csendes tag
válasz Fire/SOUL/CD #12495 üzenetére
Igen, lehet, hogy bővebben kellett volna leírnom.
Tehát, van ( vagy lesz, ez mindegy most ) 1000 megrendelés ( tehát 1000 sor ) és azt szeretném, ha az 1000 sorból, mint táblázatból ( adattáblából ) majd automatikusan 12 másik munkalapra gyűjteni hónaponként a megrendeléseket.
Szükségem lenne erre... hogy ne szűrögetni kelljen.
Szerinted van erre megoldás ami nem makro?
-
fi:zi'k
nagyúr
válasz Fire/SOUL/CD #12494 üzenetére
Köszi, azt hiszem jól leírtad, tehát jó lett.
96.5% MORE WUB-WUB ◄◄|►► Hirdetéseim: https://goo.gl/khUC1Y ◄◄
-
félisten
"Szerinted van erre megoldás ami nem makro?"
makró nélkül + emberi beavatkozás nélkül nem hiszem, hogy kivitelezhető. Ha meg már emberi beavatkozás kell, akkor ez a feladat max 5 percet vesz igénybe dec 31.-én...
(12x kell eljátszani a szűrést meg a copy/paste-et...)Olyan automatizált makrót lehet írni, ami ha valamilyen változás/módosítás hajtódik végre az összesítő munkalapon, akkor a megadott munkalapokra átmásolgatja az adott hónaphoz tartozó bejegyzéseket/sorokat. (pl van egy 2012 nevű munkafüzet, ezen belül egy összesítő nevű munkalap meg még 12 darab, a hónapok nevével illetett munkalap. Ha az összesítőn történik módosítás, akkor lefut a makró, és a háttérben elintézi a dolgot)
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)
-
WLDRK
csendes tag
válasz Fire/SOUL/CD #12498 üzenetére
Nagyon köszönöm ezt potnosan így képzeltem el én is.
A nagy kérdés, ki az aki ezt meg is írja nekem? mert ehhez hülye vagyok már. Illetve lehet erre találni "sablont" valahol, amit csak az én escel-em formájára kell "írni"?
-
csferke
senior tag
válasz Fire/SOUL/CD #12485 üzenetére
Ez téma engem is érdekelne olyan formában, hogy amikor a legördülőből kiválasztódik egy NÉV pl. A1-ben akkor legyen A2=VÁROS A3=TELEFONSZÁM mint egy számlán.
Folytatva hogyan lehet elérni, hogy az az a mező amelyben a legördülő van nyomtatáskor csak sima szövegként látszódjon. Eddigi kísérletem során nyomtatáskor is látszott a mezőkeret a lenyitáshoz való nyíllal.
Új hozzászólás Aktív témák
- Windows 10/11 Home/Pro , Office OEM/Retail kulcsok
- Bontatlan - BATTLEFIELD 1 Collectors Edition - Játékszoftver nélkül
- Bitdefender Total Security 3év/3eszköz! - "Tökéletes védelem most kedvező áron..."
- Windows, Office licencek a legolcsóbban, egyenesen a Microsoft-tól - 2990 Ft-tól!
- Microsoft licencek KIVÉTELES ÁRON AZONNAL - UTALÁSSAL IS AUTOMATIKUS KÉZBESÍTÉS - Windows és Office