- Telekom mobilszolgáltatások
- Eltűnhet a Dinamikus Sziget
- Fotók, videók mobillal
- Az Oppo Find X8 Ultra lett a legvékonyabb kameramobil
- Minden készen áll a Galaxy Unpackedre
- Samsung Galaxy S23 Ultra - non plus ultra
- iPhone topik
- Erős specifikáció, kompakt formában
- Nem fogy a Galaxy S25 Edge?
- Apple iPhone 16 Pro - rutinvizsga
-
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
-
p5quser
tag
...mindig is zavartak a hosszú képletek
-
p5quser
tag
és #53202 Fferi50
Ne haragudjatok, ezt kicsit elkapkodtam.
A problémát google sheetben kellene megoldanom, szóval az excel-specifikus képleteket buktam. Egy google form adataban kell bogarászni. A sorba rendezéssel az a baj, hogy felügyelni kell. Ha érkezik egy bejegyzés korábbi dátummal, és éppen nincs sorba rendezve, borul a lekérdezés. Ez hamar kiderült, mikor az eltolással próbáltam behúzni az értéket. Apps scripttel megoldható nyilván, csak ott a jogosultságokkal kell mókolni minden egyes táblakezelőnél...
Azt hittem, hogy ha számként van tárolva a dátum, akkor ilyen min-max cuccokkal be lehet határolni valahogy.
Még a queryvel és a filterrel próbálkozom. -
p5quser
tag
Sziasztok!
Hogyan kaphatnám meg az E1 cellában lévő "C" értéket, ha a D1-ben lévő dátumot választom ki?
A D1-hez legközelebb eső kisebb érték kéne, de kimaradhatnak napok és a sorrend sem mindig egyezik. A dátumok számként vannak rögzítve.
Előre is köszönöm! -
p5quser
tag
Üdv!
Köszönöm Neked is.
E megoldás felé sandítanék, mivel kiderült időközben hogy 100+ csoport (oszlop) alá vezetnek fel tételeket. Már küzdök hogy struktúráljuk át az adatokat. Viszont addig eljátszanék a megoldásoddal, de a "col"-t nem tudom értelmezni. Ez vmi változó? Ha igen, hol-hogy definiálom? Vagy csak elírás?
Előre is köszi! -
p5quser
tag
Sziasztok!
Olyat lehet excelben (igazából G.Sheetsben) hogy egy tartományban keressek egy szöveg részletet, majd találat esetén visszaadja a találat oszlopának első sorát?
Valahogy nem találok olyan képletet, amelyik több oszlopos tartományban keresgél.
Jó lenne képlettel megoldani, mert egy G.drive-ba feltöltött xls-ben vannak az adatok, szóval sem makró, sem apps script nem játszik. Bár a makró megvan hozzá, viszont akkor csak én tudok vele dolgozni....
Az alábbi kép lenne a probléma.
Előre is köszönöm! -
p5quser
tag
Sziasztok!
Azt meg lehet oldani adatérvényesítésnél hogy pl.;
hétfő
kedd
szerda
...
listából lehessen választani, de fogadja el a;
hétfő,szerda
kedd,csütörtök,péntek
...
permutációkat is? De pl. a szerda,péter variációnál már álljon le. Csak segédoszloppal, amiben az összes lehetséges variációt kiírom, vagy lehet esetleg az adatérvényesítésnél képlettel is? VBA nem játszik, sajnos.
Előre is köszönöm! -
p5quser
tag
válasz
Fferi50 #51321 üzenetére
Az a baj az FmMatchEntryComplete-tel, hogy nem látom a listát.
Mellékelek egy videot, hogy kb. hogyan néz ki a felvitel működés közben.
Ez most egy random lista, de jól szemlélteti hogy rutinból ütve, tudja a felhasználó hogy a lista alján lesz amit keres (de nem OCD-s hogy megjegyezze a cikkszámát).
-
p5quser
tag
válasz
Fferi50 #51316 üzenetére
Először is, köszönöm a segítséget Neked és Muttnak!
Nyilván kicsit több infoval könnyebb kontextusba helyezni ezt "fel-le nyilasdit".
Szóval így néz ki a form;
Ez pedig a combobox3 (megnevezés) kódja;Private Sub ComboBox3_Enter()
ComboBox3 = scstr 'az előző keresési string
End Sub
Private Sub ComboBox3_Change()
If ComboBox3.Enabled = True Then
dic.RemoveAll 'Törli a dropdown list elemeket.
If Not Comb_Arrow And Len(ComboBox3) > 1 Then 'elkezd keresni a második leütött karaktertől
For i = 1 To lrd
If InStr(LCase(ciktomb(i, 2)), LCase(ComboBox3)) > 0 And ComboBox3 <> vbNullString _
And Not dic.Exists(ciktomb(i, 2)) Then
dic.Add ciktomb(i, 2), Nothing
ComboBox3.List = dic.keys 'a találatokat egy dictionary-be gyűjti
End If
Next i
With ComboBox3
scstr = .Text 'lementi az előző keresési stringet, mert sok hasonló nevű van, így nem kell újra beírni
If dic.Count = 0 Then .List = dic.keys
If dic.Count = 1 Then 'ha csak egy találat van beugrik a textbox1-be.
.ListIndex = 0
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Exit Sub
End If
If .Enabled = True And dic.Count > 1 Then .DropDown
End With
End If
End If
End Sub
Private Sub ComboBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Comb_Arrow = (KeyCode = vbKeyUp) Or (KeyCode = vbKeyDown) 'a fel-le nyíllal belelép a listába, de mindig a tetejére.
If KeyCode = vbKeyReturn Then 'enterrel (vagy clickkel) kiválasztja a tételt és a textboxba lép
ComboBox3.List = dic.keys
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
End Sub
Ezek alapján lehetséges egyáltalán hogy alulról lépjen bele a legördülő menübe a felfelé nyíllal?
Még egyszer köszönöm az ötletelést! -
p5quser
tag
válasz
Fferi50 #51304 üzenetére
Valami hasonlóval próbálkoztam még régebben;
If KeyCode = vbKeyUp Then
If ComboBox3.ListCount > 0 Then
ComboBox3.ListIndex = ComboBox3.ListCount - 1
End If
......
De ez volt az, amelyiknél felugrott alulról a második elemre a listában és onnan sehová nem mozdul a nyilakkal.
Ez egyébként egy "kereső"-combobox, a bevitt karakterekre szűrve változik a legördülő lista. -
-
p5quser
tag
Sziasztok!
Azt hogyan lehetne elérni egy comboboxban, hogy a felfelé nyíllal a legördőlő lista aljára lépjen? Most csak belelép a listába a nyilakkal.
Ez lenne a combobox kódja;Private Sub ComboBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Comb_Arrow = (KeyCode = vbKeyUp) Or (KeyCode = vbKeyDown)
If KeyCode = vbKeyReturn Then
ComboBox3.List = dic.keys
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
End Sub
Egyébként hibátlanul működik, csak gyorsítana a felvitel folyamatán. -
p5quser
tag
-
p5quser
tag
Üdv!
Talán törleszthetek a fórumba azért, amit eddig kaptam itt.
Szóval hasonló területen szerzett tapasztalataim révén EZ LESZ a legegyszerűbb megoldásod. Szerintem.
GDrive kompatibilis, tudtok egyszerre (célszerű külön sheeten) dolgozni rajta. Csak annyit mondj a kollégáknak hogy ne írjanak a színes cellákba.
A sum lapra vigyétek fel a tételeket mértékegységekkel (nem árt), onnantól kezdve csak azt lehet a pult_1, _2, stb-be beírni felvitelkor.
Átírhatjátok a sheet nevét, elvileg leköveti a képletekben is. Ha kérdés van, írj ide.
Üdv! -
p5quser
tag
válasz
Fire/SOUL/CD #49062 üzenetére
"Milyen filter függvényről van szó?"
A google sheets FILTER függvénye. Jó kis cucc cellaérték alapú lekérdezésekhez.=FILTER(raw_data!A:V;raw_data!A:A=X2;raw_data!B:B=W2)
Ebből az A:V oszloptól tartó sort akartam transzponálni, de csak a C:V oszlopokat. Viszont a szűrési feltételek pont a "lecsípendő" oszlopban vannak, szóval úgy hiszem szükséges a segédsor. -
p5quser
tag
Sziasztok!
Ugyan google sheets, de hátha...
Egy filter függvény által kinyert sort transzponálnék egy oszlopba, de úgy, hogy a filter első két oszlopát (transzponálva, sorát) kihagynám.
Lehet ezt így, egyáltalán? Most egy segédsorral oldom meg, aminek meghatározott területét transzponálom, de elegánsabb lenne anélkül.
Előre is köszönöm! -
p5quser
tag
Sziasztok!
VBA-ban azt hogyan lehet leírni - minél egyszerűbben - hogy;HA valami = 2 VAGY valami = 3 ÉS valaki neve = juszuf VAGY valaki neve = huan AKKOR
?
Szóval olyasmit szeretnék végeredménynek hogy pl;2, huan = true
3, huan = true
3, juszuf = true
2, juszuf = true
1, juszuf = false
3, otto = false
Remélem érthető (és megoldható VBA-ban) amit szeretnék.
GondolomSelect Case
lesz a barátom, csak lehet hogyjuszuf
éshuan
mellé beugrik mégwong
is, ill. az alkalom is lehet7
a2
és3
mellett.
Ennek függvényében gondolom nagyon elnyúlna aCase
.
Előre is köszönöm! -
p5quser
tag
válasz
Fferi50 #46254 üzenetére
"meg kell kerülni a problémát"
Nagyon jó tanács!Ha esetleg más is kerülőutakra kényszerül, iderakom.
For Each cb In ActiveSheet.OLEObjects
If TypeName(cb.Object) = "CheckBox" And cb.Object.Value = True Then
cbi = "TextBox" & Right(cb.Name, 1)
OLEObjects(cbi).Activate
Application.SendKeys ("^a")
End If
Next cb
Így már kijelöli a teljes szöveget a textboxban és egyből lehet beírni a következő szöveget, de nem tűnik el rögtön az előző szöveg. -
p5quser
tag
Üdv!
Köszi a választ!
Sajnos set-tel is ugyanaddig jut - az.Activate
-ig - majd 438.#46254Fferi50
Neked is köszi a választ! A tömbösítésnél viszont a textboxba beírt szöveget húzza be objektumnévnek. Feltéve ha így gondoltad;Dim tbtomb(8)
tbtomb(1) = ActiveSheet.TextBox1
tbtomb(2) = ActiveSheet.TextBox2
tbtomb(3) = ActiveSheet.TextBox3
tbtomb(4) = ActiveSheet.TextBox4
tbtomb(5) = ActiveSheet.TextBox5
tbtomb(6) = ActiveSheet.TextBox6
tbtomb(7) = ActiveSheet.TextBox7
tbtomb(8) = ActiveSheet.TextBox8
For Each cb In ActiveSheet.OLEObjects
If TypeName(cb.Object) = "CheckBox" And cb.Object.Value = True Then
cbi = Right(cb.Name, 1)
With tbtomb(cbi)
.Activate
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
Next cb
De már ott tartok, hogy nem érdekel a selection része, mivel a textboxot aktiválja és odaugrik, onnantól majd kitörlik a benne lévő szöveget. Csak elegánsabb lett volna úgy.
Mégegyszer köszönöm a válaszaitokat! -
p5quser
tag
Sziasztok!
Volna ez a kód;For Each cb In ActiveSheet.OLEObjects
If TypeName(cb.Object) = "CheckBox" And cb.Object.Value = True Then
cbi = "TextBox" & Right(cb.Name, 1)
With OLEObjects(cbi)
.Activate
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
Next cb
Ő megkeresi melyik Activex checkbox van kipipálva és az ahhoz számozott Activex textboxot aktiválja.
A.SelStart
-nál viszont elhasal "438"-cal. Ha azOLEObjects(cbi)
helyére beírom hogyTextBox8
, akkor rendben lefut. Azért nem értem, mert az.Acivate
még lefut és látszik is a villogó kurzor a textboxban.
Hogyan kéne kijelölnöm a szöveget, vagy hogyan kéne hivatkoznom a textboxra?
Elöre is köszönöm! -
p5quser
tag
válasz
Delila_1 #45974 üzenetére
Szia!
Elrontottam az előbb, most néztem meg újra hogy mit írtam.
Szóval hogy nem a duplikálás kizárása a cél, hanem pont az ellenkezője.
Ital standoló, de ugyanaz a nevű ital többféle kiszerelésben létezhet.
De leltárkor az összkészlet kell literben. Pl:
narancslé 5l 12db 60l
narancslé 2l 7db 14l
A végén egy szumha húzza egybe, de nem baj ha visszakereshető hogy milyen kiszereléseket leltároztak. Ezért kell az auto suggest, hogy ha nincs adott kiszerelés, akkor ugyanazon a néven legyen eltárolva, de más kiszerelésben. Mindez persze többféle itallal, sokféle kiszerelésben.
De akkor a userform incializálásnál nem lehet deklarálni olyan változót, amit a userformon belül bárhol alkalmazhatok?
Köszi a választ! -
p5quser
tag
válasz
Delila_1 #45972 üzenetére
Szia!
Köszi a választ! Elsiklottam dolgok felett.
AComboBox_Change()
így néz ki;Private Sub ComboBox1_Change()
Dim i As Long
For i = 1 To Application.WorksheetFunction.CountA(Sheets(1).Range("B:B"))
If LCase(Left(Sheets(1).Cells(i, 2), 1)) = Me.ComboBox1 And Me.ComboBox1 <> vbNullString Then
Me.ComboBox1.AddItem Sheets(1).Cells(i, 2)
End If
Next i
Me.ComboBox1.DropDown
End Sub
Ő egy "auto suggestion" combobox, mindig a "B" oszlopból húzza be az ajánlott nevet. Ez egy 3xxx soros lista, amit a duplázások elkerülése végett ír ki. De - gondolom - minden módosításnál újraszámolja a cellákat. Lassabb gépeken (hdd) körülményes. Ha a userform incializálásakor megszámoltatnám vele, talán gördülékenyebb lenne. Ha aApplication.WorksheetFunction.CountA(Sheets(1).Range("B:B")) -t
deklarálnám és utána már csak behúznám, az segítene? -
p5quser
tag
Sziasztok!
EgyUserForm_Initialize()
alatt meg lehet határozni egy olyan változót amit mondjuk egyComboBox_Change()
-ben tudok felhasználni?
Természetesen ugyanazon UserFormon belül. Vagy ha nem ott, akkor hol? MindenUserForm.Show
-nál változik az érték és csak a UserFormon belül lenne használva ez a változó.
Előre is köszönöm! -
-
p5quser
tag
válasz
Fferi50 #45834 üzenetére
Róla lenne szó.
Nincs benne turpisság.
A "szamlazott" és a "konyv" lapon mászik el csúnyán kattintásra a combo. Valamint a "cikkek" lapon a cikkcsoport keresője.
Előre is köszönöm! -
p5quser
tag
válasz
Fferi50 #45834 üzenetére
Szia!
Nincs alatta adatérvényesítés és ActiveX a combo.
Természetesen kimásolva csak azt a munkalapot megszűnik a hiba igaz, most csak egy gépen tudom kipróbálni. Gyanítom egyben lenne jó látni, szóval most kimetszem az érzékeny adatokat a használt file-ból és egyben felrakom.
Köszi! -
p5quser
tag
Sajnos nem. Már párszor töröltem és újrakreáltam a comboboxot, default fonttal, színnel, mérettel, de ha több gépen használják, meghülyül egy idő után. A tulajdonságainál rögzítettem a méretarányát és a helyét (nem mozog a cellákkal). Mindegy hogy csak O365-tel használják vagy csak 2016-tal. 2016-tal kreálva ugyanez. Ja, és a textbox is ugyanez. Szóval passz.
Köszi! -
p5quser
tag
Sziasztok!
Ezzel mit tudok kezdeni?
Combobox_para (Sajnos animált GIF-et nem enged beszúrni)
Office 365-ön és 2016-on ugyanúgy előjön.
Előre is köszönöm! -
p5quser
tag
Sziasztok!
Boldog Új Évet Nektek!
Az alábbi kódrészlet lefutása kb. 30 másodperc és másfél perc között ingadozik, teljes mértékben az adott gép teljesítményétől függően.CikkTomb = Sheets(1).Range("A1:A" & Sheets(1).UsedRange.Rows.Count).Value
TetelTomb = Range(Cells(lr, 1), Cells(nlr, 3)).Value
For i = 1 To UBound(TetelTomb, 1)
cs = Application.Match(TetelTomb(i, 1), CikkTomb(), False)
Sheets(1).Cells(cs, 3) = Sheets(1).Cells(cs, 3) - TetelTomb(i, 3)
Next i
Készletet kezel, formból, adott sorrendben.
A cikktömb a tesztnél ~62 000 soros, a tételtömb pedig 100.
Teljesen reális ideig szöszmötöl vele, vagy lehet esetleg faragni belőle?
Előre is köszönöm! -
p5quser
tag
válasz
Delila_1 #45604 üzenetére
Köszönöm!
Ő vele az a bajom, hogy mindig munka2 lap utolsó sorától kéne kezdődnie az új értékeknek és ha behelyettesítem az utolsó sor számát, minden értéket ugyanabba a sorba ír a munka2 lapon. Nomeg persze a másolando range is változó hosszúságú, bár ugyanattól a ponttól kezdődik mindig (A10). -
p5quser
tag
válasz
Apollo17hu #45602 üzenetére
Én is így tudom, de pár sortól pár száz sorig változik a range és az oszlopok is 1-37 ig vannak 7 felé osztva, nem egyenlő mértékben. Szóval a nagyobb listánál már belassulna a másolgatás. Ezért gondoltam a tömbösítésre. Úgy olvastam, sokat dobna a gyorsaságon.
-
p5quser
tag
Sziasztok!
Ismét a segítségetek kérném vba-ban.
Egy range egyesített cellákat tartalmaz, benne szöveges és numerikus tartalommal. Ezt kellene átmásolnom egy másik munkalapra, de már az üres cellák nélkül.
Gondolom egy kétdimenziós tömbbe kéne ezt a range-et beleborítani, majd az üres értékek nélkül az újraméretezett tömböt a másik munkalapra kiírni.
Mellékelek egy ábrát is a nyűgömről.
Persze ettől kicsit bonyolultabb és több a tartalom, de csak oszlopok vannak egyesítve, sorok nem. Tehát az A1:F3 -mat kéne A9:C11 -be kiírnom. Egy automatizált feladat része lenne, szóval csak vba jöhet szóba.
Előre is köszönöm! -
p5quser
tag
Sziasztok!
Mellékelném a nyomorom;Nem jöttem rá, hogyan tudom jobbról az első előfordulásnál lévő "(" karaktertől jobbra lévő teljes szöveget kiszedni B1-be. Persze nem 4 sorról lenne szó. Zárójeles részek többször is szerepelnek (lásd 2. sor), ezért a szövegből oszlopok-módszer macerás. Formula lenne jó.
Előre is köszönöm! -
p5quser
tag
Sziasztok!
Ismét előtérbe került egy korábbi nyomorom, amivel kapcsolatban egy mai guglizás felcsillantotta a reményt.
A varázsszó a "Split". Az alábbi kódsorokkal egész tűrhető eredményeket kaptam. Ő azt csinálja, hogy végigmegy a G2:G180 range-en és minden ott található megnevezést feldarabol "space"-enként, majd ezek első és második darabkáját (joker karakterekkel) megkeresi a "B" oszlopban.
Ezután visszaadja a talált egyezést, ill. a mellette lévő adatot. Mint egy feltuningolt FKERES. Gyanítom nagyban javulna a találati arány, ha a 3. darabkát is be tudnám szőni a keresésbe (a "cik" akár 4-5 részes is lehet), de elakadtam.
Azt még meg tudtam oldani, hogy ha egy darabkás a keresendő, akkor adja vissza azt, de azt már nem, hogy ha csak két darabkás, akkor is. V9-cel elszáll, mihelyst megpróbálom az "spl(2)"-t is beleszőni a keresésbe.
Ha esetleg valaki látja azt amit én nem, megköszönném... :)Sub keresgelos()
With Sheets(1)
Dim cil As Range, tci As Range
Set cil = .Range("G2:G180")
For Each cik In cil.Cells
spl = Split(cik)
Set tci = .Range("B:B").Find(what:=spl(0) & "*" & spl(1), LookIn:=xlFormulas)
If spl(1) = "" Then
Set tci = .Range("B:B").Find(what:=spl(0) & "*", LookIn:=xlFormulas)
End If
On Error Resume Next
.Cells(cik.Row, 8).Value = tci
.Cells(cik.Row, 9).Value = tci.Offset(0, 1).Value
Next
End With
End Sub -
p5quser
tag
válasz
Delila_1 #43917 üzenetére
Köszönöm, a végén így néz ki. A címkét azért raktam oda előzőleg, mert azt hittem így könnyebb lesz megmutatni a módosító scriptnek hogy mit keressen. De okafogyottá vált.(#43919) Fferi50
Van erről valami irodalom? Nem baj ha angol. Néha jól jött volna, függetlenül a jelen helyzettől. Ugyan mindig sikerült megkerülni a problémát, de biztos gyorsabb lehet "röptében" átírni a scriptet. (bár ezt így leírva, világos lett az árnyoldala is)
Neked is köszönöm a választ! -
-
p5quser
tag
válasz
Delila_1 #43911 üzenetére
Igen, bocsi, pongyolán fogalmaztam. Szóval hogy egy eme modulon kívűli comboboxban határoznám meg ezt képletet. Ha áfás megjelenítés kell, akkor módosítja ezt (és csak ezt) a sort.
Lehet ezt így, egyátalán? Bele lehet írni egy makróval egy másik modul, másik makrójának egy sorába? Vagy lemódosítani egy adott, cimkével jelölt sort?
Köszönöm! -
p5quser
tag
Sziasztok!
Van egy combobox change-em és ennek az értékétől függően meg kéne változtasson egy modulban egy sort, ami egy "call"-ra fut le.
A 11:-gyel jelölt sort kellene átírni. (igazából csak a képlet végére beírni a "*1,27"-et)Sub RESET_SZLAZO()
With Sheets(1)
.TextBox1.Text = ""
.TextBox2.Text = ""
.TextBox3.Text = ""
End With
Range("A2:C31, H20, H23").ClearContents
11: Range("D2:D31").FormulaR1C1 = _
"=(IFERROR(VLOOKUP(RC[-3],cikkek!C[-3]:C[5],R1C7,0),0))*R5C8"
Range("G5").Value = ""
Range("B38").Value = ""
ActiveSheet.PageSetup.CenterHeader = ""
ActiveSheet.PageSetup.LeftHeader = ""
Range("A2").Select
End Sub
Előre is köszönöm! -
p5quser
tag
-
p5quser
tag
Sziasztok!
Nem jövök rá mi lehet a baj ezzel a pár hónappal ezelőtt még működő scripttel.
Az első munkalap első oszlopában lévő dátumokra nevezte át a munkalapokat. Néha beszúrtak munkalapokat a dátumosok elé, azért kérdez rá hogy honnan kezdje.
Most viszont "subscript out of range"-dzsel hibára fut. Ha csak az index számot beírom az inputbox helyére, akkor is. Azon a munkalapon futtatom, amelyiken az A1:A31 range van.
Előre is köszönöm!Sub RenameSheets()
Dim c As Range
Dim J As Integer
J = Sheets(InputBox("Melyik laptól kezdjem?")).Index - 1 'Kezdő sheet -1
For Each c In Range("A1:A31")
J = J + 1
If Sheets(J).Name = "" Then J = J + 1
Sheets(J).Name = c.Text
Next c
End Sub
-
p5quser
tag
Sziasztok!
Nem tudjátok véletlenül miért nem működik a 2016 Excelben a Ctrl-Shift-Page Down, több munkalap kijelölésénél? Több gépen is próbáltam, pár napja, hete.
Előre is köszi! -
p5quser
tag
Ezt még jegyzőkönyvön kívűl kérdezném;
Létezik olyan keresés funkció (akár excelben akár egyéb programban) ami mondjuk párosítani tudja pl. a "Tartalék akkumlátor mobiltelefonhoz" kifejezést a "Tartalk mobil akku"-val?
Szándékos az -é betű hiánya, a rendszeres elütések miatt. Azonkívűl felcserélődnek a jelzők, rövidítéseket alkalmaznak, stb.
Úgy értem, létezik-e olyan keresés, ami mondjuk összeveti két oszlopban lévő, soronként 2-3 szóban lévő betűk egymás utáni sorrendjét és a legtöbb betűvel megegyezőt adja vissza?
Nem tudom érthető-e, talán a példából ki lehet hámozni, mi is a nyomorom. Sajnos több helyről érkeznek az adatok és szép magyar nyelvünknek (valamint virsliujjú kollégáimnak) hála, mesebeli kombinációk születnek egyazon témára.
A fenti példa is ezért született, hogy két monitoron egyszerre tudjam "közösíteni", két szűrővel a párszáz soros listákat.
Szóval létezik ilyen, vagy várjak a mesterséges intelligenciára? -
p5quser
tag
válasz
Pakliman #40634 üzenetére
@Fferi50 Nagyon köszönöm a segítséget!
Ja, igen, a path nélküli, kiterjesztéses névvel működött rendesen.
@Pakliman Neked is köszönöm a segítséget, hibátlanul teszi így már a dolgát. A "helyben érvényesítés" lehetett a gond, mert előtte próbáltam stdb-ként hivatkozni rá, de akkor obj.var. not set-tel hasalt el.
Mégegyszer köszönöm mindkettőtöknek!
-
p5quser
tag
Sziasztok!
Újfent a segítségetekre szorulnék. Van egy sablon munkafüzet, amit ha megnyitok az bekér egy "adat" excel táblát megnyitásra.
Hogyan tudom beállítani, hogy a megnyitott adat munkafüzet nevére globálisan hivatkozhassak a sablon füzetben?
Túrtam a neten egy ilyet;Private Sub Workbook_Open()
Dim stdb As Workbook
Dim stnm As String
stnm = Application.GetOpenFilename
If stnm <> "" Then
Workbooks.Open stnm
End If
End Subami a Thisworkbookban lapít. Egy régebbi itteni megoldást követve, modulba raktam ezeket is;
Public stdb As Workbook
Public stnm As StringAz adat file az stdb. Az sablon első munkalapján lévő makró viszont run-time 13-mal elhasal (type mismatch) és ez a sor sárgul be;
Workbooks(stnm).Sheets(1).Range("A1:B" & Rows.Count).AutoFilter field:=2, Criteria1:="*" & TextBox2.Value & "*"
Ha az stnm helyére beírom idézőjelekkel az adat file teljes nevét kiterjesztéssel, teszi a dolgát, csak hát a kényelem, ugye...
Előre is köszönöm! -
p5quser
tag
Sajnos nem. Az előbb "eldeklaráltam" az egyik sheet nevét, azt hittem azért nyüszög, de javítás után (wsp-wsh) is ugyanaz a hiba mint a fenti képen.
-
p5quser
tag
-
p5quser
tag
Sziasztok!
Eskü, rágugliztam a problémámra, de még jobban összekeveredtem.
Azt szeretném megoldani excel vba-ban, hogy meghatározzak 4-5 munkalapot a munkafüzetben - egyenkénti pár betűs szóval - hogy ezzel a szóval hivatkozhassak rájuk a munkafüzet összes moduljában, userformjában, mindenhol.
Szóval valami "global variable" -szerűt szeretnék, amit egyszer meghatározok és utána már elég csak a meghatározott néven hivatkozni rájuk. Olvastam "public property"-kről, "option explicit"-ekről, de nem tiszta hogy hová rakjam. A thisworkbookhoz, vagy modulként kell behívni?
Négy userform van a munkafüzetben, várható még benne modul is, szóval van katyvasz bőven és ha véletlenül egyéb excel file is megvan nyitva (ami azért nem életidegen dolog) , akkor jönnek a furcsaságok.
Ha megoldható, jó lenne nem userformonként, modulonként meghatározni, hanem egyszer az adott munkafüzetben.
Ha nem ebbe a topikba való, hanem a visual basic-be, akkor szkúzi, átpakolom oda kérdésem.
Előre is köszönöm! -
p5quser
tag
válasz
Delila_1 #40268 üzenetére
Pedig úgy megpróbáltam beilleszteni...
Szóval ez egy tableten futkározó "leltár" excel. Amennyire lehetett, automatizáltam a bevitelt. Így néz ki a teljes kód;Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Ide As Long
If Target.Value = "" Then Exit Sub
If Sheets.Count = 1 Then
MsgBox "KEZDJ ÚJ ÍVET"
ElseIf Sheets(Sheets.Count).ProtectContents = True Then
MsgBox "OLDD FEL A LEZÁRT ÍV LAPVÉDELMÉT, HA HOZZÁ AKARSZ ÍRNI, VAGY KEZDJ ÚJ ÍVET"
Else
If Not Intersect(Target, Range("A:B")) Is Nothing Then
Ide = Sheets(Sheets.Count).Range("A" & Rows.Count).End(xlUp).Row + 1
Target.EntireRow.Copy
Sheets(Sheets.Count).Range("A" & Ide).PasteSpecial xlPasteValues
Sheets(Sheets.Count).Select
ActiveCell.Offset(0, 2).Select
Selection.Value = InputBox("DARABSZÁM")
Selection.NumberFormat = "0.00"
ActiveSheet.Range("B:B,C:C").EntireColumn.AutoFit
Sheets(1).Select
With TextBox1
.Activate
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
End If
Cancel = True
End SubNézd el kérlek fércmunka jellegét. Ebben kéne elérnem, hogy a tizedes jel bevitelt vesszővel lehessen megoldani. Nem tudom hogy illesszem be az általad leírtakat.
Köszönöm! -
p5quser
tag
Sziasztok!
Azt hogy lehet megoldani egy vba inputboxnál, hogy a bevitt számérték tizedesjelét vesszővel lehessen beütni?
Ha a.Numberformat = "0.00"
-ot használom, akkor csak ponttal választva jelenik meg számként. Ha generalt használok, akkor egy későbbi fázisban a szumha nem adja össze. Jó lenne vba-ban megoldani, nem pedig a munkafüzetben kattintgatni, vagy újabb oszlopban "értékesíteni".
Egy csak numerikus billentyűzetről visznek fel adatokat, ezért a kétségbeesés.
Ha lehet, nem távoli asztaloznék a beviteli nyelv átállításával sem.
Előre is köszönöm! -
p5quser
tag
válasz
Fferi50 #38729 üzenetére
Üdv!
Köszönöm rágódásod a témán, ez egyszerűbbnek tűnik a youtuber megoldásánál, amit Mutt linkelt.
Az a baj ezekkel az exceles mókákkal, hogy nagyon könnyúek. Egyszerűen kipottyannak a fejemből...
Ha elakadok, visszatérek.
Mégegyszer köszönöm mindkettőtöknek a segítséget! -
p5quser
tag
Fel sem dobja az adatsorok formázását. Összeraktam egy képet az ablakokról, ill. feltöltöttem a file-t is, hátha éppen ráérsz.
... -
p5quser
tag
Üdv!
Köszönöm a választ. Valami ilyesmit hámoztam ki a netes howto-kból is, csakhogy nekem csak egy tengelyt ad be, amikor új adatot akarok kiválasztani. Ha meg kombinált diagramra váltok, ahogy kiválasztom a halmozott sávot, kiszürkül a másodlagos tengely.
Off 2016 hun.
Mégegyszer köszönöm! -
p5quser
tag
Sziasztok!
Ismételten a segítségetek kérném!
Próbáltam egy timeline diagramot összeszögelni, de sajnos elakadtam a "mai" nap jelölésével. Az alábbi képen lévő halmozott sávos diagram tűnt a legegyszerűbbnek a tutoriálok közül, de nem tudom (lehet) kijelölni rajta egy függőlegesen végigfutó tengelyt, ami a=ma()
függvényt hívná be és jelölné meg minden indításkor.
Ha erre a diagramra nem lehet ilyesmit ráilleszteni, akkor használok bonyolultabbat a neten keringő minták közül, csak "Jolánka-egyszerűre" szeretném a projektet.
Előre is köszönöm! -
p5quser
tag
válasz
ny.janos #38139 üzenetére
A magyarázó képességem is az excel-tudásommal egy polcon van
Üdv!
Köszönöm a segítséget, de én úgy értettem, hogy pl.: a füzet3 A5 cellájára hivatkozzon a füzet4 B2 cellája. És ezt így folytassa 30 lapon át. Köszönöm az ábrát, érthetőbb lett volna ha ezzel kezdem.
Üdv! -
p5quser
tag
Sziasztok!
Hogyan tudom automatizálni azt hogy egy 30 lapos munkafüzet egy lapján egy cella az előző munkalap egy cellájára hivatkozzon? Mindig egy lappal előrébb kellene hivatkoznia, mindig ugyanarra a cellára, 30 lapon át. Záróérték-nyitóérték. Valahogy biztos vagyok benne, hogy nem kell végigkattintgatni egyesével a cellákat. De nem sikerül megfejtenem a rákereséshez szükséges kulcsszavakat
Előre is köszönöm! -
p5quser
tag
-
p5quser
tag
Igazából most már kezdek beletörődni, úgyhogy az is érdekelne, hogy hogyan lehetne legközelebb elkerülni az ilyen malőröket. Lehet valahogy prefixálni az egyenlőségjelet, vagy minden egyes adatbevitelnél shift+7-et kell nyomni?
Köszönöm! -
p5quser
tag
Sziasztok!
A mellékelt kép alapján lett felhordva egy bálányi adat. Hogy lehet úgy egyenlőségjelet tenni, vagy úgy formázni a cellákat, hogy el is végezze a megadott műveleteket? Sok mindent kipróbáltam, de ennyi idő alatt végeztem volna a negyedével.
Előre is köszönöm! -
p5quser
tag
válasz
Fferi50 #37664 üzenetére
Sub SearchFolders()
'UpdatebyKutoolsforExcel20151202
Dim xFso As Object
Dim xFld As Object
Dim xStrSearch As String
Dim xStrPath As String
Dim xStrFile As String
Dim xOut As Worksheet
Dim xWb As Workbook
Dim xWk As Worksheet
Dim xRow As Long
Dim xFound As Range
Dim xStrAddress As String
Dim xFileDialog As FileDialog
Dim xUpdate As Boolean
Dim xCount As Long
On Error GoTo ErrHandler
Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
xFileDialog.AllowMultiSelect = False
xFileDialog.Title = "Select a forlder"
If xFileDialog.Show = -1 Then
xStrPath = xFileDialog.SelectedItems(1)
End If
If xStrPath = "" Then Exit Sub
xStrSearch = "KTE"
xUpdate = Application.ScreenUpdating
Application.ScreenUpdating = False
Set xOut = Worksheets.Add
xRow = 1
With xOut
.Cells(xRow, 1) = "Workbook"
.Cells(xRow, 2) = "Worksheet"
.Cells(xRow, 3) = "Cell"
.Cells(xRow, 4) = "Text in Cell"
Set xFso = CreateObject("Scripting.FileSystemObject")
Set xFld = xFso.GetFolder(xStrPath)
xStrFile = Dir(xStrPath & "\*.xls*")
Do While xStrFile <> ""
Set xWb = Workbooks.Open(Filename:=xStrPath & "\" & xStrFile, UpdateLinks:=0, ReadOnly:=True, AddToMRU:=False)
For Each xWk In xWb.Worksheets
Set xFound = xWk.UsedRange.Find(xStrSearch)
If Not xFound Is Nothing Then
xStrAddress = xFound.Address
End If
Do
If xFound Is Nothing Then
Exit Do
Else
xCount = xCount + 1
xRow = xRow + 1
.Cells(xRow, 1) = xWb.Name
.Cells(xRow, 2) = xWk.Name
.Cells(xRow, 3) = xFound.Address
.Cells(xRow, 4) = xFound.Value
End If
Set xFound = xWk.Cells.FindNext(After:=xFound)
Loop While xStrAddress <> xFound.Address
Next
xWb.Close (False)
xStrFile = Dir
Loop
.Columns("A:D").EntireColumn.AutoFit
End With
MsgBox xCount & "cells have been found", , "Kutools for Excel"
ExitHandler:
Set xOut = Nothing
Set xWk = Nothing
Set xWb = Nothing
Set xFld = Nothing
Set xFso = Nothing
Application.ScreenUpdating = xUpdate
Exit Sub
ErrHandler:
MsgBox Err.Description, vbExclamation
Resume ExitHandler
End SubEbből a szösszenetből lett plasztikázva.
Köszönöm a segítséget! -
p5quser
tag
válasz
Fferi50 #37652 üzenetére
Üdv!
Nem teljesen világos, hová kéne beszúrnom a copy parancsot. Ahová raktam, ott range copy metódus hibával elszállt.
Most így néz ki a script jelenleg, de így "előjeltelen"Private Sub CommandButton1_Click()
Dim xFso As Object
Dim xFld As Object
Dim xStrSearch As String
Dim xStrPath As String
Dim xStrFile As String
Dim xOut As Worksheet
Dim xWb As Workbook
Dim xWk As Worksheet
Dim xRow As Long
Dim xFound As Range
Dim xStrAddress As String
Dim xFileDialog As FileDialog
Dim xUpdate As Boolean
Dim xCount As Long
On Error GoTo ErrHandler
Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
xFileDialog.AllowMultiSelect = False
xFileDialog.Title = "Select a forlder"
If xFileDialog.Show = -1 Then
xStrPath = xFileDialog.SelectedItems(1)
End If
If xStrPath = "" Then Exit Sub
xStrSearch = "elszámol"
xUpdate = Application.ScreenUpdating
Application.ScreenUpdating = False
Set xOut = Worksheets.Add
xRow = 1
With xOut
.Cells(xRow, 1) = "Munkafüzet"
.Cells(xRow, 2) = "Munkalap"
.Cells(xRow, 3) = "Cella"
.Cells(xRow, 4) = "Találat"
.Cells(xRow, 5) = "Név"
.Cells(xRow, 6) = "Összeg"
Set xFso = CreateObject("Scripting.FileSystemObject")
Set xFld = xFso.GetFolder(xStrPath)
xStrFile = Dir(xStrPath & "\*.xls*")
Do While xStrFile <> ""
Set xWb = Workbooks.Open(Filename:=xStrPath & "\" & xStrFile, UpdateLinks:=0, ReadOnly:=True, AddToMRU:=False)
For Each xWk In xWb.Worksheets
Set xFound = xWk.UsedRange.Find(xStrSearch)
Set xFn = xWk.UsedRange.Find(xStrSearch)
If Not xFound Is Nothing Then
xStrAddress = xFound.Address
xNev = xFound.Offset(0, -1).Value
xOssz = xFound.Offset(0, 1).Value
End If
Do
If xFound Is Nothing Then
Exit Do
Else
xCount = xCount + 1
xRow = xRow + 1
.Cells(xRow, 1) = xWb.Name
.Cells(xRow, 2) = xWk.Name
.Cells(xRow, 3) = xFound.Address
.Cells(xRow, 4) = xFound.Value
.Cells(xRow, 5) = xNev
.Cells(xRow, 6) = xOssz
End If
Set xFound = xWk.Cells.FindNext(After:=xFound)
Loop While xStrAddress <> xFound.Address
Next
xWb.Close (False)
xStrFile = Dir
Loop
.Columns("A:F").EntireColumn.AutoFit
End With
MsgBox xCount & " egyezést találtam", , "Elszámolósdi"
ExitHandler:
Set xOut = Nothing
Set xWk = Nothing
Set xWb = Nothing
Set xFld = Nothing
Set xFso = Nothing
Application.ScreenUpdating = xUpdate
Exit Sub
ErrHandler:
MsgBox Err.Description, vbExclamation
Resume ExitHandler
End SubKöszönöm!
-
p5quser
tag
válasz
Delila_1 #37636 üzenetére
Üdv!
Azt értem, hogy helyrehozni hogyan kell, csak azt nem értem, ha az eredeti érték mínusz előjelű, miért az abszolut értéket adja vissza. Konkrétan a nyitó kérdésben elhelyezett szkriptet is sikerült működésre bírni, az;xNev = xFound.Offset(0, -1).Value
xOssz = xFound.Offset(0, 1).Value
offsetes megoldással. Most már berakja a nevet is, összeget is, csak az összegnél nem veszi figyelembe az előjelet.
Mivel a tiéd jól működik, ezért a puszta érdeklődés vezérel. -
p5quser
tag
Sziasztok!
Ismét a segítségeteket kérném. Adott egy munkafüzet, a hónap napjaira bontott munkalapokkal. Ebben a munkafüzetben kellene rákeresnem az "elszámolás" szóra minden munkalapon, kilistáztatva a napot, az elszámolás szót, egy oszloppal a találat előtti értéket és egy oszloppal a találat utáni értéket.
Alább a script amit találtam, teszi a dolgát, csak nem tudom hogy irassam ki vele az eltolt oszlopok értékeit.Private Sub CommandButton1_Click()
Dim xFso As Object
Dim xFld As Object
Dim xStrSearch As String
Dim xStrPath As String
Dim xStrFile As String
Dim xOut As Worksheet
Dim xWb As Workbook
Dim xWk As Worksheet
Dim xRow As Long
Dim xFound As Range
Dim xStrAddress As String
Dim xFileDialog As FileDialog
Dim xUpdate As Boolean
Dim xCount As Long
On Error GoTo ErrHandler
Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
xFileDialog.AllowMultiSelect = False
xFileDialog.Title = "Select a forlder"
If xFileDialog.Show = -1 Then
xStrPath = xFileDialog.SelectedItems(1)
End If
If xStrPath = "" Then Exit Sub
xStrSearch = "elszámol"
xUpdate = Application.ScreenUpdating
Application.ScreenUpdating = False
Set xOut = Worksheets.Add
xRow = 1
With xOut
.Cells(xRow, 1) = "Workbook"
.Cells(xRow, 2) = "Worksheet"
.Cells(xRow, 3) = "Cella"
.Cells(xRow, 4) = "Találat"
.Cells(xRow, 5) = "Összeg"
.Cells(xRow, 6) = "Név"
Set xFso = CreateObject("Scripting.FileSystemObject")
Set xFld = xFso.GetFolder(xStrPath)
xStrFile = Dir(xStrPath & "\*.xls*")
Do While xStrFile <> ""
Set xWb = Workbooks.Open(Filename:=xStrPath & "\" & xStrFile, UpdateLinks:=0, ReadOnly:=True, AddToMRU:=False)
For Each xWk In xWb.Worksheets
Set xFound = xWk.UsedRange.Find(xStrSearch)
If Not xFound Is Nothing Then
xStrAddress = xFound.Address
End If
Do
If xFound Is Nothing Then
Exit Do
Else
xCount = xCount + 1
xRow = xRow + 1
.Cells(xRow, 1) = xWb.Name
.Cells(xRow, 2) = xWk.Name
.Cells(xRow, 3) = xFound.Address
.Cells(xRow, 4) = xFound.Value
.Cells(xRow, 5) = xFound.Value
.Cells(xRow, 6) = xFound.Value
End If
Set xFound = xWk.Cells.FindNext(After:=xFound)
Loop While xStrAddress <> xFound.Address
Next
xWb.Close (False)
xStrFile = Dir
Loop
.Columns("A:D").EntireColumn.AutoFit
End With
MsgBox xCount & " egyezést találtam", , "Elszámolós"
ExitHandler:
Set xOut = Nothing
Set xWk = Nothing
Set xWb = Nothing
Set xFld = Nothing
Set xFso = Nothing
Application.ScreenUpdating = xUpdate
Exit Sub
ErrHandler:
MsgBox Err.Description, vbExclamation
Resume ExitHandler
End SubEzeket szeretném megváltoztatni;
.Cells(xRow, 5) = xFound.Value (találat_oszlop -1, találat_sor)
.Cells(xRow, 6) = xFound.Value (találat_oszlop +1, találat_sor)
Előre is köszönöm!
Új hozzászólás Aktív témák
Hirdetés
- Indiana Jones and the Great Circle teszt
- Házimozi belépő szinten
- Telekom mobilszolgáltatások
- AMD Radeon™ RX Vega 64 / 56 / Radeon VII
- AMD vs. INTEL vs. NVIDIA
- Építő/felújító topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Formula-1
- Fejhallgató erősítő és DAC topik
- ZEN.com
- További aktív témák...
- Eladó Steam kulcsok kedvező áron!
- 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)
- Vírusirtó, Antivirus, VPN kulcsok
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Eladó Új Motorola G31 4/64GB szürke / 12 hónap jótállással!
- Menő retró konfig: Q9550, Gigabyte P43, 4GB RAM, ASUS GT730,
- ÁRGARANCIA!Épített KomPhone i3 10105F 8/16/32GB RAM RX 6500 XT 4GB GAMER PC termékbeszámítással
- Azonnali készpénzes AMD Ryzen 1xxx 2xxx 3xxx 5xxx processzor felvásárlás személyesen / csomagküldés
- LG 27UL550-W - 27" IPS / 3840x2160 4K / 60Hz 5ms / HDR10 / AMD FreeSync
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest