- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Magga: PLEX: multimédia az egész lakásban
- Geri Bátyó: Agglegénykonyha 3 – Paradicsomos káposzta (amit amúgy utálok)
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- Elektromos rásegítésű kerékpárok
- Parci: Milyen mosógépet vegyek?
- eBay-es kütyük kis pénzért
- Luck Dragon: Asszociációs játék. :)
- sziku69: Szólánc.
- gban: Ingyen kellene, de tegnapra
-
LOGOUT
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
veterán
válasz
karlkani #29097 üzenetére
Szerintem akkor is kell törölni az I értékét és a megjegyzést, ha a D és H közül csak az egyiket törlöd. Másképp minek az eredménye van az I-ben?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sor As Long, szoveg As String, osszeg As Double
sor = Target.Row
If Target.Column = 4 Or Target.Column = 8 And Target.Row > 1 Then
Application.EnableEvents = False
If IsNumeric(Cells(sor, "D")) And IsNumeric(Cells(sor, "H")) _
And Cells(sor, 4) <> "" And Cells(sor, 8) <> "" Then
osszeg = Round(Cells(sor, "H") - Cells(sor, "D") * 8, 1)
With Range("I" & sor)
On Error Resume Next
.AddComment
.Comment.Visible = True
.Comment.Shape.Select True
szoveg = "I/D=" & osszeg & "/10=" & Format(osszeg / 10, "# ##0.0") & " Ft/liter"
.Comment.Text Text:=szoveg
Selection.AutoSize = True
Selection.Visible = False
End With
Cells(sor, "I") = Format(osszeg, "# ##0.0 Ft/liter")
Else
Cells(sor, "I") = ""
Cells(sor, "I").Comment.Delete
End If
Range(Target.Address).Select
Application.EnableEvents = True
End If
End Sub -
lenkei83
tag
válasz
twingos #29098 üzenetére
Szia!
Két kérdésem is van:
Az egyik, hogy melyik oszlopban kell figyelembe venni, az utolsó aktív sort?
A másik, hogy milyen exceled van? Ha 2007 vagy frissebb, akkor én így használnám a képletet:
=HAHIBA(HOL.VAN(V2;AB:AB;0);"") --> A V:V-t lecseréltem V2-re, feltételezve, hogy az első sor fejlécet tartalmaz:Ha 2007 előttit használsz akkor pedig hasonló mint a tiéd: =HA(HIBÁS(HOL.VAN(V1;AB:AB;0));"";HOL.VAN(V1;AB:AB;0))
A kód pedig ennyi lenne 2007-es excelt (vagy későbbit) feltételezve
Sub InsertFormula()
Range("X2:X" & Cells(Rows.Count, "A").End(xlUp).Row).Formula = "=iferror(match(V1,AB:AB,0),"""")"
End SubAmire figyelned kell: X2:X tehát az X oszlop második sorától indul a képlet, ha az első sorba is kell, akkor X1-re javítsd.
Valamint a Cells(Rows.Count, "A") az az oszlop, ahol az utolsó aktív sort kell figyelni, itt az "A"-t módosítsd ha szükséges.
üdv
-
twingos
tag
üdv
Segítséget szeretnék,mert elakadtam.
Macróban szeretném ez a képeletet beilleszteni a X oszlopba, úgy,hogy csak az utolsó aktív sorig illessze be.
Ezzel még nem is lenne gond, de arra nem tudok rájönni, hogy ezt a képletet ,hogyan tudom beilleszteni.=HA(HIBÁS(HOL.VAN(V:V;AB:AB;0));"";V:V)
Nagyon köszönöm, ha valaki segítene.
Köszönöm
üdv -
karlkani
aktív tag
válasz
Delila_1 #29088 üzenetére
"Összemixeltem" a két makrót, ez lett belőle.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sor As Long
sor = Target.Row
If Target.Column = 4 Or Target.Column = 8 And Target.Row > 1 Then
Application.EnableEvents = False
If IsNumeric(Cells(sor, "D")) And IsNumeric(Cells(sor, "H")) And Cells(sor, 4) <> "" And Cells(sor, 8) <> "" Then
Cells(sor, "I") = (Cells(sor, "H") - Cells(sor, "D") * 8)
Range(Target.Address).Select
End If
Application.EnableEvents = True
End If
Dim ertek As Double
If Target.Column = 4 Or Target.Column = 8 Then 'D vagy H oszlop
Range("I" & Target.Row).Select
With Range("I" & Target.Row)
On Error Resume Next
.AddComment
.Comment.Visible = True
.Comment.Shape.Select True
.Comment.Text Text:=ertek & " Ft/liter"
.Comment.Shape.Select
Selection.AutoSize = True
End With
If IsNumeric(Range("H" & Target.Row)) And _
IsNumeric(Range("I" & Target.Row)) Then
On Error Resume Next
ertek = Round(Range("I" & Target.Row) / Range("D" & Target.Row), 1)
Range("I" & Target.Row).Comment.Text Text:=ertek & " Ft/liter"
Range("I" & Target.Row).Comment.Visible = False
End If
Else: Range("I5").Comment.Text Text:=" Ft/liter"
End If
Range(Target.Address).Select
End SubKivettem a 0-t ("0 Ft/liter"), amúgy is egy tizedesjegyre kell kerekítenie, viszont mögé kellene még egy 0 (ha egész szám jön ki, akkor nem). De ha nem megoldható, akkor elég így is. Ezen kívül már csak azt kellene megoldani, ha a D és a H cella értékeket törlöm (mindkettőt), törölje az I értéket, valamint az oda mutató megjegyzést is. Meg gondolom szebben is meg lehet oldani, de én a makróhoz nagyon ***** vagyok...
-
BenJoe80
senior tag
Sziasztok,
Excel 2013-ban hol találom meg azt a parancsikont, amivel egy nagy táblázatot úgy lehetett görgetni (jobbra-balra és le-fel), hogy a fejlécek mindig láthatóak maradjanak (magyarul becsúsztatja a táblázatot a fejlécek alá) ?
Nem bírom megtalálni... tudom, hogy ki kell tennem a "szalagra", mert alapból nincs kint, de nem emlékszem, hogy mi a neve.
-
karlkani
aktív tag
válasz
Delila_1 #29088 üzenetére
Nálam ez annyit csinál, hogy beírja az I oszlopba a H-D*8 értékét... ehhez nem kellene makró sem.
Azt szeretném, ha a D és H mezőket kitöltöm, akkor az I-t töltse ki H-D*8 értékkel, majd ugyanoda megjegyzésbe írja be (automatikusan formázottba) az I és a D hányadosát két tizedesjegy pontossággal.Példa
D = 10 liter
H = 3370 Ft
I=> H-D*8=3370-10*8=3290 Ft
majd ide megjegyzésbe => I/D=3290/10=329,90 Ft/liter -
MCGaiwer
addikt
válasz
Delila_1 #29081 üzenetére
Szia!
megpróbálom leírni.
Egy makrót szeretnék, ami adott sor módusulása esetén az "A" oszlopba kiírja azt a dátumot, amikor utoljára módosítva volt a sor (ez ugye mindig az aktuális napi dátum).
Ezt a makrót (túlképpen nem is makró, hanem VBA scriptként fut a sheeten) megcsináltam, és tökéletesen működik.
A probléma ott van, hogy a macrók futásakor az excel törli az undo historyt. Úgy akarom megcsinálni, hogy az aktuális dátum autómatikusan megjelenjen minden módosított sor elején, viszont az undo history is megmaradjon.
-
modflow
veterán
-
Delila_1
veterán
válasz
modflow #29086 üzenetére
A listából kiválasztást a laphoz rendelt makró figyeli.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$3" Then Ugras Target
End SubEz meghívja a modulba írt, Ugras nevű makrót, és átadja a kiválasztott értéket.
Ez a makró hajtja végre az ugrást az általad megadott lapra, és a megadott cellára. A Case utasításokban bármi más feladatot is megadhatsz.Sub Ugras(ide)
Select Case tg
Case "alma"
Sheets("AAA").Activate: Range("A1").Select
Case "körte"
Sheets("BBB").Activate: Range("C5").Select
Case "szilva"
Sheets("CCC").Activate: Range("B10").Select
Case "naspolya"
Sheets("DDD").Activate: Range("H12").Select
End Select
End Sub -
Delila_1
veterán
válasz
karlkani #29083 üzenetére
Mivel az I oszlopban a D és H cellákkal kell számolni, az eseményvezérelt makróban ennek a két oszlopnak a változását kell figyeltetni.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sor As Long
sor = Target.Row
If Target.Column = 4 Or Target.Column = 8 And Target.Row > 1 Then
Application.EnableEvents = False
If IsNumeric(Cells(sor, "D")) And IsNumeric(Cells(sor, "H")) And Cells(sor, 4) <> "" And Cells(sor, 8) <> "" Then
Cells(sor, "I") = Format((Cells(sor, "H") - Cells(sor, "D") * 8), "# ##0.00 Ft/liter")
Range(Target.Address).Select
End If
Application.EnableEvents = True
End If
End SubA Cells(sor, "I") =... értékadásnál az általad megadott képletet [=HA(D="";"";H-D*8)] alkalmaztam.
A sor változót csak azért iktattam be, mert többször szerepel a makróban, és egyszerűbb leírni, mint a Target.Row-t. Na meg rövidebbek is az utasítások. -
modflow
veterán
válasz
modflow #29086 üzenetére
Igazából egy kis programot szeretnék csinálni, de mivel nem vagyok programozó, így excellel próbálom megvalósítani.
A lényeg, hogy azt szeretném, hogy egy cellából ha kiválasztok valamit, akkor azt le tudjam okézni és annak legyen valami közvetlen hatása, bejöjjön egy új lap pl.Vagy van esetleg valami olyan program, amivel lehet ilyeneket csinálni?
Visual Studio, vagy valami? Elég kezdő vagyok a témában.Egy nyilvántartó program lenne, ami adatbázisból dolgozna, lenne benne pár szöveges rész, a lényeg, hogy egy feladat elvégzésének (több éves) megvalósulását segítené.
-
modflow
veterán
Tudok olyat excelben csinálni, hogy van egy listám:
1. Alma
2. Körte
3. Szilva
4. ...A listából csinálok egy legördülő választólistát mondjuk a C3 cellába és azt szeretném, hogy ha kiválasztom a legördülőből az almát, akkor az excel ugorjon át egy adott munkalap adott pontjára?
-
bteebi
veterán
válasz
karlkani #29083 üzenetére
"akkor a megjegyzésben eredményül nem 400 Ft/liter jelenik meg, hanem 4000 Ft/liter. Ezzel lehet valamit kezdeni?"
Lehet. A probléma ott van, hogy a hozzáfűzött szövegrészben van egy felesleges 0. A hozzáfűzött rész egy sztring, formátumot nem állít:
Range("I" & Target.Row).Comment.Text Text:=ertek & "0 Ft/liter"
Elég, ha a "0 Ft/liter" helyett csak " Ft/liter"-t írsz. A SZÖVEG függvénnyel egyébként be tudod állítani a formátumot, és ahhoz fűzöd hozzá a szöveget.
Range("I" & Target.Row).Comment.Text Text:=WorksheetFunction.Text(ertek, "0") & " Ft/liter"
Nem próbáltam ki, de jónak kell(ene) lennie.
-
karlkani
aktív tag
Kedves Delila_1!
A múltkor készítettél nekem egy makrót, amivel automatikus méretre állva beírja két szám hányadosát kettő tizedes pontossággal. Kicsit módosítanék rajta. Adott egy H oszlop, amiben az eredeti ár van feltüntetve, az I oszlopban pedig a kedvezménnyel csökkentett ár. Eddig kézzel írtam be mindkettőbe, működik rendesen. Most viszont (mert lusta vagyok) az I-be nem szeretnék beírni kézzel, ott egy Ha függvénnyel vinném be az adatokat. Ezt meg is oldom, nem ezzel van gondom. Ha a D mező üres az aktuális sorban, akkor az I is maradjon üresen, ellenkező esetben meg a cellában a H és D hányadosa jelenjen meg. Ezt végighúzva az I oszlopon azonban megjelenik minden üres sorban levő mezőnél a megjegyzés, amit viszont nem szeretnék. A következő makrót kellene módosítani úgy, hogy csak abban az esetben rendeljen megjegyzést az I cellához, ha a D-be beviszek adatot, s azt is bele kellene még tenni, hogy amikor bekerül a H-ba az összeg, akkor az I-t automatikusan kitöltse a =HA(D="";"";H-D*8) értékkel. Így kidobhatnám a bevitt képletet onnan és nem jelenne meg a megjegyzés se, amíg nem kell neki (gondolom).
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ertek As Double
If Target.Column = 4 Or Target.Column = 9 Then 'D vagy I oszlop
Range("I" & Target.Row).Select
With Range("I" & Target.Row)
On Error Resume Next
.AddComment
.Comment.Visible = True
.Comment.Shape.Select True
.Comment.Text Text:=ertek & " Ft/liter"
.Comment.Shape.Select
Selection.AutoSize = True
End With
If IsNumeric(Range("D" & Target.Row)) And _
IsNumeric(Range("I" & Target.Row)) Then
On Error Resume Next
ertek = Round(Range("I" & Target.Row) / Range("D" & Target.Row), 1)
Range("I" & Target.Row).Comment.Text Text:=ertek & "0 Ft/liter"
Range("I" & Target.Row).Comment.Visible = False
End If
Else: Range("I5").Comment.Text Text:="0 Ft/liter"
End If
Range(Target.Address).Select
End SubValamint, ha az általad megírt makrót használva pl.: a D értéke 25 (l) az I értéke pedig 10000 (Ft), akkor a megjegyzésben eredményül nem 400 Ft/liter jelenik meg, hanem 4000 Ft/liter. Ezzel lehet valamit kezdeni?
Ha időd engedi, előre is nagyon szépen köszönöm a segítséget...
-
bteebi
veterán
válasz
PETEE78 #29074 üzenetére
Mindig a filenév végén van a dátum, tehát itt például 1510160939, illetve ebből a 151016? A végén lévő dátum mindig négy karakter? Mert ha igen, akkor a megnyitás után írd bele a makróba azt, hogy
fnev = ActiveWorkbook.Name
If Mid(fnev, Len(fnev) - 14, 6) <> WorksheetFunction.Text(Date, "yymmdd") Then
ActiveWorkbook.Close savechanges:=False
End IfA 14 azt jelenti, hogy ennyi karakterrel a teljes filenév (pl. 221_ALMA_20151016_20151016_1510160939.csv) előtt indul a keresés, és 6 karakter hosszú (mert amit keresünk, az ugye ééhhnn formátumú).
#29075: Amúgy igen, nagyon nyakatekert lenne
. Ez se a legegyszerűbb, mert előbb megnyitja a file-t, némi eséllyel feleslegesen...
-
Delila_1
veterán
válasz
MCGaiwer #29071 üzenetére
Töltöd folyamatosan az első lap táblázatát. Ezekről az eseményvezérlő makró 20 oszloppal jobbra másolatot készít. Nem írtad, hány oszlopba viszed fel az adatokat, gondoltam, elég lesz az első 20.
Kezded kitölteni a táblázatodat, a 2. (B) oszloptól kezdve. Mikor beviszel egy adatot a B oszlopba, a makró megnézi, van-e már a 20-szal jobbra lévő (V) oszlopban érték. Ha nincs, oda másolja a bevitt értéket, majd az aktuális sor A oszlopába beírja az aktuális dátumot. Folytatod a táblázat kitöltését a következő oszloppal. Nem fontos minden oszlopba írnod, következzen most a D (4. oszlop) értékének a bevitele. A makró megint megnézi, hogy a 4+20-adik oszlopban van-e már eltárolva érték. Ha nincs, az aktuális sor 1:4 oszlopát értékként beilleszti a 20+1 oszloptól kezdve. Ha van, nem módosítja, másképp nem tudod az eredetit visszaállítani.
Így folyamatosan másolatot készít az eredetileg bevitt értékekről 20 oszloppal jobbra.Másnap megváltoztatod a D értékét. A makró látja, hogy van már adat a 24. oszlopban, nem módosít. Később rájössz, hogy az eredetileg bevitt érték volt jó. Ekkor beállsz a kérdéses sorba, és indítod a gombbal a visszaállítást. A gombhoz rendelt Elozo_Click megállapítja az aktuális sor utolsó kitöltött oszlopát (24), és a V (22.) oszloptól eddig másolja az adatokat, értékként beilleszti a B oszloptól. Tehát a régi dátum kivételével felülírja az eredeti táblázat aktuális sorát az előzően bevitt adatokkal, majd az A oszlopba beírja az aktuális dátumot.
Elég nehéz lehet ezt így követni, de a kérdésedet is, ami az első felvetésed óta többször változott. Talán legjobb lenne a kályhától kiindulva, az eddigi kérdéseket mellőzve pontosan leírnod, mire van szükséged.
-
PETEE78
senior tag
válasz
szatocs1981 #29076 üzenetére
Köszönöm! Szerintem menni fog, mindenképpen visszajelzek!
-
Fferi50
Topikgazda
válasz
zoli03 #29077 üzenetére
Szia!
Talán a legegyszerűbb:
A képleteket át kell másolnod egy másik munkalapra - vagy a munkalap másik részére szövegként.
Ezután cellánként az alábbi képlettel tudod meghatározni az összeadott számok darabszámát:
=HOSSZ(D1)-HOSSZ(HELYETTE(D1;"+";""))+1
A képlet megadja a D1 cellában levő képletben szereplő összeadott számokat.Egy adott tartományban levő darabszámot hasonlóan tudod megállapítani, de a képletben össze kell fűzni a tartomány celláit:
= HOSSZ(D1 & D2 & D3) - HOSSZ(HELYETTE(D1 & D2 & D3;"+";""))+3
A plusz a végén a cellák darabszáma, ez is meghatározható függvénnyel pl. DARAB2(D1:D3)Üdv.
-
zoli03
őstag
Van egy csomó cellám, amikben ilyen képlet van:
=1000*(564+1112+89+654+9842)
Vagyis pár szám össze van adva (változó, hogy mennyi) és meg van szorozva 1000-rel. Ki lehet valahogy számolni, hogy hány darab szám volt összeadva egy cellában vagy egy cellatartományban?
-
szatocs1981
aktív tag
-
PETEE78
senior tag
Az nagyon nyakatekert megoldás lenne, hogy
mikor megnyitja a filet nyisson rá egy új lapot, írja be egy cellába a mai dátumot, egy másikba a fájl nevének azt a részét ami a dátumot tartalmazza, a harmadikba pedig egy igaz-hamis választ. Ha igaz akkor futtassa le a hozzárendelt makrót, majd lépjen a következő megadott műveletre, ha nem zárja be a fájlt és csak lépjen a következő megadott műveletre? -
PETEE78
senior tag
Sziasztok!
Elég kezdő vagyok a témában, sőt...
Hogy lehet megoldani, hogy egy fájlt csak akkor nyisson meg a makróparancs, ha a fájlnévben szereplő dátum megegyezik a napi valós dátummal?tehát pl: 221_ALMA_20151016_20151016_1510160939.csv a fájl neve ezt szeretném megnyitni egy makró futtatással, de csak akkor, ha megegyezik az aznapi valós dátummal.
Workbooks.Open Filename:="C:\egy\pelda\feladat\221_ALMA_20151016_20151016_1510160939.csv"
eddig megy
-
BenJoe80
senior tag
-
MCGaiwer
addikt
válasz
Delila_1 #29066 üzenetére
köszönöm!
Viszont nem teljesen tiszta nekem, hogy ez most azokat az adatokat állítja vissza, amit a macró átírt?
nekem az a fontos, hogy NE azokat állítsa vissza, amit a macró írt, hanem hogy a macró futása ne barmolja szét az undo historyt. Ezt úgy akarom áthidalni, hogy a macrót még azelőtt futtatom, hogy bármit csinálnék (tehát rögtön indulás után), meg az után, hogy már mindennel végeztem (tehát bezárás előtt). a két esemény között pedig az undo simán működhet.
-
BenJoe80
senior tag
válasz
Fferi50 #29064 üzenetére
Hát mindjárt sírva fakadok!!! Még mindig nem működik!
Lehet, hogy hülyét kérdezek, de nem lehet, hogy valamit engedélyeznem kell, hogy ez a képlet működhessen?
Kipróbáltam sima vesszővel ( , ) és nem pontos vesszővel ( ; ) - bár eddig úgy tudtam, hogy az angol nyelvű Excelben pontos vesszőt kell használni a vessző helyett. Ennek eredményeként megjelent a #VALUE! felirat.
Amikor számolási lépéseket megnéztem, akkor képlet következő részével van problémája:
... MAX(([U]B6:M6[/U]<>0) ...
A kommentár erre az, hogy "hibás számolás" (The next evaluation will result in an error)?
-
Delila_1
veterán
válasz
MCGaiwer #29065 üzenetére
A "B" lap A2 cellájának a képlete =HA(A!A2="";"";A!A2). Azért nem simán =A!A2, hogy ne rajzolja tele a lapot nullákkal üres A!cella esetén. A képletet másold jobbra és le, ameddig kell.
Az "A" lapon 1 gomb van a vezérlők eszköztárából, ami nálam Elozo névre hallgat. Ehhez a laphoz 2 makrót rendelj. Mindkettő csak a saját lapján dolgozik, mert a "B" lapon a képletek adják a mindenkori "A" lap értékekeit. Az első eseményvezérelt,
Private Sub Worksheet_Change(ByVal Target As Range)
Dim oszlop As Integer, uoszlop As Integer
Application.EnableEvents = False
If Target.Row = 1 Then Exit Sub
If Cells(Target.Row, Target.Column + 20) = "" Then
uoszlop = Cells(Target.Row, 20).End(xlToLeft).Column
Range(Cells(Target.Row, 1), Cells(Target.Row, uoszlop)).Copy
Range("U" & Target.Row).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Cells(Target.Row, 1) = Date
Range(Target.Address).Activate
End If
Application.EnableEvents = True
End SubEz a makró másolatot készít az aktuális sor adatairól, az U oszloptól kezdődően. Ha sok oszlopod van, teheted hátrább is. Az aktuális dátumot beírja az A oszlopba.
A második makró a gombhoz rendelt.
Private Sub Elozo_Click()
Dim sor As Long, oszlop As Integer, uoszlop As Integer
sor = Selection.Row: oszlop = Selection.Column
uoszlop = Cells(sor, Columns.Count).End(xlToLeft).Column
Application.EnableEvents = False
Range(Cells(sor, "V"), Cells(sor, uoszlop)).Copy
Range("B" & sor).PasteSpecial xlPasteValues
Range("A" & sor) = Date
Cells(sor, oszlop).Activate
Application.CutCopyMode = False
Application.EnableEvents = True
End SubMűködése: állj a sorra, ahol vissza akarod csalni az előző adatokat, majd klikkelj a gombra. A V oszloptól kezdve az első makró által beírt utolsó adatig másol a B oszlopba, az A-ba beírja az aktuális dátumot.
Ha a régi dátumot is vissza akarod állítani, akkor a másolás az U-tól kezdődjön, a célcella pedig range("A" & sor) legyen. Ekkor nem kell a range("A" & sor)=date sor.
-
MCGaiwer
addikt
válasz
poffsoft #29063 üzenetére
oké, akkor egy másik megoldást próbálnék:
kirakok két macro gombot. az elsőt megnyomom (vagy ha megoldható, hogy rögtön indulás után lefusson, akkor úgy lenne a legjobb), ez csinál egy coppyt "A" sheetről.
ezután dolgozok "A" sheettel szokás szerint. Mikor végzek és bezárom az excelt, megnyomom (vagy ha zárás előtt lefutna magától, úgy lenne a legjobb) a másodikat, ami összehasonlítja "Acoppy"-t és az időközben általam módosított "Aeredeti"-t, akkor ahol nem egyeznek az értékek (tehát módosítva lett a cella) kiírja az adott dátumot "Aeredeti"-re majd törli "Acoppy"-t
-
Fferi50
Topikgazda
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.
-
MCGaiwer
addikt
válasz
poffsoft #29059 üzenetére
akkor sajnos ez nem lesz jó, mert azon a sheeten, ahol a macro fut nem működik az undo
úgy nem lehet, hogy ha én "B" sheeten egy cellát egyenlővé teszek "A" sheeten egy cellával (ami tehát módosul ha "A"-n módosítom a cellát), akkor a macro a "B"-t figyelje és a "B"-re is írjon?
-
Delila_1
veterán
válasz
Marki1987 #29045 üzenetére
Az A oszlopban vannak az érvényesítések, a többiben a megfelelő oszlopban X lesz.
A B2 cella képlete látható a megjegyzésben, ezt a képletet másold jobbra, és le.
A képletben nem fontos a címsorra hivatkoznod (A2=B$1), hanem beírod, melyik választáskor tegyen X-et abba az oszlopba.
-
poffsoft
veterán
-
Delila_1
veterán
válasz
m.zmrzlina #29053 üzenetére
Minek az ÖSSZEFŰZ? Azt olyan nehéz magyarul, és angolul is leírni.
= MID(A1,SEARCH(" ",A1)+1,50) &" " & UPPER(LEFT(A1,SEARCH(" ",A1)-1))
Hossznak a MID függvényben a LEN(A1)-et is adhatnám, de az 50 karakter biztosan elég.
-
pheta03
csendes tag
válasz
m.zmrzlina #29049 üzenetére
kicsit később szerkesztettem a hozzászólásomat:
lletve nem akar sikerülni a fordításom:
=ONCATENATE(RIGHT(A1;LEN(A1)-FIND(" ";A1));" ";UPPER(LEFT(A1;FIND(" ";A1)-1)))
Esetleg a példatáblát fel tudnád tolni valahova?
nagyon köszi -
pheta03
csendes tag
válasz
m.zmrzlina #29047 üzenetére
nagyon köszi, királlyá tetted a napomat!
minden jót!
illetve nem akar sikerülni a fordításom:
=ONCATENATE(RIGHT(A1;LEN(A1)-FIND(" ";A1));" ";UPPER(LEFT(A1;FIND(" ";A1)-1)))
Esetleg a példatáblát fel tudnád tolni valahova?
nagyon köszi
-
pheta03
csendes tag
válasz
m.zmrzlina #29044 üzenetére
köszönöm a segítséget!
de van sajnos több keresztneves tétel
ilyenkor mit lehetne tenni még?
-
Marki1987
újonc
Sziasztok!
Kérlek segítsetek felmerülő problémám megoldásában!Létrehoztam egy legördülő listát. Azt szeretném megoldani valahogy, hogy ha kiválasztok egy elemet a legördülő listából a mellette lévő sorban általam megadott cellák színe változzon meg vagy ott jelenjen meg egy "x", amelyik egyszerűbb és ha egy másik elemet választok ki a legördülő listából más általam megadott cellákkal történjen ugyanaz (ugyanabban a sorban azzal a feltétellel, hogy a korábbi listaelemhez tartozó cellák visszaálljanak a kiinduló helyzetbe).
Megoldható ez MS Excelben?
Ha igen, nem vagyok egy excel szuperhős, részletes leírást kérek.Köszönöm a válaszaitokat!
-
pheta03
csendes tag
sziasztok Kedvesek,
ezt szeretném megoldani, tud valaki megoldást javasolni?
Nagy István -ból István NAGY legyen
Egy cellában van a név.
https://db.tt/Ou058Kao
a név csere fügvénye:
=MID(V2&" "&V2;SEARCH(" ";V2)+1;LEN(V2))
ebbe menne valahogyan az UPPER function, de nem tudtam megoldani, már keresek egy ideje, gondoltam lehet itt tud valaki segíteni,
köszönöm
-
MCGaiwer
addikt
sziasztok!
nem találtam megoldást a VBA undo history törlésére, ezért egy áthidaló megoldást szeretnék eszközölni.
Kiemelném, hogy nekem nem a "macro" által végrehajtott változások visszavonására lenne szükségem, hanem a korábban általam végzet gépelések, módosítások stb visszavonására. (egyébként ha van vmi megoldás, ami ezt tudja, az lenne a legjobb)Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Then Exit Sub
Application.EnableEvents = False
Cells(Target.Row, "A").Value = Date
Application.EnableEvents = True
End SubEz a macro az A oszlop adott cellájába beírja az aktuális dátumot, ha az adott sorban vmit módosítottam.
az áthidaló megoldásom az lenne, hogy egy másik worksheeten futtatnám ezt a macrót, ami pedig az első sheetről venné az adatokat.Tehát az lenne a kérdésem, hogy a fenti macrót hogy tudom úgy átalakítani, hogy az "A" sheet adott sorát figyelje, majd ha ott változás van, akkor "B" sheet adott sor adott cellájába beírja az aktuális dátumot?
(reményem szerint így ugyan "B" sheeten mindig törölve lesz az undo history, viszont "A" sheeten vissza tudok vonni mindent. -
egy cellába készítettem legördülő listát. más cellák értékeit (a bele írt szöveget) hogyan tudom megváltoztatni attól függően, hogy milyen értéket választok ki a legördülő listából? ezt már sikerült megoldani korábban, de nem akaródzik beugrani
köszi a segítségetek!
-
m.zmrzlina
senior tag
válasz
Fferi50 #29036 üzenetére
Köszi a választ sokat segítettél bár a végeredmény csak nagyon kicsit hasonlít a te tippedre. Ez volt az első verzió:
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)) And Cells(xx, 1).Value = Cells(xx - 1, 1).Value + 1 Then Exit For
Rows(xx).EntireRow.Delete
Next
End SubEzt azonban sok olyan konfiguráció át tudta ejteni ami szemét ugyan de át tudott menni a ciklusban lévő vizsgálaton. Pl a két vagy több utolsó szemét sor első cellája üres, vagy csökkenő sorszámozású.
Aztán a másik hiba indikátorra fókuszáltam ti. hogy a hibás sorokban /az eddigi tetöltéseket nézve legalábbis/ mindig van egy üres cella, és 2-3 sornál soha nincs több szemét sor. Ez lett a vége:
Sub tisztit()
Dim holavege As Long, i As Long, j As Integer
holavege = ActiveSheet.UsedRange.Rows.Count
For i = holavege To holavege - 10 Step -1
For j = 1 To 16
If Cells(i, j) = "" Then
Rows(i).EntireRow.Delete
Exit For
End If
Next
Next
End SubLehet, hogy a vége a kettő kombinációja lesz mert ha kiderül, hogy van olyan sor aminek mind a 16 cellájában van adat de az valamiért hibás abban az esetben ez sem tökéletes.
Köszi a tippedet. Vesszen a .Select!
-
Delila_1
veterán
válasz
alfa20 #29032 üzenetére
Másik módszer
Dim fent As Double, bal As Double, usor
fent = Range("F" & Range("F" & Rows.Count).End(xlUp).Row).Offset(3).Top
bal = Range("F1").Left
ActiveSheet.Buttons.Add(bal, fent, 72, 26).Name = "Gomb"A gomb kívánt szélességét és magasságát add meg a 72 és a 26 helyett.
-
Fferi50
Topikgazda
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.
-
m.zmrzlina
senior tag
válasz
Fferi50 #29031 üzenetére
Ez a megoldás azért nem jó mert pl az első képen az utolsó sor is számmal kezdődik de az már szemét kategória mert az eredeti szoftverben a táblázat véget ér az 1781. sornál.
Két szabályszerűséget figyeltem meg eddig. Az egyik amit már írtam, hogy ahol a sorszámozás folytonossága megszakad ott a vége az eredeti táblázatnak illetve hogy a hibás sorokban mindig van legalább egy üres cella, de rendszerint több is.
(A select- eket pedig próbáld meg elfelejteni.)
Pontosan ebben a felejtésben szeretném a segítségeteket kérni.
-
marcyman
aktív tag
Sziasztok!
A következő probléma elég rendhagyó lesz és igen nagy kihívás elmagyarázni is:
Adott egy 2013-as excel, sok-sok táblázattal megnyitva a Windows 7-en (angol). (Jogtiszta minden.)
A probléma a következő: Ha dolgozom egy táblában és átlépek egy cellába mondjuk jobbra kurzorral és írnék bele valamit akkor "megakad" az írás és egy random pontba, egy az előtte használt táblázatba fognak kerülni a karakterek. Ilyenkor egy entert kell ütni, hogy feljöjjön az a tábla, ahova bekerültek a karakterek, majd ki kell törölni és visszamenni ahova eredetileg szántam azokat.
Ez a hiba csak néha jön elő, logikát én nem találtam még benne.
Nem tudom mennyire érthető, ilyennel én még életemben nem találkoztam ezért tanácstalan vagyok.
-
alfa20
senior tag
Sziasztok!
Van egy táblázatom amibe szeretnék egy 'button'-t az F oszlop utolsó cellája alá kettővel a legalsó cellához van egy 'usor'-om.
Hogyan tudom ezt egyszerűen?
ahogy néztem a 'ActiveSheet.Buttons.Add()' parancsnál négy érték kell: x tengely, y tengely, button szélessége, button magassága.
Az utolsó kettő nem gond. -
Fferi50
Topikgazda
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.
-
m.zmrzlina
senior tag
Problémám a következő:
Adott egy szoftver amiben a szoftver által előállított táblázatot egy parancsgombbal vágólapra lehet tenni. A táblázat fixen 16 oszlop széles és változó /1700-1800/ sor hosszú. A vágólapra kitett adatot excel munkalapra illesztem további feldolgozásra.
Az a gondom, hogy /nyilván a forrás szoftver hibájából/ a beillesztett tartomány végénre teljesen véletlenszerűen néhány cellában a képeken látható memóriaszemét kerül ami a további feldolgozásban problémákat okoz.
A feladat az, hogy a további feldolgozás előtt ezt a szemetet kitöröljük. Az A oszlop sorszámozást tartalmaz és eddigi tapasztalataim alapján ahol a sorszámozás folytonossága megszakad ott van vége a hasznos adatnak.
Hirtelen az alábbi Móricka megoldás jutott eszembe:
Sub holavege()
Range("A2").Select
Do While ActiveCell.Offset(1, 0) = ActiveCell + 1
ActiveCell.Offset(1, 0).Select
Loop
Range(Cells(ActiveCell.Row + 1, 1), Cells(ActiveCell.Row + 10, 16)).ClearContents
End SubEhelyett kéne egy profibb megoldás. Előre is köszi at ötleteket.
-
lenkei83
tag
Sziasztok!
A következő problémával találkoztam. Excel 2010 - HUN, diagram, kettő féle adatot tartalmaz, normál szám, és számított százalék, tehát képletezett, nem fix érték.
Ami a gondom, ha ráengedek egy worksheet.protect-et az egész munkafüzetre, a százalékok normál számokká változnak. (Unprotect-nél nem változnak vissza)
Nem tudtam még rájönni az okára, de adatsor formázáson, meg formátum csatolás a forráshoz stb... ezeken már túl vagyok. Azt is próbáltam, hogy csak az adatokat tartalmazó lapot nem védem le, de ez sem vált be.
Ha kézzel ráfrissítek a képletekre, akkor visszaáll a diában normális formátumba.Van valakinek ötlete?
üdv
P. -
bsh
addikt
válasz
kispéé #29021 üzenetére
a ThisWorkbook-ba másoltad be a kódot? akkor elvileg automatikusan futnia kell, amint megváltozik a kijelölés.
tehát ha a Munka1 nevű sheeten az A oszlop egyik elemére kattintasz, akkor egyből átugrik a Munka2 nevű sheeten a G oszlop megfelelő elemére, vagy ha Munka2-n a G oszlop egyik elemére kattintasz, akkor átugrik Munka1 A oszlop megfelelő elemére. (nyilván az Munka1!A és Munka2!G oszlopokban legyenek értékek, én pl. egyikbe 1-től 50-ig felvettem értékeket, másikba meg 50-től 1-ig.) -
csadi0011
őstag
válasz
Delila_1 #29020 üzenetére
1 cellában változtatnám az adatot, szóval jobb lenne függvénnyel, hogy csak írogatni kelljen. Mindig új adat beírásánál szövegből oszlopozni nem túl jó. Meg, ha másnak elküldöm, neki el kell magyarázni, hogy hogyan működik.
Az előző hsz-ben A1-et írtam, és, hogy szétválasztva az A2-ben lesz, de itt a szétválasztott adatoktól balra raktam, mert szerintem így átláthatóbb. -
csadi0011
őstag
Remélem nem megyek az agyatokra, de ismét kérdeznék.
1.:
Lenne egy A1 cella, amiben ilyen típusú szövegek lennének(begépelt): "1,5" "1,3,5" "1,b3,b5" "1,3,#5" 1,3,#5,6,9". Az "1" az állandó. Az nem változik. 6 vessző lehet maximum. A vesszők közötti karakterek száma max 3 lenne. pl: 1,3,5,bb7
Szóval ezt az A1 cellát kéne felosztani külön annyi cellára, amennyi ilyen kód van benne. És a helyük sem mindegy. A kódban szereplő szám lesz a helye.
Példa:
A1: 1,3,5,b7,#11
[B]A2:[/B] 1 [B]|[/B] [B]C2:[/B] 3 [B]|[/B] [B]E2:[/B] 5 | [B]G2:[/B] b7 | [B]K2:[/B] #11Aztán ezt tovább kéne bontani. A3:N3 cellákba. Ahol volt kód (pl. A2-ben), alá (A3) tegyen egy karaktert jelzésként(legyen egy kötőjel mondjuk). Ahol nem csak szám volt a kódban(pl.G2), hanem előtte b/bb/#/## is, alá (G3) tegye be a karaktert, ami ott volt.
Szeretném inkább magamtól megcsinálni, de nem sikerült eddig. Ha valaki csak azt mondja el, hogy milyen függvényekkel csináljam, azt is nagyon megköszönném. BAL JOBB szöveg.keres függvényekkel próbálkozom sikertelenül.
(excel: magyar 2013)
-
bsh
addikt
válasz
kispéé #29017 üzenetére
másik verzió:
(feltételezi, hogy egy workbookban van a két táblázat: Munka1 és Munka2)Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Select Case Target.Worksheet.Name
Case "Munka1"
If Target.Column = 1 Then
On Error Resume Next
If Not Worksheets.Item("Munka2") Is Nothing Then
On Error GoTo 0
With Worksheets.Item("Munka2")
Set X = .Range("G:G").Find(Target.Value, lookat:=xlWhole)
If Not X Is Nothing Then
Application.EnableEvents = False
Application.Goto .Cells(X.Row, X.Column)
Application.EnableEvents = True
End If
End With
End If
On Error GoTo 0
End If
Case "Munka2"
If Target.Column = 7 Then
On Error Resume Next
If Not Worksheets.Item("Munka1") Is Nothing Then
On Error GoTo 0
With Worksheets.Item("Munka1")
Set X = .Range("A:A").Find(Target.Value, lookat:=xlWhole)
If Not X Is Nothing Then
Application.EnableEvents = False
Application.Goto .Cells(X.Row, X.Column)
Application.EnableEvents = True
End If
End With
End If
On Error GoTo 0
End If
End Select
End Sub -
kispéé
senior tag
válasz
szatocs1981 #29016 üzenetére
Érthető mostmár.
Kikísérleteztem a hibát, az volt a baj, hogy a munkafüzetek nem default néven voltak elmentve, hanem egyedi fájlnevük volt, úgy nem működött, rájöttem, hogy a fájlkiterjesztést is kéri ilyenkor ,így azt is beírtam.Tehát:
Windows("fájlnév.xlsm").ActivateEzer köszi a segítséget, innen már tudok tovább boldogulni!
-
szatocs1981
aktív tag
válasz
kispéé #29015 üzenetére
A makró müködése a következö, talán ez segít a továbbiakban:
az elsö táblázatból (neve mindegy) kiolvassa az aktuálisan kijelölt cella értékét, majd összehasonlitja a masodik táblázat (neve rögzített) "A" oszlopában lévö értékekkel. Ha egyezést talál, akkor az adott cellába ugrik. -
kispéé
senior tag
válasz
szatocs1981 #29014 üzenetére
Így alakul. Odáig jutottam el, hogy egyazon táblázatban megtalálja a keresett értéket, pl. másik fülön már nem. De ha átírom a kódot, hogy másik munkafüzetbe keresse akkor: "out of range"-t kapok.
szerk: tovább alakul, mindjárt írok. Előtte ebédidő
-
szatocs1981
aktív tag
válasz
szatocs1981 #29013 üzenetére
...mondjuk itt kimaradt valami:
Range("A" & Zelle.Row).Select
-
kispéé
senior tag
válasz
szatocs1981 #29011 üzenetére
Köszi.
Nálad működik? -
szatocs1981
aktív tag
Sub IttOttKeres()
Keres = Selection.Value
Windows("Mappe2").Activate
Dim Zelle As Range
For Each Zelle In Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
If Zelle = Keres Then
Range("A" & Zelle).Select
Exit Sub
End If
Next
End SubA második táblára, analóg ugyanígy!
-
kispéé
senior tag
válasz
szatocs1981 #29008 üzenetére
-
dolarelado
újonc
Szia gyga!
Ugyanebbe a problémakörbe futottam bele. Sokat segített a névkezelős ötleted, de a megoldást mégis az "érvényesítés"-ek törlése hozta.
Sajnos ehhez meg kell keresni az érintett munkalapot -> minden kijelöl -> amikor az érvényesítésre kattintasz felugrik az ablak, hogy "Törli a jelenlegi beállításokat" kérdés -> OK -> mentés (-> jó esetben örül.) -
-
kispéé
senior tag
Lehet rosszul fogalmaztam, nincs sorrendben sem illetve az is előfordulhat, hogy egy adott számot az egyik nem tartalmazza. Tehát a számsorok darabszáma sem egyezik.
Kihagytam, hogy közel azonos számsorral...szatocs1981: Screenshot-ot elvileg nem küldhetek. De pontosan miről kéne?
-
kispéé
senior tag
Sziasztok,
Most tanulgatom a VBA programozást, nagy mértékben segítené a munkámat.
Most olyan makrón töröm a fejem, amit eddig nem sikerült megoldanom, hátha tudtok segíteni:
Adott két excel fájl, mindkettőben van egy-egy oszlop azonos számsorral, azt szeretném, hogy hiperhivatkozásként ha egyikre rákattintok, akkor a másik fájlban lévő ugyanarra a számsorra ugorjon.
Ezt egyesével meglehet csinálni, de hosszadalmas. Azt kellene, hogy ha rákattintok, akkor egy kereső makróval a rákattintott cellában lévő sorszámot kikeresi a másik táblázatban és odaugrik. Ugyanennek a funkciónak működnie kellene a másikból is oda-vissza. Még egy fontos dolog, a számsorok sorrendje véletlenszerű, tehát nincs sorban és nincs szinkronban egymással sem.
Ötlet?
Új hozzászólás Aktív témák
- BESZÁMÍTÁS! Gigabyte H510M i3 10100F 16GB DDR4 512GB SSD GTX 1050 Ti 4GB Zalman N4 Chieftec 400W
- Újra Akcióban!!! Ducky One 2 Mini és SF billentyűzetek a bolti ár töredékéért! Számla+Gari
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7500F 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- Azonnali készpénzes nVidia RTX 5000 sorozat videokártya felvásárlás személyesen / csomagküldéssel
- Dell 5400 14 FHD Laptop i5-8365 8 GB RAM 256GB SSD 6 hónap garanciával, Dobozos
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest