- Magisk
- Xiaomi 15 - kicsi telefon nagy energiával
- QWERTY billentyűzet és másodlagos kijelző is lesz a Titan 2-ben
- Milyen okostelefont vegyek?
- Xiaomi 14T Pro - teljes a család?
- Huawei Watch GT 2 Pro - egyszerűen gyönyörű
- Poco X3 Pro - hardverfrissítés
- Apróbb óra érkezik a OnePlustól
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- iPhone topik
-
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
-
m.zmrzlina
senior tag
válasz
artiny #10551 üzenetére
Ne keress olyan opciót mint pl egy Userformon lévő Textbox specialEffect tulajdonsága.
Szerintem ez a munkalap úgy készült, hogy a készítő kijelölte a teljes munkalapot A1-től IV65536-ig, majd adott neki egy viszonylag világos szürke háttérszínt. Aztán a beviteli mezők (pl:C7) háttérszínét fehérre vagy inkább No Fill (nincs kitöltés-re) állította majd a cella felső és bal oldali keretét egy sötétebb szürkére. Ettől van olyan hatása a cellának mintha süllyesztett lenne, de ezt neked kell megcsinálni, nincsen hozzá gomb ami egy kattintással megadja a stílust. (el lehet művészkedni vele egy darabig ha valakinek van hozzá affinitása)
Szép kis meló lehetett megcsinálni ezt a munkafüzetet még akkor is ha a cella formátumát le lehet másolni és nem kell minden egyes cellánál külön beállítgatni.
-
m.zmrzlina
senior tag
válasz
m.zmrzlina #10547 üzenetére
Bocsánat, most látom, hogy ez a kód feltölti az üres cellákat az aktív cella értékével. (amit nem szeretnénk). Ennek kiküszöbölésére tedd be a következő sort az oszlop változó értékadás után a külső FOR ciklus elé:
Cells(Selection.Row, Selection.Column).Select
Ez ugyan megszünteti a a kijelölést de itt már nem baj mert a tartomány mérete ekkor már benne van a változóban.
-
m.zmrzlina
senior tag
válasz
gigi183 #10542 üzenetére
A cellák szétválasztására (ha nem csak egyetlen oszlopról van szó) itt egy másik megoldás:
Sub unmerge_v2()
Dim sor As Integer, oszlop As Integer
sor = Selection.Rows.Count 'kijelölt tartomány mérete
oszlop = Selection.Columns.Count 'köszönet érte Fire-nek :-)
For j = 1 To sor
For i = 1 To oszlop
ActiveCell.unmerge 'cellák szétválasztása
Selection.FormulaR1C1 = ActiveCell.Value 'üres cellák értéke = aktívcella értéke
ActiveCell.Offset(0, 1).Select 'eggyel jobbra
Next
ActiveCell.Offset(1, -oszlop).Select 'vissza a sor elejére
Next
End SubArra figyelj, hogy amikor elindul a makró akkor legyen kijelölve a teljes tartomány amiben szétválasztandó celláid vannak.
Természetesen ez a kód is gyorsabban lefut letiltott képernyőfrissítéssel.
-
m.zmrzlina
senior tag
válasz
Fire/SOUL/CD #10545 üzenetére
Köszönöm!
sorok_szama = Selection.Row.Count-tal próbálkoztam
Az a fránya "s" betű...
-
m.zmrzlina
senior tag
Hogyan kell változóba írni azt, hogy egy kijelölt tartomány hány sorból és hány oszlopból áll?
-
m.zmrzlina
senior tag
válasz
gigi183 #10542 üzenetére
Örülök ha működik, ha valami gond van jelezd!
A másik problémád megoldására egy ilyesmiből érdemes kiindulni:
Sub unmerge()
Application.ScreenUpdating = False
Range("B1048576").End(xlup).Select 'beáll az B oszlop utolsó cellájába
Do Until ActiveCell.Value = "Name" 'ciklus amíg fel nem ér a fejlécig
ActiveCell.unmerge 'cellák szétválasztása
Selection.FormulaR1C1 = ActiveCell.Value 'üres cellák értéke = aktívcella értéke
ActiveCell.Offset(-1, 0).Select 'egy cellát fel
Loop
Application.ScreenUpdating = True
End SubA lényeg a ciklusmagban lévő első két sor. Természetesen ha más a tartomány vagy a kilépési feltétel akkor át kell írni de a szétválasztás és a kitöltés szerintem így működhet.
Én a #10537-ben lévő táblázat B oszlopában lévő összevont cellákon teszteltem.
Majd pontosíts!
-
m.zmrzlina
senior tag
válasz
gigi183 #10534 üzenetére
Na próbálkoztam még, és működik, már csak annyit kellene megoldanom, hogy ha az aktuális lapot átmásolom mondjuk egy Today feliratú munkalapra, akkor az Nts oszlopban lévő számok eggyel csökkenjenek, vagy automatikusan, vagy gombbal.
Erre a problémára új modulba (Inset>Module) tedd be a következőt:
Sub masol()
Application.ScreenUpdating = False 'képernyőftissítést tilt
ActiveSheet.Copy after:=Sheets(ActiveWorkbook.Sheets.Count) 'lemásolja az aktív munkalapot és az utolsó munkalap után helyezi el
ActiveSheet.Name = ActiveSheet.Index + 1 'ad neki nevet
Range("E1048576").End(xlup).Select 'beáll az E oszlop utolsó cellájába
Do Until ActiveCell.Value = "nts" 'ciklus amíg fel nem ér a fejlécig
If ActiveCell.Value <> "" Then ActiveCell.Value = ActiveCell.Value - 1 'kivonja az egyet
If ActiveCell.Value = 0 Then 'ha nts=0
Range(ActiveCell.Offset(0, -3), ActiveCell.Offset(0, 4)).Value = "" 'a kívánt cellák tartalmának törlése
End If
ActiveCell.Offset(-1, 0).Select 'egy cellát fel
Loop
Application.ScreenUpdating = True 'képernyőftissítést engedélyez
End SubNekem így néz ki a munkalapom amit kezel:
Kiindulásnak jó aztán majd pontosítasz.
-
m.zmrzlina
senior tag
válasz
Delila_1 #10503 üzenetére
Én csak annyi különbséget látok, hogy lehagytad a .Value-kat ill, hogy bennehagytál egy szóközt a "%" előtt (a végén csak egyet vonsz ki)
Ilyen a szerkezete a celláimnak:
07:27 (0.7 %)
02:10 (3.8 %)
01:14 (0.2 %)
00:00 (0.0 %)
00:37 (0.0 %)
00:00 (0.0 %)Azt tudom (nem olyan rég óta
) hogy a .Value-t el lehet hagyni de a magam számára is áttekinthetőbb a kód ha bennehagyom ezeket a nem kötelező részeket. Kis túlzással még a 2*2+2-t is zárójelezni szoktam (2*2)+2, hogy pár hét múlva is tudjam, hogy mit miért csináltam. (Aztán sokszor még így sem tudom
)
-
m.zmrzlina
senior tag
válasz
Delila_1 #10490 üzenetére
Igen kell mert nem csak egyszerűen átmásolni akarom egyben az egészet, hanem egyenként minden cellát megcsócsálni.
Sub kiemel()
Dim cella As Range, kiemeles As String
For Each cella In Selection.Cells
kiemeles = WorksheetFunction.Substitute(Mid(cella.Value, WorksheetFunction.Search("(", cella.Value) + 1, WorksheetFunction.Search("%", cella.Value) - WorksheetFunction.Search("(", cella.Value) - 2), ".", ",")
Worksheets("riport").Cells(cella.Row - 10, cella.Column).Value = kiemeles * 1
Next
End SubAz útvonalas munkafüzet sikerén felbuzdulva szeretném kicsit emberi formára hozni egy régebbi munkafüzetemet amivel kapcsolatban itt érdeklődtem.
Ez a ciklus hamarabb lefut 13000 cellán mint amennyi idő alatt az eredeti fájl betöltődik.
A fájl mérete így kb 1/3-a az eredeti fájlnak de az UDF-es megoldásnál is gördülékenyebben működik.
-
m.zmrzlina
senior tag
válasz
m.zmrzlina #10485 üzenetére
Megoldódott.
-
m.zmrzlina
senior tag
For... Each...Next ciklussal szeretném Munka2 egy adott tartományát Munka3 ugyanolyan méretű de pár sorral feljebb lévő tartományába másolni.
Hogyan tegyem?
-
-
m.zmrzlina
senior tag
válasz
Delila_1 #10444 üzenetére
Köszönöm még egyszer a segítséget, úgy tűnik működik. Bár sokszor éreztem úgy mint Bodri az Argó című filmben (ti. hogy "Sok nekünk ez a meló Tibi!") de végül összejött.
Végül a cellák nem ott és nem úgy voltak ahogy először írtam (vagy ahogy te értetted) de átírva a hivatkozásokat rendbe jött.
Annyi szépséghibája van a dolognak hogy ez a sor
usor% = ws.Range("B1").End(xlDown).Row + 1 'Első üres sor a ws.B oszlopában
meg ez:
usor% = ws.Range("H1").End(xlDown).Row + 1 'Mint fentmindaddig kiakadt Overflow hibával amíg nem volt legalább két sorban adat az általad A.xls munkafüzetnek nevezett listában. Pedig usor%-nak nem adtunk adattípust -tehát Variant lett-
abba pedig bele kellene férnie 1048576-nak.Vagy tévedek?
-
m.zmrzlina
senior tag
válasz
Delila_1 #10422 üzenetére
Köszi a választ, és külön köszönöm a kommentes választ.
Sajnos nem működik a kód de nyilván én szúrok el valamit mert a tiédtől sokkal egyszerűbb kódok sem működnek amit munkalaphoz rendelek de sajna most egy darabig nincs időm komolyan foglalkozni a dologgal.
Ráadásul most fogok részt venni egy Számalkos VBA2 tanfolyamon és megígérem hogy nem fogok szót ejteni rólad mert restellném magam hogy ilyen támogatással mint a tied csak addig jutottam ameddig.
Majd még visszatérünk a problémámra de ameddig nem tudok értelmeset kérdezni addig maradok magamnak és küzdök a problémámmal magam (ha lesz rá időm).
-
m.zmrzlina
senior tag
válasz
m.zmrzlina #10417 üzenetére
Tegnap kicsit fáradt voltam már. Szóval:
A felső rész B oszlopát írja a felhasználó (jelenleg a H-t is amit szeretnék kiváltani) Ez az FKERES-sel tökéletesen megy is.
Azt szeretném ha a felső munkalap "B" oszlopába ír egy útvonalat és ez még nem szerepel az alsó munkalap "A" oszlopában akkor azt a hozzá tartozó távolság adattal együtt hozzáfűzi az alsó munkalaphoz növelve ezzel az FKERES adatbázisát.
-
m.zmrzlina
senior tag
válasz
Delila_1 #10415 üzenetére
Az enyém így néz ki:
A felső rész A oszlopát írja a felhasználó (jelenleg a H-t is amit szeretnék kiváltani) Ez az FKERES-sel tökéletesen megy is.
Azt szeretném ha a felső munkalap "A" oszlopába ír egy útvonalat és ez még nem szerepel az alsó munkalap "A" oszlopában akkor azt a hozzá tartozó távolság adattal együtt hozzáfűzi az alsó munkalaphoz növelve ezzel az FKERES adatbázisát.
-
m.zmrzlina
senior tag
válasz
Delila_1 #10414 üzenetére
Köszi a gyors választ.
Az első része tökéletesen működik is. Az egy más kérdés, hogy az adatbázisban (másik munkafüzet) mehet egymás mellé a két oszlop ezért az FKERES két középső paramétere pl $A:$B;2 de ez csak részletkérdés.
A másik részét a válaszodnak nem értem. Vagy te értetted félre a kérdést, vagy én a választ.
Azt szeretném, hogy az adatbázis munkafüzet mondjuk üresen indul és ahogy beír az "A" munkafüzetbe a júzer egy addig a B-ben nem szereplő karaktersorozatot és beírja a hozzá tartozó távolságot (hat oszloppal arrébb) akkor ezzel kiegészíti az adatbázist amit azután az FKERES használni tud.Így az adatbázis folyamatosan "hízna" hónapról hónapra miközben az azt használó "A" munkafüzet minden hónapban nulláról indulna.
Talán érthető lesz.
-
m.zmrzlina
senior tag
Van egy munkafüzetem amiben az egyik oszlopba kézzel gépel be útvonalakat cellánként egymás alá a júzer. Hat oszloppal arrébb a települések távolságát írja be soronként.
Szeretnék csinálni egy "adatbázis" munkafüzetet amiben szerepelne az összes útvonal amit egyszer már begépeltek (távolsággal együtt) és azt szeretném ha egy adott útvonalat begépelnek az A munkafüzetben és az a karaktersorozat szerepel a B (akár meg sem nyitott) munkafüzetben akkor a hozzá tartozó távolságot automatikusan visszaadja az A munkafüzet megfelelő cellájában.
Elsősorban nem kész megoldásokat várok hanem útmutatást, hogy merre induljak el. Nem szeretnék felesleges energiát feccölni zsákutcának bizonyuló megoldásokba.
-
m.zmrzlina
senior tag
válasz
Delila_1 #10366 üzenetére
Az lenne a koncepció, hogy a felhasználó beállítja a H2 cellában, hogy mi nála a tizedeselválasztó és a fv ha mást talál a Stringben mint ami be van állítva akkor lecseréli. És ezt tökéletesen meg is csinálja a fv.
A baj akkor kezdődik, ha a kapott Stringet értékké akarom alakítani.
Ha pontra állítom az elválasztót (Területi beállításoknál) akkor bármi van a H2cellában (akár pont akár vessző) helyesen értékké alakítja 50.0 alakban. (Miért nem ad #ÉRTÉK hibát ilyenkor ha vessző van a H2-ben?) Ha meg vesszőre akkor vessző esetén jó az értékké alakítás, pont esetén pedig #ÉRTÉK hiba van. (Miért nem alakítja értékké ilyenkor is csak 50,0 alakban?)
És ez a fent vázolt jelenség akkor is jelen van ha nem a saját fv-met hanem az ÉRTÉK() fv-t próbálom.
-
m.zmrzlina
senior tag
válasz
m.zmrzlina #10362 üzenetére
Na közben rájöttem (azt hiszem). Így gondoltad?
Function KIHAMOZ(text As String, utantol As String, elottig As String, tizedesjel As String) As Double
Dim szam As String
szam = Mid(text, WorksheetFunction.Search(utantol, text) + 1, WorksheetFunction.Search(elottig, text) - WorksheetFunction.Search(utantol, text) - 1)
For i = 1 To Len(szam)
If Asc(Mid(szam, i, 1)) < 48 And Asc(Mid(szam, i, 1)) <> Asc(tizedesjel) Then
Mid(szam, i, 1) = tizedesjel
End If
Next i
KIHAMOZ = szam ' *1
End FunctionNem tudom kiemelni de a fv fejléc legvége és a legvégén kikommentezett 1-es szorzó lett változtatva.
De sajna ez az eredeti problémát csak nem oldotta meg.
-
m.zmrzlina
senior tag
válasz
Fire/SOUL/CD #10358 üzenetére
1. Szerintem(amit legalábbis a képeden látok), ahhoz makró sem kell(bár gondolom sok cellán, nagyobb tartományon kell végigjátszani a dolgot, ezért használod a makrót)
KB 1700x8 a tartomány mérete (na jó kicsit túloztam a 20000-rel) és nem makróban gondolkodom, hanem ezzel a függvénnyel szeretnék kiváltani egy rettentően bonyolult képletet.
2.Nekem a fv első paramétere String típusú annak hogy adjak Single vagy Double tipust?
-
m.zmrzlina
senior tag
válasz
Fire/SOUL/CD #10356 üzenetére
Szerintem egy kicsit körülményesen oldottad meg
látnád csak az eredeti képletet amit ki akarok váltani vele...
Lehet hogy igazad van pedig hidd el benne van minden amit én ma az Excelről tudok.Mivel Function-t írtál, annak adj visszatérési paramétert.
Milyen formában kell ezt megtenni? -
m.zmrzlina
senior tag
Lehet, hogy kicsit nagy fába vágtam a fejszémet és elakadtam. Van egy munkafüzetem amiben van egy olyan képlet(szörny)em ami négy sorba fér csak el a szerkesztőlécen ráadásul kb 20000 cellában. Azt csinálja, hogy a nyitó zárójel és a % előtti szóköz között lévő számot kihámozza a szövegből és értékké alakítja. Mindezt úgy, hogy nem számít neki, hogy mi van beállítva tizedeselválasztónak a gépen.
Írtam helyette egy saját fv-t ami így néz ki:
Function KIHAMOZ(text As String, utantol As String, elottig As String, tizedesjel As String)
Dim szam As String
szam = Mid(text, WorksheetFunction.Search(utantol, text) + 1, WorksheetFunction.Search(elottig, text) - WorksheetFunction.Search(utantol, text) - 1)
For i = 1 To Len(szam)
If Asc(Mid(szam, i, 1)) < 48 And Asc(Mid(szam, i, 1)) <> Asc(tizedesjel) Then
Mid(szam, i, 1) = tizedesjel
End If
Next i
KIHAMOZ = szam * 1
End FunctionA fv tökéletesen működik amíg nem akarom értékké alakítani a kapott számot. Ha H2-ben átírom a ","-t "."-ra a Hoszlop összes tizedeselválasztója átíródik pontra.
Értékké alakítás után ha az Excelben "," az elválasztó és H2-ben ","-állítok be akkor működik sőt ha H2-be "."-t teszek akkor #ÉRTÉK hibát ad a függvény (ahogy elvárom tőle).
De ha az Excelben "." az elválasztó és én H2-be pontot teszek akkor is #ÉRTÉK hibát ad ha viszont "," -t akkor elvégzi az értékké alakítást de a cellában "1.0" formában (ponttal) jelenik meg az érték.
Magyarul mindkét esetben ","-t kell kiválasztani H2-be, hogy működjön.
Na ez most jó bonyolult de talán érthető.
-
m.zmrzlina
senior tag
válasz
Delila_1 #10331 üzenetére
Illetve a tartomány bármely cellájába bekattintva ugyanazt a képletet látom a szabálykezelőben amit az elsőbe beírtam de valójában az ezredik sornak köze nincs az A26-os cellához, ott A1000-nek kellene látszódnia. Persze attól még jól működik a képlet, mintha A1000 lenne benne.
És ha ennek a miértje nem derül ki a súgóból akkor az ember csak néz mint hal a szatyorban
-
m.zmrzlina
senior tag
válasz
Delila_1 #10328 üzenetére
Köszönöm a pontos választ. Az abszolút és relatív hivatkozások mibenlétével tisztában vagyok, csak a feltételes formázáson belüli használata nem volt világos.
De ez: A két oszlopra egyszerre bevitt képlet úgy működik, mintha beírtad volna az A oszlopba, majd átmásoltad volna a B-be. tisztába tette a dolgot. Innentől világossá vált, hogy miért nem színeződött a B oszlop.
Köszi még egyszer.
-
m.zmrzlina
senior tag
válasz
m.zmrzlina #10324 üzenetére
Mondtam már, hogy imádom az Excel súgóját?
Megjegyzés: A képletekbe beírhatunk cellahivatkozást (cellahivatkozás: A munkalapcella helyét kijelölő koordinátapár. A B oszlop és a 3. sor találkozásánál lévő cella hivatkozása például B3.) úgy, hogy a cellákat közvetlenül a munkalapon jelöljük ki. Ha a lapon jelölünk ki cellákat, akkor abszolút cellahivatkozásokat (abszolút cellahivatkozás: Képletben a cella pontos címét adja meg, a képletet tartalmazó cella helyzetétől függetlenül. Az abszolút cellahivatkozás formája: $A$1.) kapunk. Ha azt szeretnénk, hogy a Microsoft Office Excel megfelelően kezelje a kijelölt tartományban az egyes cellák hivatkozását, használjunk relatív cellahivatkozást (relatív hivatkozás: Valamely cella képletben megadott relatív helyzete a képletet tartalmazó cellához viszonyítva. A képlet másolásakor a hivatkozás automatikusan megváltozik. A relatív hivatkozás formája: A1.).
Hogy ez mennyire informatív!!!!
-
m.zmrzlina
senior tag
válasz
Delila_1 #10307 üzenetére
Tudsz erre a problémára forrást adni nekem (link vagy bármi jó lenne)?
A John Walkenbach féle Excel 2007 biblia elég szűkszavú ebben a témában máshol pedig nemigen találok konkrét útmutatót, hogy hol relatív, hol abszolút a hivatkozás. Jelenleg vak tyúk is talál szemet alapon rakosgatom a "$"-t aztán vagy jó vagy nem.
-
m.zmrzlina
senior tag
válasz
m.zmrzlina #10288 üzenetére
Másolás>Irányított beillesztés>Jegyzetet
Az ember néha nem látja a fától az erdészt
-
m.zmrzlina
senior tag
Azt tudom, hogy hogyan lehet egyetlen cellához megjegyzést rendelni. A kérdés, hogy lehet-e tartományhoz is megjegyzést rendelni?
Úgy értem, hogy egy tartomány bármely cellája fölé mozgatva a kurzort ugyanaz a megjegyzés jelenik meg de nem kell minden egyes cellához külön külön megírni.
Vagy esetleg az is jó hogy egy cellához megírni a a tartomány többi elemére átmásolni.
Persze makró nélkül!
-
m.zmrzlina
senior tag
válasz
fi:zi'k #10213 üzenetére
Ha az "egészként kezelje" azt jelenti hogy az eredményednek a kerekítés szabályai szerint kell viselkednie akkor a következő egy lehetséges megoldás:
=HA(HIBÁS(KEREKÍTÉS(HA(E19<>"";(E19*D19)*0,9;"-");0));"-";KEREKÍTÉS((E19*D19)*0,9;0))
Ha elég simán elhagyni az eredményből a tizedesvessző utáni részt akkor kicsit egyszerűbb a képlet:
=HA(HIBÁS(INT(HA(E19<>"";(E19*D19)*0,9;"-")));"-";INT((E19*D19)*0,9))
A HA(HIBÁS())-ra azért van szükség mert a KEREKÍTÉS() és az INT() #ÉRTÉK hibát adna E19="" esetben. Gondolom ez előfordulhat hiszen az eredeti képleted kezeli ezt a lehetőséget.
-
m.zmrzlina
senior tag
válasz
Delila_1 #10211 üzenetére
Jó ötlet!
Köszönöm!Ennyit egyszerűsítenék rajta a feltételnél:
If IsNumeric(Mid(szoveg, i, 1)) Then
Pedig ezzel a sorral küzdöttem a legtöbbetés a végén a biztonság kedvéért:
CSAKSZAM = szam*1
Igen, és akkor nem kell az ÉRTÉK()-be ágyazni ahhoz, hogy számolni lehessen vele. -
m.zmrzlina
senior tag
válasz
DopeBob #10197 üzenetére
Nyilván te is észrevetted, hogy a #10200-ban lévő képlet elég könnyen hibázik.Pl ha a megnevezés két szóból áll és szóköz van közte, vagy ha előfordul benne a "db"karaktersorozat.
Ennek kiküszöbölésére nyiss a VB szerkesztőben egy új modult és másold bele ezt:
Function CSAKSZAM(szoveg As String)
Dim szam As String, i As Integer
szam = ""
For i = 1 To Len(szoveg)
If Asc(Mid(szoveg, i, 1)) <= 58 And Asc(Mid(szoveg, i, 1)) >= 47 Then
szam = szam & Mid(szoveg, i, 1)
End If
Next i
CSAKSZAM = szam
End FunctionEttől lesz egy CSAKSZAM() nevű új függvényed amit nagyon könnyen tudsz használni a következőképpen:
Ha az ÉRTÉK() fv-be beágyazod ahogyan a képen van akkor számolni is tudsz a darabszámokkal.
-
m.zmrzlina
senior tag
válasz
Pityke78 #10178 üzenetére
Nézd meg nincs-e olyan makró a munkafüzetben amihez az excel "gyári" billentyűparancsai vannak definiálva.
Ha mondjuk rögzítesz egy makrót ami beszúr valahova egy cellát és megadod hozzá a Ctrl-s-t billentyűparancsnak akkor ha csak kijelölsz akármilyen cellát és nyomsz egy Ctrl-s-t akkor le fogja futtatni a makródat. De ha beleduplakattintasz egy cellába (ott villog a kurzor a cellában) és utána nyomod a Ctrl-s-t akkor a mentést akarja végrehajtani az excel - és ezt nem is szabad rossz néven venni tőle.
Csak találgatok. Na jó kicsit több annál, ki is próbáltam, de hogy miért van ez így arra nem tudom a magyarázatot.
-
m.zmrzlina
senior tag
válasz
m.zmrzlina #10161 üzenetére
Úgy látszik "dikleksziás" vagyok mint Győzike
a B oszlopban az A-oszlopnak megfelelően kellene egy legördülőnek nyílnia,
A tippem jó csak nem azt csinálja amit te szeretnél. Bocs
-
m.zmrzlina
senior tag
-
m.zmrzlina
senior tag
-
m.zmrzlina
senior tag
válasz
Delila_1 #10067 üzenetére
Köszönöm az elismerést.
Az önmagában nem baj, hogy 14 a lehetséges betűk száma, mert ha egy cellában nem szerepel belőlük 4-nél több (az eredeti kérdésben ez volt) akkor az =FKERES() táblázata (R57:S70) lehet nagyobb is.
Az "oldjuk meg képlettel" koncepciómat inkább az fektetné két vállra ha jóval több mint 4 betű kombinációját kellene kezelni.
-
m.zmrzlina
senior tag
válasz
m.zmrzlina #10065 üzenetére
Javítás a #10065-höz:
K oszlop = J oszlop
-
m.zmrzlina
senior tag
válasz
MIFtIli #10063 üzenetére
K57-be tedd a következő képlet(szörny)et és másold le ameddig kell:
=HA(J57="";"";ÖSSZEFŰZ(FKERES(KÖZÉP(J57;1;1);$R$57:$S$70;2;HAMIS);" ";HA(HIBÁS(FKERES(KÖZÉP(J57;2;1);$R$57:$S$70;2;HAMIS));"";FKERES(KÖZÉP(J57;2;1);$R$57:$S$70;2;HAMIS));" ";HA(HIBÁS(FKERES(KÖZÉP(J57;3;1);$R$57:$S$70;2;HAMIS));"";FKERES(KÖZÉP(J57;3;1);$R$57:$S$70;2;HAMIS));" ";HA(HIBÁS(FKERES(KÖZÉP(J57;4;1);$R$57:$S$70;2;HAMIS));"";FKERES(KÖZÉP(J57;4;1);$R$57:$S$70;2;HAMIS))))
Négy betűig tudja kezelni a kombinációkat és minden leírás közé <szóköz>-t tesz.
Ja és ha nincs semmi a K oszlop kapcsolódó cellájában akkor a leírás cella is üres marad.
!!!<szóköz> sem lehet a K oszlop celláiban!!! -
m.zmrzlina
senior tag
válasz
MIFtIli #10061 üzenetére
a táblázat pedig: R57 : S70
Az első oszlopban a betűk (egy vagy több), a másodikban a hozzá tartozó leírásokÚgy kell ezt érteni, hogy az a,b,c,d betűk egyfajta kombinációjához egyfajta leírás tartozik?
tehát pl:
a> leírás_1
b> leírás_2
c> leírás_3
d> leírás_ 4
ac> leírás_5
ab> leírás_6
ad> leírás_7
adc> leírás_8Vagy pedig csak az a,b,c,d betűkhöz tartozik egy-egy leírás és a betűk kombinációjához a hozzájuk tartozó leírások kombinációját kell rendelni?
tehát pl
a> leírás_1
ab> leírás_1,leírás_2
adc> leírás_1,leírás_4,leírás_3 -
m.zmrzlina
senior tag
válasz
Fire/SOUL/CD #9987 üzenetére
Köszönöm
-
m.zmrzlina
senior tag
A fenti példában szeretném eltüntetni a #ÉRTÉK hibaüzenetet 2003 kompatibilis módon. 2007-es verzióban úgy szoktam csinálni, hogy HAHIBA() [érték] argumentumába teszem a képletet, [érték hiba esetén]-be pedig "" üres sztringet.
Ha jól tudom 2003-ban nincs HAHIBA() Legalábbis ha kompatibilis módon (xls-ként) akarom elmenteni a munkafüzetet akkor "jelentős mértékű funkcióvesztés" hibaüzenet van és a HAHIBA()-t tartalmazó képletekre hivatkozik.
-
m.zmrzlina
senior tag
válasz
Fire/SOUL/CD #9975 üzenetére
Megtaláltam, de nem állítom, hogy láttam már ilyet.
Kétféle aposztróf karakter van a szövegben. A C1-ben látszik is.
-
m.zmrzlina
senior tag
válasz
Fire/SOUL/CD #9975 üzenetére
De van mégpedig az A1-hez nagyon hasonló karaktersorozat.
A kérdés inkább az hogy mitől más a második képletben az adattípus mint az elsőben.
-
m.zmrzlina
senior tag
Egy egyszerű képlet elég érdekesen viselkedik.
D1-ben működik D2-ben pedig "Nem megfelelő adattípusú a képletben használt érték" hibát ad.
Aposztróf karaktert keresek.
-
m.zmrzlina
senior tag
válasz
tomlake #9912 üzenetére
Ha jól értem a feladatot akkor a =DARABTELI() fv-re van szükséged.
Az általam (a leírásod) alapján rekonstruált munkalapon használt elnevezések és tartományok szerint így néz ki a fv:
=DARABTELI(tartalek!$B$2:$B$14;F2)
Ezt minden sorhoz hozzá kell rendelned amiben olyan rajzszám van amiről tudni szeretnéd, hogy mennyi van belőle a tartalék munkalapon. -
m.zmrzlina
senior tag
válasz
m.zmrzlina #9876 üzenetére
Persze hogy elszúrtam
Természetesen J3-ba tedd a képletet!
-
m.zmrzlina
senior tag
Ha ez a képlet a G3 cellában van akkor így írnám át:
Nem tudom mit kell csinálnia de ha azt, hogy ha J3="-" akkor G3=0 ha J3="+" akkor meg megvizsgálja, hogy milyen érték van benne és ahhoz képest ad értéket a cellának akkor talán jó lesz. Az utolsó HA() hamis ága kezeli azt az esetet ha a bevitt szám az R9-nél is nagyobb.
-
m.zmrzlina
senior tag
válasz
Sir Pocok #9801 üzenetére
Nem állítom, hogy hibátlan de kiindulásnak jó lesz aztán majd pontosítasz, hogy mit szeretnél:
Sub kerescserel()
Dim amitkeres As String, amirecserel As String
Cells(1, 1).Select
amitkeres = InputBox("Add meg a keresni kívánt számot!", "Keresés")
amirecserel = InputBox("Mire szeretnéd cserélni?", "Keresés")
Do Until IsEmpty(ActiveCell.Offset(1, 0)) = True
On Error GoTo nincstobb
Cells.Find(What:=amitkeres, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Select
If ActiveCell.Value = amitkeres Then ActiveCell.Value = amirecserel
Loop
nincstobb:
MsgBox ("A számok cseréje megtörtént.")
End SubAz A1 cellától keres lefelé a legutolsóig és ha megtalálta az első inputboxban bevitt karaktersorozatot akkor kicseréli arra amit a második inputboxban bevittél. Ez kicsit gyorsabb mint a beépített (Ctrl+H) módszer.
-
-
m.zmrzlina
senior tag
Rém fura dolgot tapasztaltam az egyik munkafüzetemben.
Az a gondom, hogy két egyformán felépített képlet azonos formátumú cellában másféle eredményt ad.
A K35-ös cellával van problémám aminek a jólnevelt F35-ös testvéréhez hasonlóan a fölötte lévő cellák összegét kellene kiírnia. Ehelyett 0:00-t ír ki viszont a K37-es cellában lévő képlet nem a kiírt 0:00-val hanem a valós összeg 24:00-val számol (helyesen)
Ugyanígy viselkedik, ha a K4-ben (és természetesen az alatta) szereplő HA fv-ben a HAMIS ág ""-jét kicserélem 0-ra. Annyi különbséggel természetesen hogy akkor a K oszlopban végig 0:00-van.
???
-
m.zmrzlina
senior tag
válasz
Delila_1 #9542 üzenetére
Ha nem is pont ebben a formában de úgy néz ki fog működni.
Sajnos a végleges helyére nem lehet közvetlenül menteni a listát, ezért először létrehozok egy új munkalapot, oda megy a beillesztés és ha a tartomány rendben akkor az átmeneti munkalap törlése után mehet a végleges helyre. Mindezt Screenupdating=False mellett igy a felhasználó csak a MsgBoxot látja, ha elszúrt valamit.
Köszönöm.
-
m.zmrzlina
senior tag
válasz
Delila_1 #9540 üzenetére
A Selection.Address string formában megadja a kijelölt területet, pl. "$A$:$C$50"
Működik ez akkor is ha a kijelölt terület egy istentudjaholvan gépen futó excel97-ben van amit Remote Desktop-pal érek el?
Ezt felhasználhatod a nyomtatási terület megadásához, ha a hibakeresésen átment.
ActiveSheet.PageSetup.PrintArea = Selection.AddressÉn nem akarok nyomtatni, én csak be akarom illeszteni a vágólap tartalmát amit a távoli gépen jelöltem ki Ctrl+C-vel. (Meg persze levizsgálni a beillesztés előtt, hogy nem akar-e a júzer 20000 celát beilleszteni 100 helyett)
Bár ez nem illik a makródra, mert valószínűleg több oszlopnyi adatod függ egybe.
Pont ez a lényeg, hogy ha a beillesztendő tartomány több mint 1 oszlop széles az 100% hogy hiba
Ha az B4 alatt lévő adatok kellenek a nyomtatáshoz,
Ma itt ültem a gép előtt egész nap és lappy-n kívül ma senki nem akart nyomtatni többek közt én sem.
Köszi hogy bajlódsz a problémámmal.
-
m.zmrzlina
senior tag
válasz
Delila_1 #9534 üzenetére
Tettem a végére az End If elé egy Exit Sub-ot és betettem a
Selection.PasteSpecial Paste:=xlPasteAll
sor után.futtatáskor jön is a MsgBox de az OK-ra a beillesztés ennek ellenére megtörténik. Ha az említett sor elé teszem be akkor MsgBox nélkül megtörténik a beillesztés.
Hogy tudom rávenni a beillesztés előtti kilépésre?
-
m.zmrzlina
senior tag
A következő programrészlet egy 1 oszlop széles és kb 100 sor (változó) hosszú tartományt illeszt be vágólapról.
Cells(4, 2).Select
On Error Resume Next
Selection.PasteSpecial Paste:=xlPasteAll
If Err.Number <> 0 Then
MsgBox "A lista beillesztését a kijelöléssel kell kezdeni." + Chr(13) + Chr(13) + "Először végezd el a kijelölést!", vbCritical, "Hiba!!!"
Exit Sub
End IfA vágólapra másolást a felhasználónak kell elvégeznie ezt nem tudom megkerülni. Azt a felhasználói hibát szeretném kezelni, hogy ha tévedésből pl egy 1500x15 méretű tartományt jelöl ki akkor a makró ne végezze el a beillesztést hanem küldjön hibaüzenetet és lépjen ki.
Milyen technikák vannak erre?
-
-
m.zmrzlina
senior tag
válasz
Fire/SOUL/CD #9496 üzenetére
Ami az Inputbox-t mint metódust illeti (második linked) nekem nem megfelelő ugyanazért amiért ez:#8953 meg ez:#9219. Úgy látszik engem üldöz ez a probléma
Az Inputbox mint függvény esetében kipróbáltam néhány dolgot de egyikkel sem sikerült szétválasztani a Cancel és az OK gombok működését.
Már saját Inputbox készítésén gondolkodtam (UserForm TextBox parancsgombok) amikor ezeket találtam:[link][link]
Noha úgy tűnik működik a dolog nekem
kicsitnagyon ingoványos ez a terület szóval ha valaki lát benne olyan buktatót amit én esetleg nem vettem észre az ne kíméljen. -
m.zmrzlina
senior tag
válasz
Fire/SOUL/CD #9496 üzenetére
Köszönöm a választ, este megnézem a linkeket.
Új hozzászólás Aktív témák
Hirdetés
- BESZÁMÍTÁS! MSI B450 TomaHawk R5 3600 16GB DDR4 512GB SSD RX5500 XT 8GB Rampage SHIVA TT 530W
- HATALMAS AKCIÓK! GARANCIA, SZÁMLA - Windows 10 11, Office 2016 2019 2021,2024, vírusírtók, VPN
- Apple iPhone 16 128GB Kártyafüggetlen 1Év Garanciával
- Apple iPhone 14 Pro 128GB Kártyafüggetlen, 1Év Garanciával
- 121 - Lenovo Legion Pro 5 (16ARX8) - AMD Ryzen 7 7745HX, RTX 4070 (48 hónap garancia!)
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest