-
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
-
plaschil
aktív tag
válasz
zsotesz81
#12795
üzenetére
Köszönöm azóta rájöttem. Most azzal szenvedek, hogy végigmegyek az egyik oszlopon (E) és megnézem hogy az értéke 72. Ha annyi akkor nézze meg hogy ugyanabban a sorban a (D) oszlopban ez az érték van-e: 5415 vagy 5415B. De nem működik. Az első IF az megy.
For i = 1 To SorokSzama
If Cells(i, 5) = 72 Then
If Cells(i, 4) = "5415" Or "5415B" Then
Ide kell még 1 feltétel (B) oszlop tehát (i, 2) ez* Or az* Or emez* Or amaz* -zal kezdődik (!)
End If
End If
NextHát kb. ennyi.
-
m.zmrzlina
senior tag
válasz
zsotesz81
#11883
üzenetére
sor=selection.row vagy sor=activecell.row
A sor=selection.rows.count azt adja meg,hogy hány sora van a kijelölésednek. Egyetlen cellánál ez értelemszerűen 1
Az activecell.rows.count megint csak mindig egyet fog adni mert aktív cella egy nagyobb tartomány kijelölésekor is csak egy van.
-
Delila_1
veterán
válasz
zsotesz81
#11085
üzenetére
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 7 Or Target.Column = 8 Then
Dim icolor As Integer
If Target = "low" Then icolor = 35
If Target = "medium" Then icolor = 36
If Target = "high" Then icolor = 40
If Target = "" Then icolor = 15
Range(Target.Address).Interior.ColorIndex = icolor
End If
End Sub -
Delila_1
veterán
válasz
zsotesz81
#10077
üzenetére
Kétféle megoldás is van (és biztosan több is).
1. Kijelölöd a neveket tartalmazó területet. Adatok - Szövegből oszlopok. Követed a varázslót, Határoló jelnek az Egyéb kategóriában a / jelet adod meg. Ez a módszer 3 cellába szedi szét az adataidat.
2. Kétfelé szedéshez 2 új oszlopba viszed be az alábbi képleteket:
=BAL(E1;SZÖVEG.KERES("/";E1)-1)
=JOBB(E1;HOSSZ(E1)-SZÖVEG.KERES("/";E1)) -
Delila_1
veterán
válasz
zsotesz81
#10058
üzenetére
Nem értem, miért ragaszkodsz a makróhoz, mikor egyszerű képlettel meg lehet oldani.
Tulajdonképpen az érdekel, hogy a Sheet1 lapon szerepel-e mindenkinek a neve, akinek a címe megvan a Sheet2-n.Az F1-be tedd be ezt a képletet:
=HA(HIBÁS(FKERES(Sheet2!B1&"*";E:E;1;0));"Nincs a Sheet1 lapon";"X") ,majd a cella jobb alsó sarkában lévő kis fekete négyzetre duplaklikk, és már le is másolta addig, ameddig az E oszlopban talál adatot.
-
Delila_1
veterán
válasz
zsotesz81
#10055
üzenetére
Eszerint megint átrendezted az adataidat.
Ha az Excelben szúrsz be egy oszlopot, vagy sort, avagy törölsz, akkor a képletek automatikusan átíródnak. A makrónál nem ez a helyzet. Ha ott azt írod, hogy az ötödik oszlop adatával csináljon valamit (van is a képletben ilyen hivatkozás: C5), akkor azt csinálja. Ha ott nem azt az adatot találja, ami a beszúrás-törlés előtt volt, akkor hibás eredményt kapsz.
A makrót arra az esetre írtam, mikor az elrendezésed a 10051 hsz. szerinti volt.Itt le is tettem a lantot. Még annyit segítek, hogy a 10048-as hsz-ban megadott képleteket alakítsd át a jelenlegi elrendezésre – majd 5 percenként az újabbakra –, indíts makrórögzítést, enterezd le a két képletet, és a rögzített sorokat másold be a Range("F1:F" & usor).FormulaR1C1 = _, és a Range("G1:G" & usor).FormulaR1C1 = _ sorokhoz.
-
Delila_1
veterán
válasz
zsotesz81
#10051
üzenetére
Tényleg prérifarkas vagy, az első kérdésedben más volt az elrendezés. A válaszom emiatt adott #NAME eredményt.
A pontatlanságoddal – hogy ne írjak hebehurgyaságot – megdolgoztatod azokat, akiknek a segítségét kéred.A ciklusok hosszú időd vesznek igénybe, pláne, ha 2 különálló táblázaton kell végig futniuk. Sokkal gyorsabb és egyszerűbb 1-1 lépésben megadni a képleteket, majd ezek helyére beilleszteni az értéküket.
A jelenlegi felállásra:
Sub X_ek()
Dim usor%
Sheets("Sheet1").Select
usor = Range("E6000").End(xlUp).Row
Range("F1:F" & usor).FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(Sheet2!RC2&""*"",C5,1,0)),""nincs"",IF(RIGHT(VLOOKUP(Sheet2!RC2& ""*"",C5,1,0),9)=""Contr/IBM"",""X"",""""))"
Range("G1:G" & usor).FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(Sheet2!RC2&""*"",C5,1,0)),""nincs"",IF(RIGHT(VLOOKUP(Sheet2!RC2& ""*"",C5,1,0),9)=""vakia/IBM"",""X"",""""))"
Columns("F:G").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Range("F1").Select
End Sub -
Delila_1
veterán
válasz
zsotesz81
#10045
üzenetére
Akkor kell bele egy hibaelhárítás is.
D1:
=HA(HIBÁS(FKERES($A1&"*";Sheet2!$E:$E;1;0));"";HA(JOBB(FKERES($A1& "*";Sheet2!$E:$E;1;0);9)="Contr/IBM";"X";""))E1:
=HA(HIBÁS(FKERES($A1&"*";Sheet2!$E:$E;1;0));"";HA(JOBB(FKERES($A1& "*";Sheet2!$E:$E;1;0);9)="vakia/IBM";"X";"")) -
-
Delila_1
veterán
válasz
zsotesz81
#10038
üzenetére
A Sheet1 lap D1 cellájába:
=HA(JOBB(FKERES($A1& "*";Sheet2!$E:$E;1;0);9)="Contr/IBM";"X";"")E1-be: =HA(JOBB(FKERES($A1& "*";Sheet2!$E:$E;1;0);9)="vakia/IBM";"X";"")
Az A oszlopban lévő nevek mellé a D oszlopba tesz X-et, ha a "Contr" szerepel a címében, és az E-be, ha nem.
Nem biztos, hogy jól értem a feladatot, látom, Fire másként értelmezte.
-
válasz
zsotesz81
#10042
üzenetére
Mondjuk sejtettem, csak már az eszemet sem tudom, mikor használtam utoljára Lotus Notes-t...
No mindegy, akkor a sheet1 D5 cellájába ezt a kódot írd be=HA(SZÖVEG.KERES(A7;Munka2!E4;1);"X";"")
(Arra ügyelj, hogy ez nem tesz különbséget a GEZA meg GEZACSKA között, azaz mindkét esetben megtalálja GEZA-t... Ha ez így nem felel meg, akkor más módszer kell...
-
-
válasz
zsotesz81
#10038
üzenetére
1 .Megoldható, csak azt kellene tudni, hogy minden hivatkozás hivatkozásként van-e megjelenítve. Arra gondolok, hogy megjelenítve egy hivatkozást az lehet pl UBUL, de ha rákattintasz, akkor megy fel a pl google.hu-ra...
Ha a cellában url-ként jelenik meg a hivatkozás, akkor makró nélkül megoldható, ha nem, akkor csak makróval2. feltételezem úgy értetted, hogy a hivatkozásban szerepel a GEZA és csak az, azaz nem GEZACSKA...
-
-
-
-
válasz
zsotesz81
#8456
üzenetére
Hali!
Ebből a kódból az alábbi részből meríthetsz ihletet
On Error Resume Next
Set My_Sheet = Sheets(My_Sheet_Name)
On Error GoTo 0
If Not My_Sheet Is Nothing Then
My_Sheet.Delete
End IfEz létező munkalap esetén törli azt, egy kis átalakítással neked is megfelelhet, de ez függ a programod felépítésétől.
Másik alapmódszer az szokott lenni, hogy egy ciklussal végigmész a munkalapokon, a cikluson belül megvizsgálod a nevét, ha megegyezik, akkor valamilyen változót magasra állítasz és kilépsz a ciklusból. Ezt követően megvizsgálod azt a bizonyos változót, éa feltételnek megfelelően kihagysz programrészt.
Fire.
-
perfag
aktív tag
válasz
zsotesz81
#8136
üzenetére
Nem tudom. Mondjuk én nem vagyok híve a kísérletezésnek, inkább megnézem az Excel MVP-sek, hogy csinálják. Chip Pearson és Ole P. Erlandsen . Ezt kipróbálnám egy text fájlon, majd írnék saját eszemtől egy lapbeszúró makrót és az egészet beletenném egy ciklusba.
-
perfag
aktív tag
válasz
zsotesz81
#8133
üzenetére
Chip Pearson válasza.
-
Delila_1
veterán
válasz
zsotesz81
#8104
üzenetére
Egy do-loop ciklussal végignézed a B oszlop tagjait az utolsó sorig. Ha a cella értéke "Resolved", akkor a másolás helye az ofszet(0,1) nevű lap. Innen egy belső do-loop ciklussal menj mindig a következő "Resolved"-ig, és ebben a belső ciklusban legyen a számok átírása az aktuális ország lapjára.
Biztos finomítani kell rajta. -
válasz
zsotesz81
#8100
üzenetére
Hali!
Ez egy kicsit hosszabb kód, de azért írtam így, hogy más "technikát" is láss benne, amit a későbbiekben tudsz hasznosítani esetleg...
Private Sub CommandButton1_Click()
Dim SrcSheet As Object
Dim DestSheet As Object
Dim My_Range As Range
Set SrcSheet = ThisWorkbook.Sheets("Munka1")
Set DestSheet = ThisWorkbook.Sheets("Munka2")
Set My_Range = SrcSheet.Range("A1:" & Range("A1").End(xlDown).Address)
SrcSheet.Select
My_Range.Select
DestSheet.Select
DestSheet.Range("A1").Select
For Each CurrCell In My_Range
If IsNumeric(CurrCell.Value) Then
ActiveCell = CurrCell.Value
ActiveCell.Offset(0, 1).Select
End If
Next CurrCell
SrcSheet.Select
Set My_Range = Nothing
Set SrcSheet = Nothing
Set DestSheet = Nothing
End SubFire.
-
Delila_1
veterán
válasz
zsotesz81
#8100
üzenetére
Ha már megadtad a feltételben, hogy szám esetén másoljon, mi szükség van a másik két feltételre?
Sheets("data").Select
For b = 1 To 15
If IsNumeric(Cells(b, 2)) = True Then
oszlop = Worksheets("result").Range("IV1").End(xlToLeft).Column + 1
Worksheets("result").Cells(1, oszlop) = Cells(b, 2)
End If
Next -
válasz
zsotesz81
#8097
üzenetére
Hali!
Ja hogy így szám meg szöveg(amúgy jó randa minőségű lett az a kép)...

A feladat, hogy végigszaladsz a B oszlop celláin(az utolsó használtig, ez már gondolom menni fog) és egyenként megvizsgálod, hogy szám avagy nem szám, a cella tartalma. Ha az átmásolod, ha nem, akkor a következő cellát vizsgálod. Így lehet egyszerűen eldönteni hogy szám avagy nem pl:
If IsNumeric(Range("A1")) = True Then
MsgBox ("Szám")
Else: MsgBox ("Nem szám")
End IfSzerk
Közben látom javult a képminőség...![;]](//cdn.rios.hu/dl/s/v1.gif)
Fire.
-
válasz
zsotesz81
#8091
üzenetére
Hali!
Ha egy példával illusztrálnád, hogy pontosan mi is van egy cellában(ami szöveget, számot stb tartalmaz), akkor könnyebb lenne segíteni és adott esetben makró sem kellene hozzá...
![;]](//cdn.rios.hu/dl/s/v1.gif)
pl
123-abc-jenő
321-cba-őnejstb stb vagy ha változó tartalmúak, akkor meg arról pár példát dobj be...
Fire.
-
-
-
válasz
zsotesz81
#8049
üzenetére
Hali!
Hozz létre a munkafüzetben egy listbox1 nevű munkalapot. A kód ide fogja kimásolni minden módosításnál a ListBox1 elemeit.
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 And TextBox1.Text <> "" Then
UserForm1.ListBox1.AddItem (TextBox1.Text)
Sheets("listbox1").Select
Sheets("listbox1").UsedRange.Delete
For i = 0 To UserForm1.ListBox1.ListCount - 1
Sheets("listbox1").Cells(i + 1, 1) = UserForm1.ListBox1.List(i)
Next i
Unload Me
End If
End SubFire.
UI: Házi feladat (egy kicsit meditálj rajta), hogy ez alapján hogy lehet visszaolvasni az adatokat a munkafüzet megnyitásakor. Ha nem megy, akkor persze írj nyugodtan, de egy kicsit azért törd a buksid...
![;]](//cdn.rios.hu/dl/s/v1.gif)
-
-
válasz
zsotesz81
#8045
üzenetére
Hali!
Az a lényeg, hogy a listboxban bekövetkezett változások mentésre kerüljenek(nem csak a hozzáadás, hisz szükség lehet a listboxból kitörölni is eleme(ke)t).
Több módszer is lehetséges pl külső munkafüzetben, külsö fájlban(pl egy TXT fájlban) vagy egy másik munkalapon(talán ez a legegyszerűbb és célszerűbb is)Melyik legyen?
Fire.
-
-
válasz
zsotesz81
#8040
üzenetére
Hali!
Példa: adott 2 form
UserForm1(ezen van ListBox1 és CommandButton1)
UserForm2(ezen van TextBox1 és CommandButton1)Így jeleníted meg a UserForm2-t, UserForm1-ről
Private Sub CommandButton1_Click()
UserForm2.Show vbModal
End SubÍgy adod hozzá a TextBox1 szövegét, a UserForm1-en található ListBox1-hez, majd bezárom a UserForm2-t
Private Sub CommandButton1_Click()
UserForm1.ListBox1.AddItem (TextBox1.Text)
Unload Me
End SubFire.
-
Delila_1
veterán
válasz
zsotesz81
#6940
üzenetére
1. 2003-as verzióban a lapfüleket eltüntetheted az Eszközök/Beállítások/Megjelenítés fülön, ahol az ablakjellemzők csoportban kiveszed a jelölést a Munkalapfülek elől. A parancs megírása a váltáshoz biztosan nem okoz problémát, de akár hiperhivatkozással is közlekedhetsz a lapok között.
2. Egy másik cellában összegezheted az eddig beadott, és a most beírt értéket a Change esemény kezelésével.
-
zsotesz81
senior tag
válasz
zsotesz81
#6830
üzenetére
Kipróbáltam, úgy hogy soronként másoljon:
Range("N5").Copy
Range("C5").PasteSpecial Paste:=xlPasteValues
Range("M6").Copy
Range("C6").PasteSpecial Paste:=xlPasteValues
.
.
.
Range("M14").Copy
Range("C14").PasteSpecial Paste:=xlPasteValuesÍgy megcsinálta, legalábbis a számolást, viszont most a tétek törlésénél bukik meg,
ahol szintén nagyobb tartomány (D5:D14) van egyben megadva. Lehet, hogy ezekkel nem tud mit kezdeni? -
Delila_1
veterán
válasz
zsotesz81
#6828
üzenetére
A 6825-ben írtak helyett ezt vidd be:
Range("N5").Copy
Range("C5").PasteSpecial Paste:=xlPasteValues
Range("M6:M14").Copy
Range("C6").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range("C15").SelectEgyébként ha konvertálatlan módon küldöd a hozzászólást, nem vigyorognak bele az ugra-bugrák.
-
-
-
válasz
zsotesz81
#6803
üzenetére
Hali!
Variációk egy témára
Private Sub CommandButton1_Click()
MsgBox ("A játékot xy nyerte" & Chr(13) & "Gartulálunk")
MsgBox ("A játékot xy nyerte" & vbCrLf & "Gartulálunk")
MsgBox ("A játékot xy nyerte" & vbCrLf & _
"Gartulálunk")
End Subchr(13) -> Carriage Return (CR)-> Egy sorral lejebb
chr(10) -> Line Feed (LF)-> Adott sor elejére ugrás
(Ez DOS-ban a sor elejére vitte a kurzort illetve a nyomtatáskor is volt(van) szerepe
vbCrLf -> VBA konstans a CF és a LF egyben
Fire. -
válasz
zsotesz81
#6801
üzenetére
Hali!
Legegyszerűbb a form + image objektum. Ilyen "apróságokon" meg nem kell fent akadni(png-t nem kezeli), mert csak az időt viszi.
Meg kell nézni mit kezel, aztán konvertálás, aztán hajrá! 
(Megfelelő konvertáló progival(ami csoportosan/batch módban dolgozik) pillanatok alatt megvan az ember)Fire.
-
-
-
Badb0y
addikt
válasz
zsotesz81
#6775
üzenetére
Basszus, nem lehet számomra elég HA-t használni. Olyan 50 db kellene egymásban, de nem engedi excel

Mit lehet tenni ?
Amit akarok egyébként, hogy vannak megnevezések, és ha egy megnevezés megegyezik az általam megadottal, akkor egy másik cellában levő képlinket másolja be abba a cellába, ahol a fv-t írom. Ezt szeretném elérni, de úgy nézem HA olyan 20 után már kiakad, de lehet alatta.
Vagy az mégjobban megkönnyítené a dolgom, ha egy tartományban tudna keresni, mert a kép neve szinte ugyanaz mint a megadott minta neve, csak kisbetű és - -val van elválasztva. De ha a trtományban hasonlót találna, akkor 100% jó lenne.
-
Badb0y
addikt
válasz
zsotesz81
#6772
üzenetére
Ezaz

És több ha fv-t hogy lehet megadni egymás után, mert azt akarom, hogy ha pl amit írtál, akkor c2, de ha nem teljesül akkor már más, és nem csak 2 argumentum, hanem több.
Valami ilyesmire gondolok, =HA(B1="karakter";C2) vagy =HA(B1="karakter3";C21) vagy ....
Vaggyal kellene tagolni, vagy valami más módon ?
-
Delila_1
veterán
válasz
zsotesz81
#6767
üzenetére
1.
Sub maksz()
Cells(2, 1) = Application.Max(Range("D5:D14"))
End Sub2. Ezt ahhoz a laphoz kell rendelned, ahol a bevitt adatot akarod figyeltetni. Vagy a lapfülön jobb klikk, és kód megjelenítésére, vagy a VBE-ben a munkalapon duplaklikkre jön elő a szerkesztő felület.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$F$1" And Target.Value > Cells(2, 1) Then
MsgBox "Hibás adat"
Cells(1, 6).Select 'itt visszaállítom az F1-re a bevitel helyét
End If
End SubAz F1-be bevitt adatot ellenőrzi, és az A2 értékével hasonlítja össze.
Ha nem egyetlen cellába történő bevitelt, hanem mondjuk az F oszlop bármelyik celláját kell figyeltetni, akkor a feltételif target.column=6 and ...
-
válasz
zsotesz81
#6750
üzenetére
Hali!
Ez a kód mindig kilép a legelső "All in"-t tartalmazó cellánál és bezáródik a form. Végig kell szaladni az adott cellatartományon és letárolni, hogy melyik cellákban van All in.
Ehhez alkalmazz tömböt.[link]
Egy megoldási(több elven megoldható) eljárás: A tömböt az elején kinullázod, a for ciklusban meg a megadott indexet eltárolod a tömben. a döntetlenallin szubrutinban meg ezen tömb alapján dolgozol.
(ami nem nulla, ott allin van, ha csak 1 nem nulla van, akkor nyilván senki nem fogadta el az allin-t, ha 2 vagy több akkor meg igen.)Fire.
UI: ma már ennek a gyakorlati kivitelezésében nem biztos hogy tudok segíteni konkrétan(csak este vagy holnap), de más egész biztosan.

-
-
Delila_1
veterán
-
-
-
ulrik19
tag
válasz
zsotesz81
#6646
üzenetére
tegyetek az összpontszámhoz egy korrekciós értéket:
pl: ha A1 az összpontszám, akkor =A1+sor(A1)/1000
majd a cellaformázásnál vegyétek le a tizedesjegyet (1000 helyett lehet bármi, de a lényeg, hogy a sorszám/1000 ne menjen 0,5 fölé)így ha lesz is két pl. 5 pontos, az egyik 5,001 a másik mondjuk 5,003 lesz (bár 5-nek fog látszódni mind a kettő), viszont az fkeres külön-külön fogja kiértékelni, "kerekítés" nélkül.
persze ha abból indulok ki, hogy lehet fél pont is, akkor úgy is lehet formázni a cellát, talán nem lesz akkor sem gond a korrekcióból, legrosszabb esetben 1000 helyett 10000-t tesztek bele

-
zsotesz81
senior tag
válasz
zsotesz81
#6640
üzenetére
Közben kicsit visszaolvastam, látom van itt minden.
Az volna a kérdésem, hogy VB-ben hogy kell hivatkozni excel cellára. Tehát azt hogy kell megírni, hogy HA L5<L6 akkor "esemény" egyébként "esemény".
Ill. hogy lehet írni olyan msgbox-ot aminek mondjuk van egy igen és egy nem gombja, nem-re történik semmi, igen-re pedig valamilyen esemény végrehajtódik.
Új hozzászólás Aktív témák
- Windows 11
- Xiaomi 15T - reakció nélkül nincs egyensúly
- Vírusirtó topic
- Nintendo Switch 2
- Hobby elektronika
- LEGO klub
- Teljes verziós játékok letöltése ingyen
- A fociról könnyedén, egy baráti társaságban
- Counter-Strike: Global Offensive (CS:GO) / Counter-Strike 2 (CS2)
- Autós topik
- További aktív témák...
- HP 150W töltők (19.5V 7.7A) kis kék, kerek, 4.5x3.0mm
- Acer TravelMate P214 i3-1115G4 12GB 256GB 14" FHD 1év garancia
- Új Fóliás Lenovo T14S Thinkpad FHD IPS i5-1135G7 16GB 512GB SSD Intel Iris XE Win11 Pro Garancia
- Gamer PC-Számítógép! Csere-Beszámítás! R5 5600 / RX 6700XT 12GB / 16GB DDR4 / 500GB SSD
- Microsoft Surface Pro 6 fekete
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest



(Na én meg megyek keverni maltert...)
(pl visszaperjel nem lehet egy mail címben, meg nem ártana egy @ meg legalább egy pontnak is szerepelnie benne 



Fferi50
