-
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
-
Fferi50
Topikgazda
válasz
föccer
#38495
üzenetére
Szia!
Egyrészt a For ciklusokhoz nincs Next. Az End utasítás befejezi a makró végrehajtását.
Másrészt a For ciklusban megtalált első nem rejtett cella után ki kell ugrani a ciklusból a másoláshoz:
For sor = 7 To 100000
If Rows(sor).Hidden = False Then
Range("E" & sor).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Exit For
End IfMert egyébként a ciklus végigmegy az összes nem rejtett soron és az utolsót fogja neked bemásolni.
Amúgy pedig a Range SpecialCells(xlCellTypeVisible) hasznos a szűrőknél, mert "egyben" visszaadja a nem rejtett cellák tartományát. Azért írtam idézőjelbe az egybent, mert természetesen ez a tartomány több területből is állhat, az így kapott objektum tartalmazza mindet. Arra figyelj, hogy természetesen a fejléc is látható, ezért azt kihagyva kell használni.
Üdv.
-
Fferi50
Topikgazda
válasz
Salex1
#38486
üzenetére
Szia!
Az miért nem opció, hogy beírod a rengeteg dátumodat vesszőkkel, majd a Ctrl+F funkcióval kicseréled a vesszőket pontra? Ha kijelölöd az egész oszlopot, akkor ez egy menetben megvan.
Vagy makróval, eseménykezeléssel, ezt a makrót írd be a munkalap kódlapjára (jobb egérgomb a fülön, kód megjelenítése):Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub 'ide azt az oszlopszámot tedd az 1 hely?re, ahova a dátumot írod
Application.EnableEvents = False
Target.Value = Replace(Target.Value, ",", ".")
Application.EnableEvents = True
End SubUtána makróbarát füzetként kell mentened.
Üdv.
-
Fferi50
Topikgazda
válasz
Elemental
#38471
üzenetére
Szia!
Ha a cella formátuma pénzérték, akkor semmit nem kell vele tenned, összeadható.
Ha szöveg formátumú, akkor az ÉRTÉK függvénnyel tudod számmá alakítani. De még az is előfordulhat, hogy ebben az esetben is működik az összeadás a szöveg számrészével - Excel útjai kifürkészhetetlenek
Üdv.
-
Fferi50
Topikgazda
válasz
dajkapeter
#38458
üzenetére
Szia!
Körkörös hivatkozást valóban nem szereti a rendszer.
"De mivel az értékeket nem biztos, hogy jól írják be a kollégák",Mi lenne, ha az adott cellákra adatérvényesítést csinálnál és abból választanák ki a kívánt értéket. Elütés kizárva.
Üdv.
-
Fferi50
Topikgazda
válasz
botond187
#38340
üzenetére
Szia!
Ezt a makrót próbáld meg:
Sub rendezo()
Dim sh As Worksheet, rng1 As Range, usor1 As Long, usor2 As Long, xx As Long, szine As Variant, ara As Variant, yy As Integer
usor1 = Range("B10000").End(xlUp).Row + 1
usor2 = Range("F10000").End(xlUp).Row
Range("E2:H" & usor2).Cut Destination:=Range("A" & usor1)
'Ez a r?sz az?rt van benne, hogy l?sd melyik sorokat szedte sz?t
usor1 = Range("B" & usor1 + usor2).End(xlUp).Row
Range("A2:A" & usor1).Formula = "=row() & "".sor"""
Range("A2:A" & usor1).Value = Range("A2:A" & usor1).Value
' itt a szeml?ltet? seg?d v?ge
Set rng1 = Range("A2:D2")
xx = 2
Do
With rng1
szine = Split(.Cells(3).Value, "/")
If UBound(szine) > 0 Then
ara = Split(.Cells(4), "/")
For yy = UBound(szine) To 0 Step -1
.Offset(1, 0).Insert shift:=xlShiftDown
.Copy rng1.Offset(1, 0)
.Offset(1, 0).Cells(3).Value = szine(yy)
If UBound(ara) >= UBound(szine) Then .Offset(1, 0).Cells(4).Value = ara(yy) Else .Offset(1, 0).Cells(4).Value = .Cells(4).Value
xx = xx + 1
Next
.Delete shift:=xlShiftUp
'xx = xx - 1
Else
xx = xx + 1
End If
End With
Set rng1 = Range("A" & xx & ":D" & xx)
Loop While rng1.Cells(2).Value <> ""
MsgBox "K?SZ"
End SubKiegészítés:
1. Ha a D oszlopban dátumot látsz, ne ijedj meg, állítsd át az egész oszlop cellaformátumát számra 0 tizedessel.
2. Ha színek vannak, de nincs hozzá külön ár, akkor minden színhez ugyanaz az ár kerül.Üdv.
-
Fferi50
Topikgazda
válasz
botond187
#38338
üzenetére
Szia!
"2x4 oszlopot kapok, amiből szeretnék 1x4 oszlopot, de folytatólagosan, hogy az első 4 oszlop vége után tegye be a második 4 oszlopot."
Kijelölöd a második négy oszlopot. Kivágás. Utána az első négy oszlop végén beillesztés.Cella tartalmat az Adatok- szövegből oszlopok menüponttal tudsz szétszedni. Ott megadhatod, mi az elválasztójel.
Nem tudnál egy rövid mintát feltenni (természetesen kamu adatokkal)? Benne mutatni, hogy mit és hogyan szeretnél? Makróhoz segítene.
Üdv.
-
Fferi50
Topikgazda
válasz
Delila_1
#38276
üzenetére
Szia!
Csak egy nagyon apró megjegyzés. Amennyiben az adott cella színe feltételes formázás következtében áll elő, akkor sajnos ez a módszer nem ad helyes eredményt.
A CV.DisplayFormat.Interior tulajdonság mutatja a cella tényleges színét. Ez igaz mind a mintára, mind az összegzendő cellákra.Üdv.
-
Fferi50
Topikgazda
válasz
pero19910606
#38256
üzenetére
Szia!
Ezzel a 2 sorral megoldhatod:
Sheets("Data").Range("G:H").Find What:="-",LookIn:=xlValues, Lookat:=xlWhole ' ez azért kell, hogy értékben cseréljünk. A Find és a Replace is megőrzi az előző beállítsokat.
Sheets("Data").Range("G:H").Replace What:="-", Replacement:="0", LookAt:=xlWholeÜdv.
-
Fferi50
Topikgazda
válasz
swoody
#38236
üzenetére
Szia!
Akkor fussunk neki mégegyszer.
"automatikusan csináljon egy új munkafüztet"
Szerintem új munkalap lesz az.
És igen, meg lehet csinálni. Kell hozzá egy makró, amit egy gombhoz (vagy billentyű kombinációhoz) rendelsz hozzá. Azért javaslom a hozzárendelést, mert azt, hogy mikor fejeztél be egy sort, azt nem lehet eseménykezeléssel követni.Tegyél fel egy minta fájlt elérhető módon, legyen benne, hogy mit szeretnél hova másoltatni az új munkalapra. Aztán meglátjuk, tudunk-e kihozni belőle valamit, vagy még kérdezünk.
Üdv.
-
Fferi50
Topikgazda
válasz
Karol0109
#38219
üzenetére
Szia!
A képlet az utolsó oszlop utáni oszlop második cellájába
=L2<= SZUMHATÖBB(Munka2!$D$1:$D$106;Munka2!$A$1:$A$106;Munka1!A2;Munka2!$B$1:$B$106;Munka1!I2)A $106 helyére a Munka2 tényleges sorainak számát írd légy szíves.
Végighúzod az oszlopon.
Ezután szűrhetsz az oszlop IGAZ értékeire.Üdv.
-
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
csferke
#38209
üzenetére
Szia!
Egyrészt miért kellene ehhez külön form,
Másrészt természetesen makróban is megoldható a bevitel vizsgálata:
Beírás előtt megnézed, hogy az érték megfelelő-e. Ha nem, akkor ismét bevitel szükséges.
Viszont ehhez ciklusba kell tenni a bevitelt:Do While True
Prompt = "Pesticid felhasználhatósága" + (Chr(13)) + (Chr(13)) + "H - RR - F - I - A - R - L - N - O"
MyValue = InputBox(Prompt, Title, Default, xpos, ypos)
Select Case myValue
Case "H", "RR", "F", "I", "A", "R", "L", "N", "O"
ActiveCell.Value = myValue
Exit Do
Case Else
MsgBox "nem ok"
End Select
LoopÜdv.
-
Fferi50
Topikgazda
válasz
Karol0109
#38206
üzenetére
Szia!
A második munkalapon csinálsz egy segédoszlopot, legyen ez mondjuk az E oszlop.
A második cella képlete: = A2&B2, ezt húzod le az oszlopon.Az első munkalapon egy segédoszlopban lehet megadni, hogy teljesült-e a feltétel:
A második cella képlete:=$N2>=INDEX(Munka2!$D$1:$D$29;HOL.VAN(Munka1!A2&Munka1!G2;Munka2!$E$1:$E$29;0);0)
Az oszlopokat a betett képek alapján számítottam ki, természetesen igazítsd a te adataidhoz.
Ezután erre az oszlopra teheted rá az igaz szűrőt.Üdv.
-
Fferi50
Topikgazda
Szia!
Egy mintafájl nagyon sokat segítene szerintem.
De itt egy próba makró:Sub Kepimport()
Dim cl As Range
Const utvonal = ("utvonal\") ' ide írd be a saját elérési útvonalad, \ legyen a végén
For Each cl In Columns("A").Cells ' az A oszlop helyére írd be azt, ahol a cikkszámok vannak
If cl.Value <> "" Then
With cl.Parent.Pictures.Insert(utvonal & cl.Value & ".JPG") 'ha nem jpg a kiterjesztés, akkor azt írd a helyére
.ShapeRange.ScaleHeight 0.3, msoFalse, msoScaleFromTopLeft ' itt állítjuk be a méretet, a 0.3 helyére próbálgatással nézd meg, mi lesz a jó
.Top = cl.Top ' a cikkszám magasságába kerül a kép
.Left = Range("H1").Left ' a H oszlophoz.
End With
Else
Exit For ' ha nincs érték a cellában, befejeztük a ciklust.
End If
Next
MsgBox "KÉSZ", vbInformation
End SubHa a cella magasság nem elég nagy és a képek átfedik egymást, akkor a cella magasságon állíts, mielőtt a makrót lefuttatod.
Természetesen makrós fájlként (xlsm) kell mentened.Üdv.
-
Fferi50
Topikgazda
Szia!
Azért pár kérdés maradt még hátra. Hová szeretnéd tenni a képet, milyen méretben? Mire használjátok a munkafüzetet, mert a sok képpel nagy méretű lesz, nehezen nyílik, esetleg áttekinthetetlenné válik.
Nem lenne jobb hivatkozásként kezelni a cikkszámokat és rákattintással lenne látható a kép?Üdv.
-
Fferi50
Topikgazda
válasz
#05304832
#38191
üzenetére
Szia!
Makróval biztosan megoldható, többféle verzióban is.
A leggyorsabb valószínűleg az, ha van egy lista, amelyben a termékek és a hozzájuk tartozó képek (teljes elérési útvonallal) össze vannak rendelve.Kellene egy minta fájl, amiben megmutatjátok, hogy milyen szerkezetű munkalapra kell a képeket betenni.
Üdv.
-
Fferi50
Topikgazda
válasz
w.miki
#38177
üzenetére
Szia!
1. Ha függvénnyel meg kell vizsgálni, van-e a cellában érték:
=SZÖVEG(E2;"hh.nn") & HA(F2="";""; "," & SZÖVEG( F2;"hh.nn")) & HA(G2="";"";"," & SZÖVEG( G2;"hh.nn"))& HA(H2="";"";"," & SZÖVEG( H2;"hh.nn"))2. Valószínűleg az a cella, amelyikben a képlet jelenik meg, szöveg formátumú. Változtasd át a formátumot általánosra, majd F2 billentyű és Enter.
Üdv.
-
Fferi50
Topikgazda
válasz
w.miki
#38174
üzenetére
Szia!
Igazad van, mivel dátumok vannak, ezért nem elég az egyszerű összefűzés.
A képlet az F1 cellába:=SZÖVEG(E2;"hh.nn") & "," & SZÖVEG( F2;"hh.nn") & "," & SZÖVEG( G2;"hh.nn") & "," & SZÖVEG( H2;"hh.nn")Az F3 cellába pedig a 4. sornak megfelelően ugyanez.
A általános formátumúak - másolás - irányított beillesztés után lehet akár szöveg is.Üdv.
-
Fferi50
Topikgazda
válasz
w.miki
#38172
üzenetére
Szia!
Erre találták ki az Összefűz függvényt, illetve az & műveleti jelet.
Egy másik cellában tudod megtenni (pl. F1 cellába):=E2 & "," & F2 & "," & G2 & "," & H2
Ugyanígy a 4. sorét is.Ezután a cellára másolás - irányított beillesztés értéket. Így nem változik tovább.
Üdv.
-
Fferi50
Topikgazda
válasz
w.miki
#38169
üzenetére
Szia!
1. képhez: Írtam, hogy a $C$1:$C$8 helyett írj $D$1:$D$8 -at a képletben mindenhol. Mivel nálad a nevek a D oszlopban vannak.
=HAHIBA(INDEX($A$1:$A$8;NAGY(($D$1:$D$8=$E1)*SOR($A$1:$A$8);DARABTELI($D$1:$D$8;$E1)-(OSZLOP()-OSZLOP($E$1)));0);"")2. képhez: Mivel a C oszlopot kitörölted, a képletben pedig az E oszlop rögzítve van ($E), emiatt az ott (nem lévő) értéket akarná felhasználni.
Javaslat: a C oszlopot töröld előbb és utána írd be a képletet vagy az 1. képhez írottak szerint módosítsd a képletet.
E2 formátuma az A oszlop szerinti legyen.
Üdv.
-
Fferi50
Topikgazda
válasz
w.miki
#38166
üzenetére
Szia!
Az E oszlopot átmásolod az A oszlopba - E oszlopon másolás - A oszlopon irányított beillesztés értéket. Az A oszlopot megformázod ugyanúgy, ahogyan az E oszlop van.
Ezután az E oszlop értékeit törlöd.
Az E1 cellába beírod Miki, az E3 cellába pedig Kata.
Az E2 cellába beírod a https://itcafe.hu/tema/excel/hsz_38154-38154.html hozzászólásomban szereplő képletet, illetve aszerint jársz el.Természetesen, ha a D oszlopban szerepelnek a nevek, akkor a $C$1:$C$8 helyébe a $D$1:$D$8 kerüljön a képlet beírásakor mindenhova.
A képlet másolható az E3 cellába. Továbbá elhúzható a 2. illetve a 4. sorban.
Üdv.
-
Fferi50
Topikgazda
válasz
w.miki
#38156
üzenetére
Szia!
Mivel az A oszlopban csak a hónap neve szerepel, honnan tudná szegény képlet, hogy neked a nap is kellene hozzá.

Az A oszlopodban kellene összevonni (beírni) a teljes dátumot. A D1 cellába a képlet=DÁTUMÉRTÉK(A1&B1)Ezt végighúzod az oszlopon. Majd az oszlop másolás - irányított beillesztés - értéket erre az oszlopra utána az A oszlopra is. A D oszlop törölhető.
Ezután már csak a cellaformátumod kell állítani, ha nem megfelelő.
A napnevet tartalmazó oszlop nem zavar, maradhat is akár.Üdv.
-
Fferi50
Topikgazda
válasz
w.miki
#38137
üzenetére
Szia!
Ha a dátumok nem egy oszlopban vannak (külön a hónap és külön a nap), akkor először azokat egy oszlopba kell tenned. Formáját egyéni formázással hh.nn -re állítsd (magyar Excel).
Ha az adatok az A:C oszlopokban vannak, akkor pl. az E1 és E3 cellába írva a két nevet, az E2 cellába a következő tömbképletet írhatod:=HAHIBA(INDEX($A$1:$A$8;NAGY(($C$1:$C$8=$E1)*SOR($A$1:$A$8);DARABTELI($C$1:$C$8;$E1)-(OSZLOP()-OSZLOP($E$1)));0);"")A tömbképletet Ctrl+Shift + Enter kombóval viheted be, az Excel kapcsos zárójelbe teszi.
Ezt a képletet húzd végig a 2. soron illetve másold át a 4. sorba. Amennyiben már nem tartozik a névhez dátum, úgy a képlet üres cellát fog mutatni.
Természetesen a tartományok végeit igazítsd a saját adataidhoz.Üdv.
-
Fferi50
Topikgazda
válasz
p5quser
#38075
üzenetére
Szia!
Úgy tűnik, ilyen több műveletet tartalmazó képletet csak egy módon tudsz kiszámoltatni (bár erre igazán lehet azt mondani, hogy pofonegyszerű
):
A kifejezést tartalmazó cellára nyomsz egy F2-t majd eléírod az = jelet.
Persze ez többszáz cellánál elég időigényes. De sajnos makróval sem találtam jobb megoldást.Üdv.
-
Fferi50
Topikgazda
válasz
bteebi
#38045
üzenetére
Szia!
Excelből nyilván Word objektumként kezeled a Word dokumentumot, amiben cserélni szeretnél. Ebben az esetben az Excel VBA nézetben a Tools - References - menüpontban be kell jelölnöd a Microsoft Word libraryt. Ettől elérhetővé válnak a Word konstansok is.
Ha a Word objektumot WordDoc változónéven kezeled, akkor
Az első oldali fejlécWordDoc.StoryRanges(wdFirstPageHeaderStory)az általános fejléc
WordDoc.StoryRanges(wdPrimaryHeaderStory)hivatkozással érhető el.
A csere pedig:WordDoc.StoryRanges(wdPrimaryHeaderStory).Find.Execute Findtext:="Város1", ReplaceWith:="Nagykanizsa"Természetesen az egyes szekciókban, amennyiben eltérőek a fejlécek, külön is cserélheted azokat, itt viszont tudnod kell, hogy melyik Header darabban van a keresett szöveg (nekem úgy tűnt, a normál header az 1 sorszámú, az első oldali a 2. sorszámú):
WordDoc.Sections(2).Headers(1).Range.Find.Execute Findtext:="Város1"), ReplaceWith:="Nagykanizsa"Ugyanez vonatkozik a láblécekre is, csak a Header helyett Footer a neve.
Üdv.
-
Fferi50
Topikgazda
válasz
kasza blanka
#38008
üzenetére
Szia!
Próbáld így:
=HA(ÜRES(INDEX(INDIREKT(D$18);HOL.VAN(E23;INDIREKT(E$18);0);4));"";INDEX(INDIREKT(D$18);HOL.VAN(E23;INDIREKT(E$18);0);4))Üdv.
-
Fferi50
Topikgazda
válasz
slashing
#37979
üzenetére
Szia!
Szerintem roppant egyszerű a magyarázat:
Az X oszlopban levő referencia értékek nem egyeznek meg a K oszlopban levő referencia értékekkel, ezért nem is várhatod, hogy ugyanazt az eredményt adják a képletek.
X2-be képlet : =HA(K2="P";1;0)
Ezt végighúzod az oszlopon. Máris jó lesz az eredményed!Üdv.
-
Fferi50
Topikgazda
válasz
macilaci78
#37910
üzenetére
Szia!
Szerintem akkor is érdemes megpróbálni a szövegből oszlopok varázslót. Legfeljebb többször is végre kell hajtani. Úgy gondolom, még mindig gyorsabb, mint egyenként végigmenni a tételeken.
Üdv.
-
Fferi50
Topikgazda
Szia!
"nem igaz hogy lényeges a sorba rendezes"
Ez a megállapítás nem fedi a valóságot. Csak akkor nem szükséges a sorbarendezés, ha pontos találatot szeretnél kapni.
Egyébként - amikor tehát tartományban keresel közelítő értéket - akkor bizony kell a táblázat sorbarendezése. (Lásd Fkeres 4. paraméterének és HOL.VAN 3. paraméterének magyarázata.)
A rendezett táblázatokkal további izgalmas feladatok - pl. "osztályközös" keresés is megvalósítható.
Összefoglalva:
Vannak feladatok, ahol nem szükséges a rendezett táblázat és vannak ahol viszont csak az ad jó eredményt.Üdv.
-
Fferi50
Topikgazda
válasz
föccer
#37877
üzenetére
Szia!
"Ez gyönyörű szépen is működik minden esetben, kivéve a dátum esetében."
Mint bizonyára te is ismered, az Excel a dátumot számként értelmezi. Ha tehát a "dátumot tartalmazó cella" valóban dátum formátumú, bármit is látsz ott, amögött szám van (!).
Ezért a feltételekben is számként kell megadni a dátumot.Sheets("Tulajdonságok").Rows("7:7").AutoFilter Field:=1, Criteria1:=">=" & Format(Sheets("Segédszámítások").Range("C3").Value,"###") stb.Üdv.
-
Fferi50
Topikgazda
válasz
Exportlaptop
#37846
üzenetére
Szia!
Ha pontosan másoltad be a modul tartalmát, akkor az a gond, hogy hiányzik a végéről az utolsó sor:
End Sub.Valószínűleg véletlenül törölted.
Ha mégsem így lenne, akkor kérlek, másold ide pontosan.Üdv.
-
Fferi50
Topikgazda
válasz
swoody
#37817
üzenetére
Szia!
Ha mindenáron HA függvénnyel szeretnéd megoldani, akkor egymásba kell ágyazni azokat:
=HA(A2=1;B$8;HA(A2=2;B$9;HA(A2=3;B$10;HA(A2=4;B$11;HA(A2=5;B$12;HA(A2=6;B$13;"Nincs ilyen szám"))))))De sokkal egyszerűbb a Keres ill. később az Fkeres függvény:
Két oszlop kell, az elsőben a számok egymás alatt, a másodikban a neveik Pl a Keres függvényre:=KERES(A2;$D$8:$D$13;$B$8:$B$13)A képletet lehúzhatod a következő cellákba.
Üdv.
-
Fferi50
Topikgazda
válasz
föccer
#37807
üzenetére
Szia!
Sajnos az üres cellát "egyenlő" feltételként értelmezi a függvény.
Ha azt szeretnéd, hogy "ne vegye figyelembe", akkor az "üres" cellába ezt kell beírni <>.
Ezt úgy értelmezi, hogy nem üres a vizsgált tartomány.
(Azt ne kérdezd, hogy miért, talán Redmondban tudják....
)Üdv.
-
Fferi50
Topikgazda
válasz
Colin111
#37803
üzenetére
Szia!
Miért is nem jó a jó képlet? Ami minden egyes kattintásra a következő nevet veszi fel....
Vagy nem arra koncentrálunk, ami a feladat lenne?
Mert ezt a kérdést
"sajnos ennek sem lehet függvénnyel magadni az ugrás/lépés számot...."
nem értem, miért kellene külön lépésszámot megadni?Üdv.
-
Fferi50
Topikgazda
válasz
Colin111
#37794
üzenetére
Szia!
A neveket másold le egy külön oszlopba, majd ismétlődések eltávolítása. - ezáltal csak egy-egy név marad.
A léptetőnek a min-max értékét ehhez az oszlophoz igazítsd.
Ha mondjuk az X oszlopban vannak a nevek, a léptető pedig a K1 cellához van kapcsolva, akkor a képlet=Index($X$1:$X$10;$K$1)
amit írhatsz pl. a K2 cellába akár.Üdv.
-
Fferi50
Topikgazda
válasz
logitechh
#37792
üzenetére
Szia!
Számolást kikapcsolod. (Képletek - Számolási beállítások - Manuális). Ezután Ctrl+F (keresés és csere), Keresett szöveg 10403 Csere fül -- Csere erre: amire akarod, majd Egyebekre katt, Keresés helye kiválasztod Képletek --- az összes cseréje.
Számolás visszakapcsolása (Képletek - Számolási beállítások - Automatikus)
Makróval:
Application.Calculation=xlCalculationManual
Activesheet.Usedrange:Find What:="10403",LookIn:=xlFormulas,LookAt:=xlPart
Activesheet.Usedrange.Replace What:="10403", Replacement:="5000",LookAt:=xlpart
Application.Calculation=xlCalculationAutomaticÜdv.
-
Fferi50
Topikgazda
Szia!
Ha kérdés nélküli felülírást szeretnél, akkor
Application.DisplayAlerts = False a makró elejére és
Application.DisplayAlerts = True a makró végére.A kihagyáshoz:
LocalFileName = "C:\temp\" & Evaluate("TRIM(RIGHT(SUBSTITUTE(""" & c & """,""/"",REPT("" "",1000)),1000))")
B=Dir(LocalFileName)=""
If B Then B = True ThenDownloadFile(UrlFileName:=URL, _
DestinationFileName:=LocalFileName, _
Overwrite:=PromptUser, _
ErrorText:=ErrorText)
End ifÜdv.
-
Fferi50
Topikgazda
válasz
valyogvisko
#37762
üzenetére
Szia!
Szerintem akkor jársz a legjobban, ha a feltételes formázásokat átírod erre a kereső munkalapra is, persze megfelelően módosítva. Gondolom néhány általános szabály van és nem minden cellára/munkalapra különböző.
Üdv.
-
Fferi50
Topikgazda
Szia!
"Ha manuálisra állítom, akkor is gyorsan megcsinálja"
Akkor bizony olyan függvények lehetnek az adott munkafüzetben, amelyek minden cellaváltozásra újraszámolják az értékeket.
Keress a VBA nézetben rá a Volatile szóra. Nagy eséllyel fogsz találni olyan eljárást, ami tartalmazza. Na az a bűnös.Látatlanban ennél többen nem tudok mondani. Ha nem túl titkosak az adatok, akkor küldd el priviben és ránézek.
Üdv.
-
Fferi50
Topikgazda
Szia!
"közepesen komplex makrót tartalmazó Excel file-om"
Jó lenne tudni, hol van az a makró. Modulban, munkalap kódlapján, esetleg a Thisworkbook kódlapján....
Az a tippem, hogy eseménykezelő van a munkafüzetben és emiatt lassú a sok ezer cella lekezelése. Esetleg lehetnek olyan munkalapok benne még, ahol számítások vannak és minden művelet után újraszámolja az Excel a képleteket. Erről meggyőződhetsz, ha a számolást átállítod manuálisra.Üdv.
-
Fferi50
Topikgazda
válasz
d@minator
#37701
üzenetére
Szia!
Csak egy ötlet. Ha már úgyis makrózol, tehetnél fel pár "szinező" gombot. Ami úgy működne, hogy gombnyomásra beszínezi az adott színre a cellát, ha pedig be van színezve, eltávolítja a színt. Ebben a makróban meghívhatod a színösszeadós makrót és akkor egyből látod a változást.
Hátrány, hogy minden színhez kell egy gomb.
Pl.Sub piros()
If selection.interior.color=vbwhite then
selection.interior.color=vbred
else
selection.interior.color=vbwhite
end if
end subSzerintem a gombnyomogatás még kényelmesebb is, mint a kézi átszínezés (kivéve, ha feltételes formázással színezel, ami egész más tészta - ott akár az is elképzelhető, hogy Change eseményhez köthető az újraszámolás, ha a feltételes formázás cella értékhez van kötve).
Üdv.
-
Fferi50
Topikgazda
válasz
d@minator
#37699
üzenetére
Szia!
"de ha beszínezek valamit nem változik semmi csak az újraszámolásra rányomva."
Pontosan ezt mondja a makróhoz fűzött kiegészítés:
"Note: If after applying the above mentioned VBA code you would need to color a few more cells manually, the sum and count of the colored cells won't get recalculated automatically to reflect the changes. Please don't be angry with us, this is not a bug of the code : )
In fact, it is the normal behavior of all Excel macros, VBA scripts and User-Defined Functions. The point is that all such functions are called with a change of a worksheet's data only and Excel does not perceive changing the font color or cell color as a data change. So, after coloring cells manually, simply place the cursor to any cell and press F2 and Enter, the sum and count will get updated. The same applies to the other macros you will find further in this article. "
Nincs más hátra, mint előre, mindig újra kell számoltatnod a színezés után, mert az Excelnek nincs a színváltozást érzékelő eseménye.
Üdv.
-
Fferi50
Topikgazda
válasz
p5quser
#37673
üzenetére
Szia!
'Mint írtam, van működő kód, csak nem értem ezt az előjel váltást, és érdekelt, hogy mi nyűgje lehet.'
Ezek szerint amit leírtál kód, az mégsem működik megfelelően. Sajnos így látatlanban nem tudom megmondani, mi lehet a probléma. A kódnak elvileg jól kellene működnie.
Talán elküldhetnéd privátban.
Üdv.
-
Fferi50
Topikgazda
Szia!
A beállítások, menüszalag testreszabása - minden parancs - szövegfájlból parancsot másold át a menüszalagra - új lap - új csoport ide tudod betenni.
Utána az új lapon megtalálod.Ha ezzel nem menne, akkor makró.
Sub megnyito()
Workbooks.OpenText "Fájlnév", DataType:=xlDelimited, semicolon:=True
End SubAlt+F11
Insert - Module
utána a fenti bemásolása.Üdv.
-
Fferi50
Topikgazda
Szia!
Jobb lett volna látni az eredeti csv fájlban szereplő sort.
Most úgy gondolom, hogy a delimiter az egyikben biztosan pontosvessző (amit munkafüzet1 néven tettél fel), az Workbooks.OpenText metódussal kell megnyitnod, a semicolon paraméter=True értékkel.
A másiknál nem tudom, mi a határoló, de próbálgasd azt is az előző metódussal és a határoló paramétereinek változtatásával.Üdv.
-
Fferi50
Topikgazda
válasz
RAiN91
#37649
üzenetére
Szia!
Rendszer beépített lehetőséget nem tudok rá. Viszont minden makró elejére beírhatod, hogy egy cellába beírjon egy szöveget, csak a makró végén ne felejtsd el kitörölni.
Vagy az állapotsort is felhasználhatod a futás jelzésére:Application.Statusbar=Szöveg ' hosszabb programok, ciklusok esetén itt szoktam kijelezni, hol tartunk éppen
Futás közben bármikor átírhatod különböző szövegekkel.
A futás végén pedig:Application.Statusbar=False ' ez visszadja a vezérlést a VBA-nakÜdv.
-
Fferi50
Topikgazda
válasz
Karol0109
#37563
üzenetére
Szia!
Nem az a bajom, hogy nem tudom értelmezni a feladatot, hanem az, hogy a mintád használhatatlan, mert ugyanazon azonosítóhoz tartoznak azonos(nak tűnő) tételek. Akkor most melyik A és B vizsgát párosítsam, ha mindkettőből van azonos névhez azonos fokozattal szakmai 2-2 db, mint a mintádban?
Üdv.
-
Fferi50
Topikgazda
válasz
dellfanboy
#37527
üzenetére
Szia!
Valószínűleg mégsem azonos a keresett érték a táblázatban levővel. Erről meggyőződhetsz, ha a táblázatból átmásolod az értéket a keresőhöz, vagy fordítva.
Az Fkeres 0 negyedik paraméter esetén pontos egyezőséget keres, míg a Ctrl+F -nek elég a részleges is.Üdv.
-
Fferi50
Topikgazda
Szia!
A következőt javaslom: a listbox listáját átalakítjuk szöveggé és ebben keressük az adott nevet.
Dim szuro as string ' ez természetesen csak egyszer kell, valahol máshol előtte is lehet.
szuro=Join(Application.Transpose(ListBox2.List), ";")
If szuro Like "*" & Range("B" & i) & "*" Or szuro Like "*" & Range("C" & i) & "*" Then
Rows(i).EntireRow.Delete Shift:=xlUpÜdv.
-
Fferi50
Topikgazda
válasz
szabonagyur
#37507
üzenetére
Szia!
Talán megpróbálhatnád a kombinált diagramot. Az alapadatok vonal, a szélső értékek pedig oszlop diagram formájában.
Üdv.
-
Fferi50
Topikgazda
válasz
csongi
#37506
üzenetére
Szia!
Mitől fehér és mitől kék? Vagyis mi okozza a cella színeváltozását? Ha feltételes formázás, akkor talán az értékhez kötve megvalósítható a munkalap Change eseményében.
Ha csak "úgy", a felhasználó színezi, akkor automatikusan nem fog menni, max. gombnyomásra.
De mindkét esetben makró kell hozzá.Üdv.
-
Fferi50
Topikgazda
válasz
Dufresne
#37493
üzenetére
Szia!
Ez egy Excel4-es makró függvény. Nem lehet közvetlenül lefuttatni a magasabb verziószámú Excelekben.
Erre használható az ExecuteExcel4Macro függvény.
[lItt találhatod a helpjétL]Üdv.
-
-
Fferi50
Topikgazda
Szia!
Nahát!
Szerintem az a feladat, hogy az A oszlopban levő számot megkeressük a C oszlopban, ha előfordul. akkor írunk a D oszlopba, ha nem, akkor nem írunk.
Erre nagyon megfelel a Darabteli függvény, csak éppen az eddigiekhez képest fordítva kell paraméterezni, képlet a D1 cellába:=HA(DARABTELI($C:$C;$A1)>0;$B1;"")Ezt húzd végig a D oszlopon.
Üdv.
-
Fferi50
Topikgazda
Szia!
Azt hiszem, még mindig nem elég világos amit szeretnél....(bár néha úgy tűnt
)
Idézet az első hozzászólásodból:
"Hogy tudom azt megadni, hogy a D oszlop adott sorában dobja ki a B oszlop adott sorát, ha az A oszlopban szerepel a C oszlop bármelyik száma? "
A csatolt példa pedig:
1 gd 0 gd
2 bcx 1
3 hf 3 hf
3 bd54t 4 bd54t
1 sdg 6 sdg
1 qwef 7 qwef
7 dsfg 10 dsfg
4 fv 21 fv
9 vy 40
10 yvxc yvxc
10 cv cv
3 yxcv yxcv
2 yxcv
4 yxcv yxcv
15 yxcv
16 yxcv
17 yxcv
18 yxcv
19 yxcv
20 yvxc
21 yxcv yxcvazt mutatja, hogy a 40 nincs benne az A oszlopban, (viszont minden más C oszlopbeli szám - kivéve a 0 - benne van), ennek ellenére ide üres D cellát tettél.
15-20-ig tartó A oszlopbeli számok nincsenek benne a C oszlopban, ezért ott üres a D oszlop, de a többi szám benne van a C oszlopban....
Nem elfelejtve azt sem, hogy hozzászólásaidban keverednek a sorok és oszlopok meghatározásai is...
Akkor most mi is a szabály? Milyen esetben kell a D oszlopba a B oszlop értékeit beírni?
Mert az idézet szerint minden D oszlopbeli cellában a B oszlop értékeinek kellene lenni, a példa pedig nem egyértelmű.Üdv.
-
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
ppapp44
#37415
üzenetére
Szia!
"Most is deklarálva van mind a workkbook-on és a modul1-ben (sőt kísérletként visszaraktam a modul2-be és formra is (teljesen feleslegesen)), de így is működik."
Ugye azt tudod, hogy a három-négy különböző helyen deklarált ugyanazon nevű publikus változó NEM UGYANAZ, hanem 3-4 különböző változó, mindegyiket a Modulnév.Változónév formulával tudod elérni - KÜLÖN-KÜLÖN - és más más értékük lehet!
Természetesen ennek is meg lehet a maga célja, jelen esetben azonban inkább csak zavart okoz szerintem.Én semmiképpen nem javaslom.
Üdv.
-
Fferi50
Topikgazda
válasz
ppapp44
#37413
üzenetére
Szia!
Szerintem az volt a baj, hogy minden modulban stb. definiáltad a változót. Csak egy helyen deklaráld és utána arra az egyre hivatkozz. Különben honnan tudná a VBA, hogy melyiket akarod... ha pedig nincs előtte modulnév, akkor az aktuális eljárásban magának deklarálja, ha nincs Option Explicit.
a javított verziót.
Üdv.
-
Fferi50
Topikgazda
Szia!
"az A oszlop adott sorában megkeresi C bármely elemét"
Ezt most kicsit fordítva írtad....,mert legelőször ez volt:
"D oszlop adott sorában dobja ki a B oszlop adott sorát, ha az A oszlopban szerepel a C oszlop bármelyik száma"Szerintem ez utóbbi az ami releváns és "megvilágosodtam"
Erre nagyon jó a gyakoriság függvény:
A D1 képlete:=HA(GYAKORISÁG($A:$A;$C1)>0;$B1;"")
Ezt húzhatod végig a D oszlopon.Üdv.
-
Fferi50
Topikgazda
válasz
lumpy92
#37404
üzenetére
Szia!
Milyen műveleteket végzel a szűrt oszlopon? Mert vannak olyan függvények, amelyek csak a szűrés eredményét veszik figyelembe (pl. részösszeg....)
Egyébként javaslom a Speciális szűrést, amelynél megadhatod, hova másolja az adatokat. Így nem kell "gyalogosan" másolni.Üdv.
-
Új hozzászólás Aktív témák
- Projektor topic
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- OLED monitor topic
- Pedzegeti az új Xbox irányát a Microsoft
- Motoros topic
- Gumi és felni topik
- Hobby elektronika
- Ilyen olcsó sem volt még egy Apple notebook
- EA Sports WRC '23
- Sweet.tv - internetes TV
- További aktív témák...
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Microsoft és egyéb dobozos retro szoftverek
- PC Game Pass előfizetés
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Kaspersky, BitDefender, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- HP ProBook 445 G8 14" Ryzen 3 5400U, 8GB RAM, 256GB SSD, jó akku, számla, 6 hó gar
- GYÖNYÖRŰ iPhone 13 Pro 128GB Sierra Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS4511
- Lenovo IdeaPad 3 - 15,6" Full HD - AMD Athlon Silver 3050U - 4GB - 512GB SSD - Win10 PRO - MAGYAR
- Xiaomi Redmi Note 13 Pro 8/256GB - Kártyafüggetlen, Fekete - 1 Év garanciával
- Lenovo IdeaPad Slim 3 83ER00J0HV Notebook
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



Fferi50