- Poco X6 Pro - ötös alá
- Huawei Watch GT 2 - épp ideje!
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- iPhone topik
- Samsung Galaxy S21 FE 5G - utóirat
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- A sógorokhoz érkezik a kompakt Vivo X200 FE
- Garmin Forerunner 970 - fogd a pénzt, és fuss!
- Prohardver app (nem hivatalos)
- Samsung Galaxy S20 Ultra 5G - nagy ügy
-
Mobilarena
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
-
válasz
karlkani #47695 üzenetére
"Amúgy a végére odatesz egy /-jelet (nem kell, nem nyitja meg a videót)."
Hát de Te adtál meg olyan példát az eredeti hozzászólásodban, hogy ott figyel a végén a perjel...(javítottam, nem lesz a végén a perjel, ki is próbáltam, megnyílik a film)
="https://www.filmorias.com/ugras-a-videohoz/"&KÖZÉP(BAL($A$3;SZÖVEG.TALÁL("*";HELYETTE($A$3;"/";"*";HOSSZ($A$3)-HOSSZ(HELYETTE($A$3;"/";""))))-1);SZÖVEG.KERES("redirect";BAL($A$3;SZÖVEG.TALÁL("*";HELYETTE($A$3;"/";"*";HOSSZ($A$3)-HOSSZ(HELYETTE($A$3;"/";""))))-1))+9;HOSSZ(BAL($A$3;SZÖVEG.TALÁL("*";HELYETTE($A$3;"/";"*";HOSSZ($A$3)-HOSSZ(HELYETTE($A$3;"/";""))))-1)))
-
válasz
karlkani #47693 üzenetére
Oké, Te akartad...
="https://www.filmorias.com/ugras-a-videohoz/"&KÖZÉP(BAL($A$3;SZÖVEG.TALÁL("*";HELYETTE($A$3;"/";"*";HOSSZ($A$3)-HOSSZ(HELYETTE($A$3;"/";"")))));SZÖVEG.KERES("redirect";BAL($A$3;SZÖVEG.TALÁL("*";HELYETTE($A$3;"/";"*";HOSSZ($A$3)-HOSSZ(HELYETTE($A$3;"/";""))))))+9;HOSSZ(BAL($A$3;SZÖVEG.TALÁL("*";HELYETTE($A$3;"/";"*";HOSSZ($A$3)-HOSSZ(HELYETTE($A$3;"/";"")))))))
-
válasz
karlkani #47691 üzenetére
Module1-be kerülő kód
'Fire/SOUL/CD - 2021
Option Explicit
Public Function URLConverter(SourceURL As String) As String
Const SLASH = "/"
Dim MyStrArray() As String
MyStrArray = Split(SourceURL, SLASH)
URLConverter = ("https://www.filmorias.com/ugras-a-videohoz/" & _
MyStrArray(11) & SLASH & _
MyStrArray(12) & SLASH _
)
End FunctionHa esetleg hiperlinkként szeretnéd visszakapni, akkor az A1 cellába így használd:
=HIPERHIVATKOZÁS( URLConverter(A3))
Természetesen, ha a forrás URL formátuma megváltozik, akkor már nem fog működni a függvény rendesen...
-
Delila_1
veterán
válasz
karlkani #45799 üzenetére
Szia Laci!
Nem tökéletes, de valamennyire javul.
Ha új neve(ke)t írsz az F oszlopba, akkor is törli a sor(ok)ban a G és H oszlop megfelelő sora(i)t. A H-t azért adtam a törölni valókhoz, mert akkor már nem kell a dátum.Private Sub Worksheet_Change(ByVal Target As Range)
Dim terulet As String
Application.EnableEvents = False
If Not Intersect(Range("C2:C8"), Target) Is Nothing Then
Cells(10, 3).Value = Now()
End If
If Not Intersect(Target, [G2:G39]) Is Nothing Then
If Target = "" Then
Range(Target.Address).Offset(, 1) = ""
Else
Range(Target.Address).Offset(, 1) = Date
End If
End If
If Not Intersect(Target, [F2:F39]) Is Nothing Then
terulet = Target.Address
Range("VV1") = terulet: Range("VW1").FormulaR1C1 = "=SUBSTITUTE(RC[-1],""F"",""G"")"
terulet = Range("VW1")
Range(terulet) = ""
Range("VW1").FormulaR1C1 = "=SUBSTITUTE(RC[-1],""F"",""H"")"
terulet = Range("VW1")
Range(terulet) = ""
End If
Application.EnableEvents = True
End Sub -
karlkani
aktív tag
válasz
karlkani #45798 üzenetére
Azt megoldható, ha egyszerre több cella tartalmát törlöm, akár az egész F2:G39 tartományt (F oszlopban van az aktuális összeghez tartozó megnevezés), akkor ne fusson hibára? Egyesével szépen törli a G oszlop celláit, de többet kijelölve az alábbi hibaüzenetet kapom.
Run-time error: '13':
Type mismatch
-
karlkani
aktív tag
válasz
karlkani #45797 üzenetére
Összeraktam a kettőt, úgy néz ki működik.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("C2:C8"), Target) Is Nothing Then
Cells(10, 3).Value = Now()
End If
If Not Intersect(Target, [G2:G39]) Is Nothing Then
If Target = "" Then
Range(Target.Address).Offset(, 1) = ""
Else
Range(Target.Address).Offset(, 1) = Date
End If
End If
End Sub#45796 Delila_1
Kedves Kati!
Nagyon szépen köszönöm! -
Delila_1
veterán
-
Fferi50
Topikgazda
válasz
karlkani #45754 üzenetére
Szia!
Miért ne lehetne úgy átírni.
Tehát minden második sorban van az a szöveg, amit ki szeretnél cserélni?
Akkor ilyen legyen a makró:Sub modosit()
Dim a As String, cl As Range
For Each cl In ActiveSheet.UsedRange.Columns("A").Cells 'az A helyére írd az adataid oszlopát
If InStr(cl.Value, "/") > 0 Then
a = cl.Text
a = Left(a, InStrRev(a, "/")) & "valami_" & Mid(a, InStrRev(a, "\") + 1) ' a valami_ legyen idézőjelek között
cl.Value = a
End If
Next
End Sub
Remélem, így már tényleg működni fog.
Üdv. -
Fferi50
Topikgazda
válasz
karlkani #45748 üzenetére
Szia!
Ezt leginkább makróval lehet gyorsan megoldani. Mivel nem írtad, hogy a szöveg mellett a hivatkozást is meg kell-e változtatni, azt is megadtam:Sub modosit()
Dim a As String, cl As Range
For Each cl In ActiveSheet.UsedRange.Columns("A").Cells 'az A helyére írd az adataid oszlopát
If cl.Hyperlinks.Count > 0 Then
a = cl.Text
a = Left(a, InStrRev(a, "\")) & "valami_" & Mid(a, InStrRev(a, "\") + 1) ' a valami_ legyen idézőjelek között
cl.Hyperlinks(1).TextToDisplay = a
'ha a linket is változtatni kell akkor a következő sor is szükséges, ha nem akkor töröld ki.
cl.Hyperlinks(1).Address = a
End If
Next
End Sub
A makrót másold be egy modullapra. Alt+F11 -Insert - Module
Ha testre szabtad, aktíváld azt a munkalapot, ahol a lista van és indulhat is. Fejlesztőeszközök - makrók - modosit - indítás.Üdv.
Ps. Ha csak a cellában levő szöveget írod át, akkor a link nem változik. -
Mutt
senior tag
válasz
karlkani #45260 üzenetére
Szia,
A hónap napjai egy oszlopban, egymás alatt helyezkednek el (C oszlop). Az ünnepnapok színezése egy másik lap alapján történik, névkezelőben hozzáadva Ünnepnapok néven
=SZORZATÖSSZEG((HÉT.NAPJA(Ünnepnapok;11)<6)*(HÓNAP(Ünnepnapok)=HÓNAP(C$2)))
Hogyan műkődik?
- a HÉT.NAPJA meg mondja hogy az adott ünnepnap melyik napra esik, a <6 a hétköznapokat jelenti.
- a HÓNAP(Ünnepnapok) = HÓNAP(C$2) kiválogatja azokat az ünnepnapokat, amelyek azonos hónapban vannak mint a C2-ben lévő dátum.Ha a két feltétel azonos, akkor 1-et ad vissza a szorzás, különben 0-t.
Végül már csak az 1-et kell összeadni. Lehetn a SZUM-át is használni, de a képlet tömb-képlet és ott előnyösebb a SZORZATÖSSZEG.üdv
-
Fferi50
Topikgazda
válasz
karlkani #42840 üzenetére
Szia!
"Másolva, majd beillesztve idézőjelek közé teszi az adatokat, ha a tab karakter benne van a cellában. Simán összefűzve, szóközzel elválasztva a két cella tartalma, majd átmásolva jó, de amint bekerül a tab karakter a cellába már nem."
Nem egészen értem, nálam nincs ilyen. Másolás - irányított beillesztés értéket ugyanúgy megtartja a tabokat láthatatlanul és nincs semmi idézőjel.Üdv.
-
Fferi50
Topikgazda
válasz
karlkani #42838 üzenetére
Szia!
Légy már egy kicsit kreatívabb....=HELYETTE(HELYETTE(KÖZÉP(D2;SZÖVEG.KERES(":";D2)+2;HOSSZ(D2));KARAKTER(34);"");",";"")
Nem tudom, jó ötlet-e a Tab elválasztás. A Tab a Karakter függvénnyel állítható elő.
Ha 3 tab-ot szeretél, akkor a Sokszor függvényt is be kell vetned.=F2 & SOKSZOR(KARAKTER(9);3) & G2
Ne lepődj meg, a tab nem látszik a cellákban.Üdv.
-
Fferi50
Topikgazda
válasz
karlkani #42835 üzenetére
Szia!
"a tisztított adatoknál a felhasználónév előtt ott marad a"
és a végén a","
Erre írtam, hogy használd a HELYETTE függvényt. A módosított képlet:=HELYETTE(KÖZÉP(D2;SZÖVEG.KERES(":";D2)+2;HOSSZ(D2));KARAKTER(34);"")
illetve:=HELYETTE(KÖZÉP(E2;SZÖVEG.KERES(":";E2)+2;HOSSZ(E2));",";"")
A KÖZÉP függvénynek meg kell adni a harmadik paramétert, hogy hány karaktert emeljen ki, de ezt ennél egyszerűbben nem lehet. Hiába írsz -1 vagy -2 -t hozzá, mert az még biztosan nem a végét fogja lehagyni, mivel a teljes hosszt számolja.Üdv.
-
Fferi50
Topikgazda
válasz
karlkani #42823 üzenetére
Szia!
Akkor ki kell bővíteni a keresendő szót pl. "*id" & Karakter(34) & " :*" a "*id*" helyett.
Feleslegek eltávolításához használd a HELYETTE képletet. Ez minden megadott részletet eltávolíthatsz.
Pl. =HELYETTE(A2;KARAKTER(34);"") eltávolítja az összes idézőjelet. (Fontos, hogy függvénnyel add meg az idézőjelet.)
=HELYETTE(A2;",";"") a vesszőket távolítja el.Üdv.
-
Mutt
senior tag
válasz
karlkani #42810 üzenetére
Szia,
Excel 2010-től van a Power Query ami az alábbi lépésekkel használható.
Én csináltam egy minta txt fájlt, ami így néz ki:1. Excelben az adatok fülön található beolvasással megnyitom ezt a minta fájlt.
2. Adatok beolvasására kattintva megjelenik a fájl tartalma a Power Query szerkesztőben
3. Az első jobb sarkában található szövegszűrővel rákeresünk az id és username kezdetű sorokra.
4. Szedjük szét az oszlop tartalmát két oszlopra kettőspont elválasztó szerint.
5. A sorokhoz adjunk egy azonosító oszlopot. Oszlop hozzáadása -> Indexoszlop
6. Egy újabb azonosító oszlopot vegyünk fel, de ez ne 1-ről hanem 2-ről induljon. Oszlop hozzáadása -> Indexoszlop -> EgyéniEzzel a két utolsó lépéssel azt értük el, hogy az egymás utáni sorokban lévő felhasználónév és azonosító azonos azonosítószámot kapott.
7. Kezdőlapon a Lekérdezések egyesítése opcióval megkerestetjük az azonos azonosítószámhoz tartozó adatokat. A képernyőt igy kell ehhez kitölteni:
8. Az új oszlop jobb sarkában lévő ikonra kattintva válasszuk ki hogy a második oszlop jelenjen meg.
9. Az első oszlopban szúrjünk a username-re és végül a felesleges oszlopokat töröljük ki.
10. Töltsük vissza Excelbe a készeredményt.üdv
-
ny.janos
tag
válasz
karlkani #42815 üzenetére
Szia!
Ha nem visszatérő feladatról van szó, hanem csak most az egyszer kell az adatokat kinyerned, valamint az "id" és "username" ilyen struktúrában szerepel, akkor egy egyszerű sorbarendezéssel egymás alá kerül az összes id és ugyanazon sorrendbe szintén egymás alá az összes username. Innen aztán simán ki lehet másolni őket egy másik munkalapra egymás mellé.
Ezt követően egyszerűen eltávolítod a felesleges adatokat csere funkcióval * és ? helyettesítő karakterek használatával, vagy szövegfüggvénnyel kinyered azt a rész, amire szükséged van.
-
Fferi50
Topikgazda
válasz
karlkani #42815 üzenetére
Szia!
Akkor mutatnék egy szerintem használható megoldást, hogy érthető legyen a műveletek sorrendje, ezért 4 segédoszlop szükséges hozzá:
Első segédoszlop: meghatározzuk a username -k helyét:
A segédoszlop első cellájába írunk egy db 1-est. Ez ugyanígy lesz a második segédoszlopban is. Én a B oszloptól tettem a segédoszlopokat
A képlet a második cellától kezdve:=HOL.VAN("*username*";INDIREKT("$A" & B1+1 & ":$A$10000");0)+B1
A függvény megtalálja a username szövegrészt az A oszlopban, mindig az előző után keresi, ezért a tényleges helyhez hozzá kell adni az utolsó találat helyét.
A C oszlop 2. cellájának képlete: (az első cellában ugye ott van az 1)=HOL.VAN("*id*";INDIREKT("$A" & C1+1 & ":$A$10000");0)+C1
Ez pedig az id szövegrészt keresi, hasonló módon, mint az előző képlet.
A következő 2 oszlopban meghatározzuk az adott kereséshez tartozó tényleges cellaértékeket:
D2 cella képlete:=INDIREKT("A" & B2)
E2 cella képlete:=INDIREKT("A" & C2)
Ezután a következő két oszlopba kerülnek a "feleslegtől megtisztított" adatok:
F2 cella képlete:=KÖZÉP(D2;SZÖVEG.KERES(":";D2)+2;HOSSZ(D2))
G2 cella képlete:=KÖZÉP(E2;SZÖVEG.KERES(":";E2)+2;HOSSZ(E2))
Itt a SZÖVEG.KERES függvény eredményét módosítani kell, ahány szóköz van a kettőspont után (1+ szóközök száma).Ezután a két végleges oszlopot Ctrl+C majd beillesztés értékként művelettel véglegesíted. A segédoszlopok mehetnek a levesbe.
Üdv.
-
Fferi50
Topikgazda
válasz
karlkani #42812 üzenetére
Szia!
Ha ilyen sorrendben követik egymást az adatok és a : (kettőspont) az elválasztó, akkor az alábbi képleteket használhatod: (feltételezve, hogy az adatok az A1 cellától kezdődnek).
Felhasználónév oszlopra:=KÖZÉP(INDIREKT("A"&SOR()*8);SZÖVEG.KERES(":";INDIREKT("A"&SOR()*8))+2;HOSSZ(INDIREKT("A"&SOR()*8)))
Id oszlopra:=KÖZÉP(INDIREKT("A"&4+(SOR()-1)*8);SZÖVEG.KERES(":";INDIREKT("A"&4+(SOR()-1)*8))+2;HOSSZ((INDIREKT("A"&4+(SOR()-1)*8))))
Ha nem az első sorban kezdődik, akkor a képletben az A után annyival nagyobb értéket írj, mint ahol az adatok kezdődnek. (Felhasználónévnél pl. "A" & 1+SOR(), Id-nél & 5 + SOR()-1, ha a 2. sorban kezdődnek az adatok.)
Ha a kettőspont után nem egy szóköz van, akkor a SZÖVEG.KERES függvény eredményéhez nem 2, hanem a szóközökkel megnövelt érték kell. (1 a kettőspont miatt, utána plusz a szóközök száma.)Ez a képlet húzható le végig, amikor elfogytak az adataid, hibát fog eredményezni, de gondolom ez nem olyan nagy baj.
Utána Ctrl+C és irányított beillesztés a képletes oszlopokra, hogy "maradandó" értéket kapj.Üdv.
-
Fferi50
Topikgazda
válasz
karlkani #42083 üzenetére
Szia!
Ebben az esetben nem kell hozzá segédoszlop! Elég egy tömbképlet, hogy az eredményt lásd:
Pl.=SZUM(DARABTELI(Ünnepnapok;$C$2200:$C$2255))
Ez akkor ad jó értéket, ha egy ünnepnap csak egyszer fordul elő a keresendő értékek között. Ha többször is előfordulhat, akkor=SZUM((DARABTELI(Ünnepnapok;$C$2200:$C$2255)>0)*1)
a tömbképlet. Azaz Shift+Ctrl+Enterrel kell bevinni és kapcsos zárójelek közé teszi az Excel.
VBA-ban pedig:Range("X2").FormulaArray="=SUM((COUNTIF(Ünnepnapok,$C$2200:$C$2255)>0)*1)"
Üdv.
-
Fferi50
Topikgazda
válasz
karlkani #42081 üzenetére
Szia!
A segédoszlopban miért nem jó neked Delila képlete, hiszen az csak akkor ad 0-nál nagyobb értéket, ha előfordul az ünnepnapok között az érték. Számolásnál nem mindegy neked, hogy össze kell adni az értéket vagy megszámolni hány db 0-nál nagyobb érték van?
A második kérdésre csak tippem van: nem lehet, hogy ilyenkor értesítés nélkül le van tiltva a makró futtatás az Excelben a biztonsági beállítások között?Üdv.
-
Fferi50
Topikgazda
válasz
karlkani #42071 üzenetére
Szia!
Az előbbi hozzászólásban szereplő makró kiegészíthető egy harmadik paraméterrel, ahova az eredményt kéred.Public Sub CountColor(pRange1 As Range, pRange2 As Range,pRange3 As Range)
Dim rng As Range, xcolor As Long, CountColor As Integer
xcolor = pRange2.DisplayFormat.Font.color
For Each rng In pRange1
If rng.DisplayFormat.Font.color = xcolor Then
CountColor = CountColor + 1
End If
Next
pRange3.Value = CountColor
End Sub
Üdv. -
-
Fferi50
Topikgazda
válasz
karlkani #42069 üzenetére
Szia!
Mivel feltételes formázás van, ezért a DisplayFormat tulajdonságot kell használni, ezt viszont függvényben sajnos nem tudja a VBA (a 2016-os legalábbis). Ezért nem függvényt, hanem Sub-ot kell használni:Public Sub CountColor(pRange1 As Range, pRange2 As Range)
Dim rng As Range, xcolor As Long, CountColor As Integer
xcolor = pRange2.DisplayFormat.Font.color
For Each rng In pRange1
If rng.DisplayFormat.Font.color = xcolor Then
CountColor = CountColor + 1
End If
Next
Range("A1").Value = CountColor 'ide azt a cella címet írd, ahová az eredményt szeretnéd
End Sub
Ezt viszont nem lehet felhasználói függvényként meghívni. A két paraméter ugyanaz, mint az általad leírt függvényben, pRange1 amiben keressük a cellákat, pRange2 aminek a színét számoljuk. Azért talán ezzel is tudsz ügyeskedni.
Más ötlet. Talán mégsem a színek szerinti összesítés a nyerő. Feltételezem, hogy a feltételes formázásnak a feltételei valamilyen táblázat alapján működnek (jó kis mondat lett a feltételek halmozásával...), mivel írtad, hogy pl. ünnepnapok. Ez alapján is lehetne a számolást elvégezni makró nélkül, valamilyen számláló képlettel, ami megvizsgálja, hogy az adott dátum benne van-e a "táblázatban". Szóval én nem vetném el ny.janos ötletét sem.
Üdv.
-
ny.janos
tag
válasz
karlkani #42069 üzenetére
Makróhoz nem értek, így abban majd segítenek a nálam okosabbak, de ehhez nem is feltétlen alkalmaznék makrót.
Beszúrhatsz egy új oszlopot, ahol a feltételes formázás képletét megadod, majd a szorzatösszeg függvénnyel megkapod a kívánt végeredményt. Szorzatösszeg helyett használhatsz szum függvényt is, de azt tömbképletként kell (Ctrl+Shift+Enter) alkalmaznod.
Segédoszlop nélkül is megoldható. Pl. A1:A31 tartomány azon értékeinek összegzése, amelyek nagyobbak 30-nál:=SZORZATÖSSZEG(($A$1:$A$31)*($A$1:$A$31>30))
vagy tömbképletként{=SZUM(($A$1:$A$31)*($A$1:$A$31>30))}
-
-
Delila_1
veterán
-
Delila_1
veterán
válasz
karlkani #29568 üzenetére
A 2. kérdésedre a válasz, hogy én írtam el. A makróban 2× szerepel, írd át.
Az első kérdésre:
Bevittem 2 segédtáblát a H, ill. a J oszlopba. Az első az idei, hátralévő ünnepnapokat tartalmazza, a második pedig a munkanap áthelyezést. Ehhez pluszban írtam a nov.6-ot, hogy látsszon a formázás.
A 2 segédtábla az Ünnepek, ill. a Mn névre hallgat. Mindkét segédtábla bővíthető, átírható jövőre.A képen látszik a B:C tartomány feltételes formázása.
Képletek a formázáshoz:
=DARABTELI(Mn;$B2)>0
=VAGY(HÉT.NAPJA($B2;2)>5;DARABTELI(Ünnepek;$B2)>0)Szerk.: Fontos a két feltétel sorrendje!
-
Delila_1
veterán
válasz
karlkani #29563 üzenetére
Póbáld ezzel:
Function SubMyColor(tartomány, Szinkod)
Dim CV As Range, osszeg As Double
Application.Volatile
For Each CV In tartomány
If CV.Font.ColorIndex = Szinkod Then osszeg = osszeg + CV
Next
SubMyColor = osszeg
End FunctionAz osszeg változónak lebegőpontos típust adtam, mert nem tudom, egész-, vagy törtszámok szerepelnek a tartományodban.
-
Delila_1
veterán
válasz
karlkani #29333 üzenetére
A Ctrl+e hozzárendelést külön kell megadnod, mert az általam írtban csak megjegyzésként szerepel.
A füzetben Alt+F8, kiválasztod a makrót, majd az Egyebek gomb segítségével megadod a bill. hozzárendelést. Csak akkor kell, ha Ctrl+... hatására is működésbe akarod hozni.
Érdemes olyan betűt megadni, ami nem alapbeállítása az Excelnek, mint pl. a Ctrl+a, Ctrl+b, stb.
-
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 -
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. -
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.
-
poffsoft
veterán
válasz
karlkani #28584 üzenetére
Sub Auto_Meret()
Dim CV, kom, ter As Range
Set ter = Range("D:D, I:I")
For Each CV In ter
Set kom = Range(CV.Address).Comment
If Not kom Is Nothing Then 'ha van megjegyzés
kom.Visible = True
kom.Shape.Select
Selection.AutoSize = True
kom.Visible = False
End If
Next
End Sub -
Delila_1
veterán
válasz
karlkani #28582 üzenetére
Elrejti a megjegyzést a
Range("I" & Target.Row).Comment.Text Text:=ertek & " Ft/liter"
sor után beszúrt
Range("I" & Target.Row).Comment.Visible = False
sor.
Tudtommal nincs olyan beállítás, ami eleve automatikus mérettel szúrja be a megjegyzést.Automatikus méretre állítás a D és I oszlopban:
Sub Auto_Meret()
Dim CV, kom, ter As Range
Set ter = Range("D:D, I:I")
For Each CV In ter
Set kom = Range(CV.Address).Comment
If Not kom Is Nothing Then 'ha van megjegyzés
Range(CV.Address).Comment.Shape.Select
Selection.AutoSize = True
End If
Next
End SubEzt a makrót mudulba kell másolni.
-
Delila_1
veterán
válasz
karlkani #28580 üzenetére
Cseppenként adagolod a feladatot.
Az új makró előállítja a megjegyzést automatikus mérettel, a bevitel sorának az I oszlopában. Teszi ezt akkor, mikor a D, vagy I oszlopba viszel be értéket.
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("D" & Target.Row) / Range("I" & Target.Row), 1)
Range("I" & Target.Row).Comment.Text Text:=ertek & " Ft/liter"
End If
Else: Range("I5").Comment.Text Text:="0 Ft/liter"
End If
Range(Target.Address).Select
End SubMár csak azt nem tudom, hogy a D/I érték, vagy az I/D kell a megjegyzésbe. Az
ertek = Round(Range("D" & Target.Row) / Range("I" & Target.Row), 1)
sor a D/I-vel számol. Ha ez nem jó, írd át így:
ertek = Round(Range("I" & Target.Row) / Range("D" & Target.Row), 1)
Szöveges bevitt adat esetén a megjegyzés szövege 0 Ft/liter lesz.
-
Delila_1
veterán
válasz
karlkani #28578 üzenetére
Szivi!
Kezdd azzal, hogy az I5 cellához rendelsz egy megjegyzést. A keretén bal klikk, ekkor a keret az előző sraffozottról átalakul sűrű pontozottá. Ezen jobb klikk, Megjegyzés formázása. Az Igazítás fülön jelöld be az Automatikus méret négyzetet.
A makró
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$I$5" Then
If IsNumeric(Range("I5")) And IsNumeric(Range("D5")) Then
Range("I5").Comment.Text Text:="Az I5 és D5 cella hányadosa: " _
& Range("I5") / Range("D5") & ""
Else: Range("I5").Comment.Text Text:="0"
End If
End If
End SubSzöveg nélkül a
Range("I5").Comment.Text Text:="Az I5 és D5 cella hányadosa: " _
& Range("I5") / Range("D5") & ""sor
Range("I5").Comment.Text Text:=Range("I5") / Range("D5") & "" -
Delila_1
veterán
válasz
karlkani #28574 üzenetére
A lapodhoz kell rendelned a makrót.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$10" Or Target.Address = "$F$5" Then
If IsNumeric(Range("B10")) And IsNumeric(Range("F5")) Then
Range("C3").Comment.Text Text:="A B10 és F5 cella hányadosa: " _
& Range("B10") / Range("F5") & ""
Else: Range("C3").Comment.Text Text:="0"
End If
End If
End SubA példában a C3 cella megjegyzésében jelenik meg a B10 és F5 cella hányadosa. Könnyen átírhatod a saját celláidra.
Szerk.: érdemes a megjegyzést automatikus méretűre állítani.
-
azopi74
addikt
válasz
karlkani #27214 üzenetére
"ilyenkor az a cella, ahova a képlet került automatikusan jobbra zár. Miért, hisz nincs beállítva semmi?"
Bocs, de tegnap telóról írtam és nem értettem teljesen mit értesz "jobbra zár" alatt - (nem használtam soha magyar office-t, nem ismerem ezeket a hungarische szakkifezéseket
). Szóval, az a kérdés, hogy miért igazítja jobbra a cellán belül a tartalmat? Minden értéket alapértelmezetten jobbra igazít, szöveget meg balra.
-
csadi0011
őstag
válasz
karlkani #27207 üzenetére
Először így akartam, de én nem tudtam beleírni. Kijöttem a gyakorlatból.
Nálam mindig hibát írt. Nem tudom mit rontok el.
Nem egész számokkal dolgozok ezért nekem most a táblázatomban így néz ki:
=KEREK.LE(J1;0);*10000+KEREK.LE(N1;0)*100+KEREK.LE(S1;0)Na ebbe hogy kell beleírni azt, amit te is beleírtál az összefűz-be?
-
karlkani
aktív tag
válasz
karlkani #27188 üzenetére
Kicsit módosítottam a kolléga kérésére a képleteken. Olyan esetben, ahol csak keresztnév van megadva, nem működött. Ha esetleg másnak is szüksége lenne rá, beírom ide is.
A1 Név
B1 =HAHIBA(BAL(A1;SZÖVEG.KERES(" ";A1)-1);"")
C1 =HAHIBA(KÖZÉP(A1;HOSSZ(B1)+2;HOSSZ(A1)-HOSSZ(B1)-HOSSZ(E1)-2);"")
D1 =ÖSSZEFŰZ(B1;" ";C1)
E1 =HAHIBA(CSERE(A1;1;SZÖVEG.KERES("^";HELYETTE(A1;" ";"^";HOSSZ(A1)-HOSSZ(HELYETTE(A1;" ";""))));"");A1)Ahogy az előzőben is írtam, miután a képletek a helyükön és "lehúztuk" őket, ameddig kell, a B és C segédoszlopokat elrejthetjük
-
CarrGomm
aktív tag
válasz
karlkani #27188 üzenetére
Nagyon köszi!! Ezek a képletek érdekes módon gond nélkül működnek, az előzőek valahogy nem akartak. Azt hittem valamit én csinálok rosszul, bár csak be kell másolni elvileg. Nem tudom miért van ez, hogy valakinek megy a képlet ugyanabban a verzióban nálam meg hibát ír.
Az elején azt hittem ez sem lesz 100-as, mert a C1-be másolt képlet Gábor helyett Gábo-t hozott eredményül, de végül az "E" oszlopba jól került be a név és ez a lényeg, szóval mindegy.
Szóval köszi még egyszer, ezt mentem, mert még kelleni fog! -
azopi74
addikt
válasz
karlkani #27098 üzenetére
"Viszont ezzel a megoldással sima formátumba nem menthető a füzet, csak makróbarátba."
Hát igen, ez elég nagy baromság amúgy.
Vagy .xml-ként is (xml spreadsheet 2003) elmentheted, és akkor működik megnyitás után, anélkül, hogy kérné
, hogy engedélyezd a makrókat.
Csak akkor kéri, ha .xls-ként mented el, xlsx-ként meg egyszerűen eldobja a rejtett névteres függvényeket tartalmazó neveket a névkezelőből is, még ha egy deka makrót nem használtál, akkor is. Kicsit néha átesik a MS a ló túlsó oldalára biztonság terén...
-
azopi74
addikt
válasz
karlkani #27096 üzenetére
Mert a függvények között csak azokat találod, amik meghívhatók közvetlenül is, nem csak name managerből.
Az EVALUATE, akár csak pl a SET.NAME (NÉVADÁS), a GET.NAME(NEVET.VESZ) és a CALL(HÍVÁS) csak azért érhető el excelből, hogy a hidden namespace-t (rejtett névteret ) elérhessük makrómentes munkalapokból is .
Itt viszonylag jól el van magyarázva :
Sajnos angolul van, magyar anyagot sehol nem találtam a témáról.
De ezeket a függvényeket csak name managerből érjük el.
-
azopi74
addikt
válasz
karlkani #27087 üzenetére
Ja, azt nem írtam, hogy ha így, relatív hivatkozásként természetesen az A3 cellán állva kell beírni. Vagy átírjuk abszolútra, és akkor mindenhol ezt az értéket adja vissza. Azért írtam relatívként, mert gondoltam nem csak két cellán akarja használni, de lehet szabadon fixálni sort vagy oszlopot.
-
Delila_1
veterán
válasz
karlkani #27068 üzenetére
Ha az érvényesítést úgy oldod meg, ahogy Fferi javasolta, csak a megadott 0 és 100 közötti egész számokat tudod bevinni a cellába, alfanumerikus adatot, kisebb vagy nagyobb számot, törtet nem.
Van mód a megadott tartományon kívüli adat bevitelére, de ahhoz az érvényesítés párbeszéd Hibajelzés fülén az Érvénytelen adat beírásakor hibaüzenet jelenjen meg előtti négyzetből ki kell venned a pipát, ami alapértelmezésben ott van.
A Figyelmeztető üzenet fülön adhatsz egy ilyesmi szöveget: Ebbe a cellába 0 és 100 közötti számot írhatsz. A cella fölé állva egy sárga hátterű négyzetben jelenik meg a megadott figyelmeztetés.
Új hozzászólás Aktív témák
Hirdetés
- Vírusirtó, Antivirus, VPN kulcsok
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Windows 10/11 Home/Pro , Office 2024 kulcsok
- Eladó steam/ubisoft/EA/stb. kulcsok Bank/Revolut/Wise (EUR, USD, crypto OK)
- Bontatlan - BATTLEFIELD 1 Collectors Edition - Játékszoftver nélkül
- Csere-Beszámítás! AMD Ryzen 7 7800X3D Processzor!
- Telefon felvásárlás!! Apple iPhone SE (2016), Apple iPhone SE2 (2020), Apple iPhone SE3 (2022)
- AKCIÓ! Gigabyte H610M i5 12400F 16GB DDR4 512GB SSD RX 6700XT 12GB Zalman S2 TG Seasonic 650W
- ASUS TUF Gaming A17 FA707NV - 17.3"FHD 144Hz - Ryzen 7 7735HS - 16GB - 1,5TB - RTX 4060 - Garancia
- Billentyűzet magyarosítás magyarítás lézerrel is! 10-15ezer közötti áron! Óriási betűkészeletünk van
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest