- 6 év biztonsági támogatást ígér a Motorola
- One mobilszolgáltatások
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Honor 200 - kétszázért pont jó lenne
- Milyen okostelefont vegyek?
- iPhone topik
- Mobil flották
- Samsung Galaxy A55 - új év, régi stratégia
- Bemutatkozott a Poco X7 és X7 Pro
- Xiaomi 15 - kicsi telefon nagy energiával
-
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
-
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...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á...
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...
-
-
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
Hirdetés
- Arch Linux
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- A fociról könnyedén, egy baráti társaságban
- Óra topik
- Rágyúr a macOS-re a 3DMark
- 6 év biztonsági támogatást ígér a Motorola
- Motoros topic
- MasterDeeJay: SATA to SAS adapter
- Milyen légkondit a lakásba?
- Kerékpárosok, bringások ide!
- További aktív témák...
- Vírusirtó, Antivirus, VPN kulcsok
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Most kedvező áron!
- Eladó steam/ubisoft/EA/stb. kulcsok Bank/Revolut/Wise (EUR, USD, crypto OK)
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- BESZÁMÍTÁS! ASUS TUF Z390-PRO GAMING alaplap garanciával hibátlan működéssel
- BESZÁMÍTÁS! Microsoft XBOX Series S 512GB játékkonzol garanciával hibátlan működéssel
- Samsung Galaxy Xcover 5 64GB, Kártyafüggetlen, 1 Év Garanciával
- DDR5 8/ 16/ 32GB 4800-5600MHz SODIMM laptop RAM, több db- számla, garancia
- AKCIÓ! Lenovo IS8XM LGA 1150 DDR3 alaplap garanciával hibátlan működéssel
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest