- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Geri Bátyó: B550 szűk keresztmetszet, de mi és miért?
- bitpork: Augusztus 2- szombat jelen állás szerint.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Magga: PLEX: multimédia az egész lakásban
- Parci: Milyen mosógépet vegyek?
- sziku69: Szólánc.
- Aggregátor gondjai, örömei, és elmélkedései
- Chosen: Canon 5D II - portrézás 2025-ben
-
LOGOUT
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
-
Sesy
aktív tag
válasz
Delila_1 #42897 üzenetére
a kódodat értem, a te gondolkodásmódod közelebb áll az enyémhez, mint mint Fferi50-é
de ez benne a csodálatos, hogy kétféle megközelítéssel jutottatok ugyan arra az eredményre...
én meg ebből tanulok a legtöbbet
köszönöm mind kettőtöknek
ezek után még megnézem Fire/SOUL/CD javaslatát is és tényleg profi leszekfejlesztem a kódomat és a tudásomat, de jövök még szerintem biztosan
-
Sesy
aktív tag
válasz
Delila_1 #42895 üzenetére
köszönöm, megnézem!
most tanulom a makró készítést, van egy tervem amit szeretnék megcsinálni
lépésről lépésre haladok, de mivel még hiányosak az ismereteim nem megy minden egyszerrevalószínűleg amit tegnap kiszenvedtem, egy hosszú kódban azt tized annyiból kihoznátok, de akkor nem érteném meg a működését... akár annak sem amit kapok tőletek!
azt sem szeretném, ha mindent ti oldanátok meg, mert akkor nincsen sikerélmény és nem ér semmit az egész...
pedig úgy látom ez nektek sokkal egyszerűbb lenne...
de meg akarom tanulni a dolgot, mert egyébként roppantul élvezem -
Delila_1
veterán
Úgy látom, állandó változásban van szegény makró. A másolás sorai
ide = Sheets(lapnev).Range("B" & Rows.Count).End(xlUp).Row + 1
Sheets("Munka2").Range("A" & sor & ":F" & sor).Copy Sheets(lapnev).Range("B" & ide)
Sheets("Munka2").SelectMár csak azt kell megmondanod, hogy az A: F tartományt a másik lap A-ba, vagy B-be tegye. Ha A-ba, akkor
Sheets("Munka2").Range("A" & sor & ":F" & sor).Copy Sheets(lapnev).Range("A" & ide)
kell neked. -
Delila_1
veterán
"ezután megvizsgálja a "munka2" lap A3 celláját és ha van olyan nevű munkalap már, akkor a B oszlop következő sorába bemásolja a tartalmát, ha nincsen a cellában szereplő nevű munkalap akkor létrehozza azt, és a B2 cellájába bemásolja a "munka2" lap A3-as
cellájának a tartalmát..."
Ebből nekem úgy tűnt, hogy az eredeti adat sorába kell másolni a B oszlop tartalmát.
Beteszek egy képet, kiemelve a módosításokat. -
Akkor még egy megoldás, csak a változatosság kedvéért...
Alaphelyzet
Makró futtatása után (Start Macro gomb)
1. új munkalap | 2. új munkalap | 3. új munkalap
Létrehozott munkalapok törlése után (Delete Created Sheets gomb)Macro forráskód
Option Explicit
'Globális deklarációk
Dim MySrcRange, MyTempRange, MyCell As Range
Dim MySheetNamesArray() As String
Dim MySheetNamesIndexArray() As Long
Dim MyArrayIndex, MyDestOffset As Long
Dim MySrcSheetName, MySrcCodesColumn, MySrcCodesRow, MyDestCodesColumn, MyDestCodesRow As String
Private Sub CommandButton1_Click()
'Képernyő frissítés KI
Application.ScreenUpdating = False
'Forrás munkalap és cella beállítása
MySrcSheetName = "Munka2"
MySrcCodesColumn = "A"
MySrcCodesRow = "2"
'Cél cella beállítása
MyDestCodesColumn = "B"
MyDestCodesRow = "2"
'Forrás munkalap kiválasztása
ThisWorkbook.Worksheets(MySrcSheetName).Select
'Tartomány létrehozása a forrás adatok alapján
Set MySrcRange = Range(MySrcCodesColumn & MySrcCodesRow & ":" & MySrcCodesColumn & Cells(Cells.Rows.Count, MySrcCodesColumn).End(xlUp).Row)
'Dinamikus tömbők átméretezése a tartományban található cellák száma alapján (üreseket is beleértve)
ReDim MySheetNamesArray(0 To MySrcRange.Count - 1)
ReDim MySheetNamesIndexArray(0 To MySrcRange.Count - 1)
MyArrayIndex = 0
'Végignézzük a forrástartomány használt celláit
For Each MyCell In MySrcRange
'Ha üres, akkor kihagyjuk
If Not IsEmpty(MyCell) Then
'Aktuális munkalap létezik?
If Not SheetExists(MyCell.Text) Then
'Nem létezik, létrehozzuk és beírjuk a forráscella értékét
ActiveWorkbook.Sheets.Add After:=ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count)
ActiveSheet.Name = MyCell.Text
Sheets(ActiveSheet.Name).Range(Cell1:=MyDestCodesColumn & MyDestCodesRow) = MyCell.Text
'Létrehozott munkalap nevét beírjuk a tömb megfelelő pozíciójába és megnöveljük a tömb indexét
MySheetNamesArray(MyArrayIndex) = MyCell.Text
MySheetNamesIndexArray(MyArrayIndex) = MySheetNamesIndexArray(MyArrayIndex) + 1
MyArrayIndex = MyArrayIndex + 1
Else
'Létezik, meghatározzuk a célcella eltolási értékét és beírjuk a forráscella értékét
MyDestOffset = GetDestRangeOffsetAsSheetName(MyCell.Text)
Sheets(MyCell.Text).Range(Cell1:=MyDestCodesColumn & (MyDestCodesRow + MySheetNamesIndexArray(MyDestOffset))) = MyCell.Text
'Eltolási értéket megnöveljöük az eltolási értékeket tartalmazó tömbben
MySheetNamesIndexArray(MyDestOffset) = MySheetNamesIndexArray(MyDestOffset) + 1
End If
End If
Next MyCell
'Forrás munkalap kiválasztása
ThisWorkbook.Worksheets(MySrcSheetName).Select
'Képernyő frissítés BE
Application.ScreenUpdating = True
'Start Macro gomb tiltása, Delete Created Sheets parancsgomb engedélyezése
CommandButton1.Enabled = False
CommandButton2.Enabled = True
End Sub
'Az adott munkalap létezik vagy nem
Public Function SheetExists(SheetName As String) As Boolean
Dim MyWorkSheet As Worksheet
Dim Result As Boolean
Result = False
For Each MyWorkSheet In ThisWorkbook.Sheets
If UCase(MyWorkSheet.Name) = UCase(SheetName) Then
Result = True
Exit For
End If
Next MyWorkSheet
SheetExists = Result
End Function
'A léterhozott munkalapon a cél cellák eltolási értékei
Public Function GetDestRangeOffsetAsSheetName(CurrentSheetName As String) As Long
Dim i As Long
For i = 0 To MySrcRange.Count - 1
If MySheetNamesArray(i) = CurrentSheetName Then
GetDestRangeOffsetAsSheetName = i
Exit For
End If
Next i
End Function
'A létrehozottt munkalapok törlése
Private Sub CommandButton2_Click()
Dim i As Long
'A megerősítő ablak(ok) megjelenésének tiltása
Application.DisplayAlerts = False
'Létrehozott munkalapok törlése
For i = 0 To MyArrayIndex - 1
If SheetExists(MySheetNamesArray(i)) Then Sheets(MySheetNamesArray(i)).Delete
Next i
'Forrás munkalap kiválasztása
ThisWorkbook.Worksheets(MySrcSheetName).Select
'A megerősítő ablak(ok) megjelenésének engedélyezése
Application.DisplayAlerts = True
'Start Macro gomb engedélyezése, Delete Created Sheets parancsgomb tiltása
CommandButton1.Enabled = True
CommandButton2.Enabled = False
End Sub -
Fferi50
Topikgazda
Szia!
Makróval szép sorban megnyitod mindegyiket, törlöd a munkalapot, majd beszúrod az újat. Ha ugyanoda kell beszúrni, akkor megjegyzed a törölt munkalap helyét és annak a helyére szúrod be - vagy először beszúrod elé az újat és utána törlöd a régit. Ezután mented és bezárod a fájt és nyitod a következőt.
Makrórögzítővel megcsinálsz egy ilyen műveletet, majd ciklussal végrehajtod a fájlokra.
A fájlneveket beteheted pl. egy munkalapra és az alapján mész végig, vagy használhatod a Dir() parancsot a fájlok megtalálására.
Üdv. -
visit
tag
Üdv!
Egy mappában van kb. 200 db xlsm fájlom. Mindegyikből törölni kellene egy - ugyanazt - munkalapot, és helyette beszúrni egy másikat. Mindegyikbe ugyanazt a munkalapot.
Lehet ezt valahogy automatizálni?
Köszönöm, ha válaszoltok! -
-
Delila_1
veterán
válasz
sosperec18 #42883 üzenetére
Legyen fejléce a táblázatodnak.
Állsz a táblázatban, Beszúrás | Kimutatás. Megadod a helyét vagy új lapon, ahogy felajánlja, vagy az aktuális lapon kijelölsz egy cellát, ahol kezdődjön.
Kapsz egy párbeszéd ablakot, ahol fent látszanak a táblázat címsorai. A Sorok, és az Értékek mezőbe is behúzod a neveket tartalmazó oszlop címét. Ennyi. -
sosperec18
csendes tag
Kedves Fórumtársak!
Abban kérném a segítségeteket, miszerint van egy közel 1000 sorból álló oszlop, melyben különböző nevek szerepelnek, több név többször is szerepel.
Hogy lehetséges egy olyan "kimutatást" készíteni, hogy az egyes nevek mennyiszer szerepelnek az oszlopban. (Tehát nem egyessével, hanem összesítve, hogy xy 10x; zx 5x és így tovább...
Előre is köszönöm segítő válaszaitokat! -
Delila_1
veterán
Fferi gyorsabb volt, de azért én is beteszem a saját makrómat.
Sub Szetvalogatas()
Dim sor As Long, lapnev As String, usor As Long, a
usor = Range("A" & Rows.Count).End(xlUp).Row
For sor = 2 To usor
lapnev = Right(Cells(sor, 1), Len(Cells(sor, 1)) - 3)
On Error Resume Next
Set a = Sheets(lapnev)
If Err.Number > 0 Then
Sheets.Add.Name = lapnev
Sheets(lapnev).Move After:=Sheets.Count
End If
Sheets(lapnev).Cells(sor, 2) = Sheets("Munka2").Cells(sor, 2)
Sheets("Munka2").Select
Next
Sheets("Munka2").Move After:=Sheets(1)
MsgBox "Kész a szétválogatás", vbInformation
End Sub -
Fferi50
Topikgazda
Szia!
A "kulcsok" megfeleltetését egy táblázatba érdemes foglalni. Szerintem érdemes a formázást egy munkalapon manuálisan megcsinálni, utána pedig ezt lehet másolni.
Nálam a kódtábla ugyanazon a lapon van, ahol az adatok, és az alábbi makrót erről az aktív munkalapról kell indítani:Sub osztas()
Dim sh As Worksheet, wb As Workbook, cl As Range, tabla As Range, klcs As String, mlapnev As String, sh1 As Worksheet
Set sh = ActiveSheet
Set tabla = Range("X1:Y100") 'itt van a kulcstábla
On Error Resume Next
For Each cl In sh.UsedRange.Columns(1).Offset(1, 0).Cells 'az első oszlopon a 2. cellától megy végig
If cl.Value = "" Then Exit For 'üres cella esetén kilép a ciklusból
klcs = Left(cl.Value, 2) ' az első két karakter a kulcs
mlapnev = tabla.Find(what:=klcs, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 1).Value
If Err = 0 Then ' ha megtaláltuk az értéket a kulcstáblában, akkor
Set sh1 = Sheets(mlapnev)
If Err = 9 Then ' ha még nincs ilyen nevű munkalap
Sheets("Sablon").Copy after:=Sheets(Sheets.Count) ' a Sablon nevű munkalapot másoljuk
Set sh1 = Sheets(Sheets.Count) ' és átnevezzük
sh1.Name = mlapnev
Err = 0
End If
sh1.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Value = cl.Value 'a B oszlop első üres cellájába másoljuk a cella értékét
Else ' figyelmeztetés, hogy olyan kulcs van, amihez még nincs érték
MsgBox "Ehhez a kulcshoz nincs név: " & klcs, vbInformation
Err = 0 ' ezt az értéket figyelmen kívül hagyja és megy tovább
End If
Next
On Error GoTo 0
sh.Activate
MsgBox "kész vagyok", vbExclamation
End Sub
A már meglevő munkalapokon az adatok nem íródnak felül, tehát ismételt feldolgozás esetén duplázódnak.
Ha kérdésed van, írj bátran.
Üdv. -
Andris246
tag
válasz
Fire/SOUL/CD #42874 üzenetére
Igen írtam be számot nem hagytam üresen. 😉
Majd holnap este megnézem ismét melóban.
Lehet már műszak vége volt és benéztem vmit.Holnap este majd jelzek mire jutottam.
Köszi -
Sesy
aktív tag
válasz
Fferi50 #42876 üzenetére
Azért írtam számot, mert az adatbázisom első oszlopa egy számsor lesz és ennek az első két karaktere fogja meghatározni, hogy az adott adatot melyik munkalapra kell majd kimásolni egy munkalapról, ahová ömlesztve jönnek be az adatok
33 - Falazás
39 - Szárazépítés
stb...A formázást is makróval szeretném megoldani, ha van rá lehetőség...
Úgy képzelem, hogy egy munkalapra be olvasom az összes adatot, majd az első oszlopban lévő kód szerint , újonnan létrehozott munkalapokra szétválogatom az adatokat, majd a végén az adott sablon szerint formázom az elkészült munkalapokat...
A kiindulási munkalapon 9 oszlop lesz és több száz sor. A végére az adatok olyan 20-25 munkalapra válogatódnának szét.
Most azt már meg tudom csinálni, hogy ha előre elkészítem a munkalapokat akkor a megfelelő kódszámút a megfelelő lapra másolja... de így előre manuálisan definiálnom kell 99 munkalapot, amiből lehet, hogy csak 20-at fogok használni... ez így nem túl elegáns
-
Fferi50
Topikgazda
Szia!
Már megint kérdésem van:
Ha számok vannak a munka2 lap A oszlopában, akkor honnan tudjuk, hogy mi a neve a keresendő munkalapnak? Mert csak számokat nem szerencsés munkalapnévnek adni.
A formázáshoz:
Egy munkalapot megformázol. Utána a formátum másolóval annyi munkalapra másolod, amennyire akarod. (Formátum másoló bekapcsolása kijelölöd a másolandó részt. Jobb egérgomb - a jobb oldalon levő ecsetre duplakatt. Addig marad bekapcsolva, amíg ESC-t nem nyomsz neki.)
De a megformázott munkalapot sablonként is elmentheted és nyithatsz utána ugyanolyan munkalapokat.
ÜDv. -
Sesy
aktív tag
sziasztok
a következőt szeretném megoldani:
"munka2" lapon az A oszlopban a 2. sortól lefelé vannak egymás alatt számok pl: 36,36,37,38,36,36,37,38.... (bármennyi, különböző egész szám lehet)kezdetben csak "munka1" és "munka2" lap létezik
a makró megvizsgálja a "munka2" lap A2 celláját és ha nincsen a cellában szereplő nevű munkalap akkor létrehozza azt, és a B2 cellájába bemásolja a "munka2" lap A2-es cellájának a tartalmát.
ezután megvizsgálja a "munka2" lap A3 celláját és ha van olyan nevű munkalap már, akkor a B oszlop következő sorába bemásolja a tartalmát, ha nincsen a cellában szereplő nevű munkalap akkor létrehozza azt, és a B2 cellájába bemásolja a "munka2" lap A3-as
cellájának a tartalmát...
Ezt addig csinálja, amíg a "munka2" lap A oszlopában vannak számokAz már hab lenne a tortán, ha menet közben, vagy a végén a munkalapok a nevük szerin növekvő sorrendbe kerülnének....
egy oszlopban lévő különböző számokat már szét tudok dobálni az értéküknek megfelelő, már meglévő, előre elkészített munkalapra, de a fenti műveletet nem sikerül megoldanom.
a lényeg ugye az lenne, hogy nem tudom előre, hogy hány db különböző és összesen hány db számot kellene szétválogatnom...A végén az elkészült új munkalapokat, csak az újakat, az eredetileg meglévő "munka1" és "munka2" nevűt nem, majd szeretném egy sablon szerint formázni, mindet egyformára, ezt megtudom tenni egyszerre, vagy csak egyesével külön-külön?
még csak most ismerkedem a makró készítéssel és ez most kifogott rajtam...
előre is köszönöm a segítséget
-
válasz
Andris246 #42872 üzenetére
Ha Copy/Paste-el másoltad át a képletem és csak annyit módosítottál, hogy A1-ről E1-re, akkor lehet, hogy csak annyi a gond, hogy az E1 cella üres vagy 0, hisz előbbi esetben $D$ (ez is hibás hivatkozás), utóbbi esetben meg $D$0 lenne (ez is hibás, hisz a sorszámozás 1-ről indul, nincs 0-ás sor). Szóval E1-be 1 vagy nagyobb szám kerüljön...
-
Andris246
tag
válasz
Fire/SOUL/CD #42870 üzenetére
-
Fferi50
Topikgazda
Szia!
1. Vedd fel az osztályzatokat is egy adatsornak. Az adatfeliratokat add hozzá, helye alapnál belül. A kitöltést és a vonalat állítsd nincs-re.
Így a jegyek a diákok neve fölé kerül kb.
2. Az osztályzatokat tedd a vízszintes tengelyt képező nevek mellé/alá - attól függ, milyen irányú. Ezután a tengely feliratait a két sor/oszlop szerint jelöld ki.Üdv.
-
-
ace05
senior tag
Van oszlop diagramom. PL legyen egy dolgozat osztályozásról szó. Függőleges tengely az pontszámé, a vízszintes pedig a diákoké. Lenne egy harmadik érték sorom is ami az, hogy hanyast értek el a diákok. De ezt nem akarom, hogy megjelölje a diában. Itt azt szeretném, hogy írja a jegyet a vízszintes tengelynél a diákok neve alá. Ezt meg lehet automatán csinálni, vagy szöveg dobozzal kell harcolnom ?
-
Fferi50
Topikgazda
válasz
Andris246 #42866 üzenetére
Szia!
Ez egy képlet lenne, amiben a cella hivatkozást szeretnéd kicserélni?
Akkor a CSERE függvény nem igazán jó. A HELYETTE függvényt kell használnod:=HELYETTE("'H:\szamlalo\[BSA.xlsx]DB1400'!$D$23";"23";"10'")
Ha mégsem ezt szeretnéd, akkor mutasd meg lsz. példával.
Üdv. -
Andris246
tag
Sziasztok
A kérdésem az lenne hogy a bemásolt kódban hogyan tudom a SOR helyének a számát 1 cellában kezelni.
Vagyis ha a cellába 10-et írok akkor a 10-es cellában lévő adatott adja meg a függvény cellájában.=CSERE('H:\szamlalo\[BSA.xlsx]DB1400'!$D$23;1;2;"")
A $23 helyébe hogy írjam azt a cellát ami a számot tartalmazza.
Bocsánat ha nem teljesen érthető
Válaszokat köszönöm
-
marec1122
senior tag
válasz
Delila_1 #42860 üzenetére
ne haragudj , kicsit zavaros lett. Szóval A,C,E tartalma megnevezések. pl. kispista. Ezekhez az oszlopokhoz tartoznak szám érték oszlopok. Ezek B,D,F oszlopok. pl A1: kispita B1:20; A2:nagyjeno B2:13... Az a kérdés hogy egy cellába pl: G1: szummázni lehet e a 3 oszlop A,C,E kispita adatához tartozó szám értéket.
-
marec1122
senior tag
Sziasztok!
A következő kérdéssel fordulnék hozzátok. Adott A,C,E oszlop amik megnevezéseket tartalmaznak pl.: kispista. Namármost B,D,F oszlopok számot tartalmaznak. Az a kérdés, hogy egy cellába adok egy feltételt mondjuk ha B,D,F oszlop bármely eleme kispista, akkor a mellette található egész számot adja hozzá a cella tartalmához. Tehát szummázzuk a feltételnek megfelelően.
-
adDis
csendes tag
válasz
Fferi50 #42854 üzenetére
Szia Feri! Köszönöm a segítségedet, ez a formázás jót fog tenni a táblázataimnak, mert segíteni fogja az eligazodást, és nagyon jól néz ki tőle!
Más kérdés, hogy 1060 cellára egyenként kell megcsinálnom ezt a másik munkalapra hivatkozó feltételű formázást (mert fontos az abszolút hivatkozás megtartása mindkét munkalapomon), de ezzel számoltam is, hogy ezt valószínűleg nem fogom tudni elkerülni. Ebben a részében sajnos nem segít a formátummásolás, de a többi remekül működik, 360 már el is készült a nap folyamán!Köszi még egyszer, Üdv.
-
Mutt
senior tag
Sziasztok,
Excel 2016-tól van SZÖVEGÖSSZEFŰZÉS (TEXT.JOIN), ami jobb mint a FŰZ/ÖSSZEFŰZ.
Szintén tömbfüggvény, vagyis CSE kell hozzá:=SZÖVEGÖSSZEFŰZÉS("";;KÖZÉP(A1;SOR(INDIREKT("$A1:$A"&HOSSZ(A1)));1))
Excel 2010-től pedig van Power Query is, amelyben a Text.Reverse függvény is használható.
Itt csak az a probléma, hogy a fenti függény előtt/után mindig a megfelelő típus konverziót kell elvégezni különben hibaüzenet lesz az eredmény. A lenti példában annyi trükk van, hogy bináris (IGAZ/HAMIS) értéknél a másik bináris értéket adja vissza és nem a fordított szöveget.Korábbi Excelben marad a korábban mutatott VBA UDF.
üdv
-
Fferi50
Topikgazda
Szia!
Csoportos munkalap kijelölés esetén nem lehetséges feltételes formázást létrehozni.
Az érvényességi területnél nem hivatkozhatsz másik munkalapra.
Viszont a feltételnél lehet másik munkalapra hivatkozó képletet megadni.
A feltételes formázást megcsinálod az egyik munkalapra pl. a Munka2 munkalapra:
A formázandó cellák kijelölése képlettel, a képlet pl. ez:
=Munka1!$E$2="I" - megadod a formázást és az ezen a lapon érvényes területet.
Érvénybe helyezed.
Ezután ráállsz az érvényességi terület egy cellájára. Bekapcsolod a formátum másolót (jobb egérgomb - alsó sor jobb szélén ecset (ha rámutatsz, megjelenik a neve: Formátum másoló) bal egérgomb dupla katt. Bekapcsolódik. Átváltasz arra a munkalapra, ahol ugyanazt a formázást szeretnéd látni. Kijelölöd az itteni területet és rákattintasz. Majd így tovább a többi munkalapon is.
A formátum másoló addig marad bekapcsolva, amíg ESC-t nem nyomsz.Üdv.
-
adDis
csendes tag
Sziasztok!
Van egy fájlom, aminek több munkalapján is vannak kimutatások. Ennek egyik fülén szeretnék beállítani egy olyan feltételes formázást, hogy ha - mondjuk- az E oszlop adott sorába beírok egy I betűt, az ne csak az érintett munkalap érintett sorának - mondjuk - ABC oszlopába tartozó celláit színezze át, hanem egy másik munkalap egy konkrét celláját (v. tartományát) is.
Ugyanazon lapon meg tudom oldani a dolgot, de sehogy nem tudom belerakni az érvényességi terület kijelölésénél a másik munkalap celláját, bárhogy próbáltam.
Megoldható vajon elegánsan a feltételes formázás érvényességének kiterjesztése egyszerre két (vagy több) munkalapra is?Segítségeteket előre is köszönöm.
-
Félreértesz, a 2016/2019/365 az egy kódbázisra épül egy kaptafa, DEEEE, nem elég, hogy a MicroSoft azzal is szivatta a jónépet, hogy az asztali 2019-t csak W10 alá lehet pakolni, még rátett egy lapáttal, ennek eredménye, hogy az az asztali 2019-ben sincs FŰZ függvény, csak a nyamvadt 365-ben...
Én W10 alatt 2019-t használok, de Én sem tudom kipróbálni Mutt kódját, mert nincs FŰZ függvény, ugyanolyan képet tudnék berakni a 2019-ről, mint Te korábban...
UI: FŰZ fx-t 2016-ban/tól kompatibilitási okok miatt az ŐSSZEFŰZ "helyettesíti"...
-
3DFan
aktív tag
válasz
Fire/SOUL/CD #42849 üzenetére
Rákerestem, 2019-től van benne.
-
-
Andris...
tag
válasz
Fire/SOUL/CD #42832 üzenetére
Köszi, ez hasznos!
-
Fferi50
Topikgazda
válasz
karlkani #42840 üzenetére
Szia!
"Másolva, majd beillesztve idézőjelek közé teszi az adatokat, ha a tab karakter benne van a cellában. Simán összefűzve, szóközzel elválasztva a két cella tartalma, majd átmásolva jó, de amint bekerül a tab karakter a cellába már nem."
Nem egészen értem, nálam nincs ilyen. Másolás - irányított beillesztés értéket ugyanúgy megtartja a tabokat láthatatlanul és nincs semmi idézőjel.Üdv.
-
karlkani
aktív tag
válasz
Fferi50 #42839 üzenetére
Az vagyok, csak túl sok minden került a képletbe, s nem tetszett neki...
Csak azért kell a tab elválasztás, hogy átmásolva .txt fájlba átláthatóbb legyen. Szuper a képlet, de nem teljes az öröm. Másolva, majd beillesztve idézőjelek közé teszi az adatokat, ha a tab karakter benne van a cellában. Simán összefűzve, szóközzel elválasztva a két cella tartalma, majd átmásolva jó, de amint bekerül a tab karakter a cellába már nem.Ez legyen a legkevesebb, Notepad++ programban néhány kattintással megoldom.
Köszönöm szépen a segítséget!
-
Fferi50
Topikgazda
válasz
karlkani #42838 üzenetére
Szia!
Légy már egy kicsit kreatívabb....=HELYETTE(HELYETTE(KÖZÉP(D2;SZÖVEG.KERES(":";D2)+2;HOSSZ(D2));KARAKTER(34);"");",";"")
Nem tudom, jó ötlet-e a Tab elválasztás. A Tab a Karakter függvénnyel állítható elő.
Ha 3 tab-ot szeretél, akkor a Sokszor függvényt is be kell vetned.=F2 & SOKSZOR(KARAKTER(9);3) & G2
Ne lepődj meg, a tab nem látszik a cellákban.Üdv.
-
karlkani
aktív tag
válasz
Fferi50 #42837 üzenetére
Szia!
Ja, így oké, azt hittem elrontottam valamit a képleteddel. Az új képlet nem jó az username esetén (ott marad a végén a
,
), mert a végén nem csak a"
van, hanem",
.Még egy kérdés. Szöveges dokumentumba (.txt) elég hülyén mutat egymás mellett a két adat. Összefűzném őket egy cellába, de nem szóköz lenne az elválasztó, hanem 3 tab. Megoldható?
-
Fferi50
Topikgazda
válasz
karlkani #42835 üzenetére
Szia!
"a tisztított adatoknál a felhasználónév előtt ott marad a"
és a végén a","
Erre írtam, hogy használd a HELYETTE függvényt. A módosított képlet:=HELYETTE(KÖZÉP(D2;SZÖVEG.KERES(":";D2)+2;HOSSZ(D2));KARAKTER(34);"")
illetve:=HELYETTE(KÖZÉP(E2;SZÖVEG.KERES(":";E2)+2;HOSSZ(E2));",";"")
A KÖZÉP függvénynek meg kell adni a harmadik paramétert, hogy hány karaktert emeljen ki, de ezt ennél egyszerűbben nem lehet. Hiába írsz -1 vagy -2 -t hozzá, mert az még biztosan nem a végét fogja lehagyni, mivel a teljes hosszt számolja.Üdv.
-
Delila_1
veterán
Egy rövid makró a 36 kezdetű cellák másolásához.
Sub Masolas()
Dim sor As Long, ide As Long
Sheets("Munka2").Select
sor = 1
Do While Cells(sor, 1) <> ""
If Left(Cells(sor, 1), 2) = "36" Then
ide = Sheets("Munka1").Range("A" & Rows.Count).End(xlUp).Row + 1 '***
Sheets("Munka1").Cells(ide, 1) = Cells(sor, 1).Value
End If
sor = sor + 1
Loop
End SubA csillagokkal jelzett sor határozza meg a Munka1 lapon az első üres sort.
Sok adat esetén érdemes a makró elején kikapcsolni a képernyő frissítését –Application.ScreenUpdating = False
–, a végén meg visszaállítani.
Szerk.: azt is megteheted, hogy szűröd az oszlopot a 36-os kezdetre, majd a szűrt állományt másolod a Munka1-re. -
karlkani
aktív tag
Szia!
Köszönöm!
(#42825) Fferi50
Szia!Így már jó, viszont a tisztított adatoknál a felhasználónév előtt ott marad a
"
és a végén a",
, id után pedig a,
. +3-ra növelve az elejéről sikerül eltüntetni a"
-t. Hossznál be lehet állítani, hogy -2 karakter legyen, illetve id-nél -1 karakter? -
Sesy
aktív tag
Sziasztok!
A következővel szeretném kiegészíteni egy meglévő makrómat:Munka2 lapon soronként vannak adatok, ha az első oszlopban lévő kódszám első két jegye 36 akkor át szeretném másolni a Munka1 lapra egy megadott sorba, ha nem 36 akkor megyek tovább a következő sorra.
Azt meg tudom csinálni, hogy ha van adat a sor első oszlopában akkor másolja át, de sehogy sem sikerül, hogy a fenti csak a fenti feltétel esetén másoljunk...
Az első oszlopban lévő kód az minden esetben hasonló formátumú:
36-003-1.1.1.1.2-0002398Az első szám határozná meg, hogy melyik munkalapra másoljuk ki az adatokat az adathalmazból.
Nem teljesen a fenti problémához tartozik, de talán tudtok segíteni:
Építész vagyok, az adataimat archicad programból nyerem ki. Ezek lehetnek építőanyag mennyiségek, tulajdonságok, épületszerkezetek méretei stb... Ezeket az adatokat tudom xls formátumba exportálni.
Ebből az xls-ből szeretném tovább rendezni az adatokat egy másik fájlba bizonyos feltételrendszer alapján (lásd fent például). Az archicadből kapott adatok dinamikusan változnak attól függően, hogy mekkora épületről van szó és ez mennyi építőanyagot, épületszerkezetet tartalmaz.
Azt szeretném megoldani, hogy ha exportálom az adatokat xls-be akkor ezt a fájlt ne kelljen megnyitnom ahhoz, hogy az általam rendszerezésre használt xls-ben frissüljenek az adatok. Ez egyszerű függvények esetén sikerült, de ha makrót használok akkor nem megy... és amit szeretnék azt makró nélkül vagy nagyon bonyolult lenne, vagy nem lehet megoldani.
Ha meghivatkozok egy cella értéket egy másik fájlból akkor ugye ott a hivatkozási útvonal lesz ha ezt a cellát átmásolom valahová akkor is az útvonalat másolom, nem az értéket, na ezt is jó lenne megoldani valahogy, hogy az értéket másoljam át...Lehet, hogy egy kicsit össze-vissza volt akkor elnézést
Előre is köszönöm a segítséget
-
válasz
Andris... #42828 üzenetére
Hali!
Ha Office 2016/2019/365 használsz, akkor jól jöhet: Excel Functions Translator
Nem csak egy adott függvény nevét képes "lefordítani", hanem összetett függvény-kifejezéseket/képleteket is, pl ilyet is, amit Mutt kolléga itt eszközölt...
-
3DFan
aktív tag
Szeretném hivatkozással megnyitni azt a munkalapot amiből adatokat nyer a jelenleg használt. Cellán jobb egér hivatkozások opciót használva megadom az elérési utat, de ha kattintok rá akkor csak pörög a homokóra, egyéb nem történik. Mi lehet a baja? Köszönettel.
Ui.: az állomány egyébként hibátlanul megnyitható. -
Andris...
tag
Köszi, működik. (Nem tudtam, hogy a magyar excel nem tud angol formulát értelmezni)
-
Andris...
tag
Egy már adatokkal teli lapot szeretnék olvashatóbbát tenni úgy, hogy kétféle színnel mutassa a sorokat egymás után (pl. halványkék-sötétkék kombó). Viszont ehhez semmiféle előre beépített tábla sémát vagy cellaérték alapján történő feltételes formázást nem akarok használni a már meglévő adatok mennyisége és változatossága miatt. Egyszerűen csak két színt szeretnék.
Google-on ennyit találtam: Kezdőlap - Feltételes formázás - Új szabály - A formázandó cellák kijelölése képlettel - Értékek formázása, ha ez a képlet igaz: =MOD(ROW(),2)
Az excel kiírja, hogy a képlet hibát tartalmaz, pedig több helyen is csak ezt találtam hozzá. -
Fferi50
Topikgazda
válasz
karlkani #42823 üzenetére
Szia!
Akkor ki kell bővíteni a keresendő szót pl. "*id" & Karakter(34) & " :*" a "*id*" helyett.
Feleslegek eltávolításához használd a HELYETTE képletet. Ez minden megadott részletet eltávolíthatsz.
Pl. =HELYETTE(A2;KARAKTER(34);"") eltávolítja az összes idézőjelet. (Fontos, hogy függvénnyel add meg az idézőjelet.)
=HELYETTE(A2;",";"") a vesszőket távolítja el.Üdv.
-
Mutt
senior tag
válasz
karlkani #42810 üzenetére
Szia,
Excel 2010-től van a Power Query ami az alábbi lépésekkel használható.
Én csináltam egy minta txt fájlt, ami így néz ki:1. Excelben az adatok fülön található beolvasással megnyitom ezt a minta fájlt.
2. Adatok beolvasására kattintva megjelenik a fájl tartalma a Power Query szerkesztőben
3. Az első jobb sarkában található szövegszűrővel rákeresünk az id és username kezdetű sorokra.
4. Szedjük szét az oszlop tartalmát két oszlopra kettőspont elválasztó szerint.
5. A sorokhoz adjunk egy azonosító oszlopot. Oszlop hozzáadása -> Indexoszlop
6. Egy újabb azonosító oszlopot vegyünk fel, de ez ne 1-ről hanem 2-ről induljon. Oszlop hozzáadása -> Indexoszlop -> EgyéniEzzel a két utolsó lépéssel azt értük el, hogy az egymás utáni sorokban lévő felhasználónév és azonosító azonos azonosítószámot kapott.
7. Kezdőlapon a Lekérdezések egyesítése opcióval megkerestetjük az azonos azonosítószámhoz tartozó adatokat. A képernyőt igy kell ehhez kitölteni:
8. Az új oszlop jobb sarkában lévő ikonra kattintva válasszuk ki hogy a második oszlop jelenjen meg.
9. Az első oszlopban szúrjünk a username-re és végül a felesleges oszlopokat töröljük ki.
10. Töltsük vissza Excelbe a készeredményt.üdv
-
karlkani
aktív tag
válasz
Fferi50 #42816 üzenetére
Szia!
Az a helyzet, hogy az "id" több szóban is előfordul a keresetteken kívül, így azokat is találatnak jelzi a c oszlopban. Pontos egyezésre kellene keresni ("id").
Köszönöm!
(#42819) ny.janos
Egyelőre ez lett a megoldás."username": "Felhasználónév",
"id": 123456789,
Abban még segíthetnél, hogyan lesz ebből a kívánt érték. Csere képlettel balról sikerül eltávolítani a felesleget, a végekről a ", és , eltávolítása nem megy. Notepad++ megoldotta, de kíváncsi vagyok.
Köszönöm!
-
Mutt
senior tag
válasz
zsolti_20 #42820 üzenetére
Szia,
A1 cellában található szöveget/számot ezzel a tömbképlettel tudsz megfordítani:
=FŰZ(KÖZÉP(A1;HOSSZ(A1)-SOR(INDIREKT("$A$1:$A"&HOSSZ(A1)))+1;1))
Dátumot szöveggé kell alakítani a SZÖVEG függvénnyel.
=FŰZ(KÖZÉP(SZÖVEG(A1;"ééééhhnn");HOSSZ(SZÖVEG(A1;"ééééhhnn"))-SOR(INDIREKT("$A$1:$A"&HOSSZ(SZÖVEG(A1;"ééééhhnn"))))+1;1))
üdv
-
ny.janos
tag
válasz
karlkani #42815 üzenetére
Szia!
Ha nem visszatérő feladatról van szó, hanem csak most az egyszer kell az adatokat kinyerned, valamint az "id" és "username" ilyen struktúrában szerepel, akkor egy egyszerű sorbarendezéssel egymás alá kerül az összes id és ugyanazon sorrendbe szintén egymás alá az összes username. Innen aztán simán ki lehet másolni őket egy másik munkalapra egymás mellé.
Ezt követően egyszerűen eltávolítod a felesleges adatokat csere funkcióval * és ? helyettesítő karakterek használatával, vagy szövegfüggvénnyel kinyered azt a rész, amire szükséged van.
-
Fferi50
Topikgazda
válasz
zsolti_20 #42817 üzenetére
Szia!
Szerintem csak makróval (felhasználói függvénnyel) lehet.
Pl:Function fordit(hol As Range) As String
Dim ch As Integer, sz As String
For ch = Len(hol) To 1 Step -1
sz = sz & Mid(hol, ch, 1)
Next
fordit = sz
End Function
Ezt ugyanúgy használhatod, mint a beépített függvényeket.
Üdv.
-
zsolti_20
senior tag
Sziasztok! Szeretnék szöveget vissza felé íratni, de nem találok erre semmi értelmeset.
Pl ha megadom A1-ben, hogy 1234 akkor azt írja A2-be hogy 4321. Létezik ilyesmi egyáltalán? -
Fferi50
Topikgazda
válasz
karlkani #42815 üzenetére
Szia!
Akkor mutatnék egy szerintem használható megoldást, hogy érthető legyen a műveletek sorrendje, ezért 4 segédoszlop szükséges hozzá:
Első segédoszlop: meghatározzuk a username -k helyét:
A segédoszlop első cellájába írunk egy db 1-est. Ez ugyanígy lesz a második segédoszlopban is. Én a B oszloptól tettem a segédoszlopokat
A képlet a második cellától kezdve:=HOL.VAN("*username*";INDIREKT("$A" & B1+1 & ":$A$10000");0)+B1
A függvény megtalálja a username szövegrészt az A oszlopban, mindig az előző után keresi, ezért a tényleges helyhez hozzá kell adni az utolsó találat helyét.
A C oszlop 2. cellájának képlete: (az első cellában ugye ott van az 1)=HOL.VAN("*id*";INDIREKT("$A" & C1+1 & ":$A$10000");0)+C1
Ez pedig az id szövegrészt keresi, hasonló módon, mint az előző képlet.
A következő 2 oszlopban meghatározzuk az adott kereséshez tartozó tényleges cellaértékeket:
D2 cella képlete:=INDIREKT("A" & B2)
E2 cella képlete:=INDIREKT("A" & C2)
Ezután a következő két oszlopba kerülnek a "feleslegtől megtisztított" adatok:
F2 cella képlete:=KÖZÉP(D2;SZÖVEG.KERES(":";D2)+2;HOSSZ(D2))
G2 cella képlete:=KÖZÉP(E2;SZÖVEG.KERES(":";E2)+2;HOSSZ(E2))
Itt a SZÖVEG.KERES függvény eredményét módosítani kell, ahány szóköz van a kettőspont után (1+ szóközök száma).Ezután a két végleges oszlopot Ctrl+C majd beillesztés értékként művelettel véglegesíted. A segédoszlopok mehetnek a levesbe.
Üdv.
-
karlkani
aktív tag
válasz
sztanozs #42813 üzenetére
Nincs, ezekben a sorokban ennyi szerepel összesen. Egy felhasználónál ~100 sornyi adat van, változó. Az "id" minden esetben előrébb van az "username"-nél, a két adat közötti sorok száma is változó. Valami olyasmi kellene, hogy rákeresni az "id" szóra, majd találat után az adott cellában található számsort kiíratni egy cellába. Utána rákeresni az "username" szóra, a ott található nevet kiíratni az "id" számsorú cella mellé. Következő "id" számsor, az előző alá, mellé az adathalmazban következő "username" mezőben található név.
(#42814) Fferi50
Igen, ilyen sorrend van, az első "id" a 9. sorban van, a hozzá tartozó név a 69. sorban, de mint az előzőben írtam egy-egy felhasználónak nem azonos mennyiségű sora van a szövegben. -
Fferi50
Topikgazda
válasz
karlkani #42812 üzenetére
Szia!
Ha ilyen sorrendben követik egymást az adatok és a : (kettőspont) az elválasztó, akkor az alábbi képleteket használhatod: (feltételezve, hogy az adatok az A1 cellától kezdődnek).
Felhasználónév oszlopra:=KÖZÉP(INDIREKT("A"&SOR()*8);SZÖVEG.KERES(":";INDIREKT("A"&SOR()*8))+2;HOSSZ(INDIREKT("A"&SOR()*8)))
Id oszlopra:=KÖZÉP(INDIREKT("A"&4+(SOR()-1)*8);SZÖVEG.KERES(":";INDIREKT("A"&4+(SOR()-1)*8))+2;HOSSZ((INDIREKT("A"&4+(SOR()-1)*8))))
Ha nem az első sorban kezdődik, akkor a képletben az A után annyival nagyobb értéket írj, mint ahol az adatok kezdődnek. (Felhasználónévnél pl. "A" & 1+SOR(), Id-nél & 5 + SOR()-1, ha a 2. sorban kezdődnek az adatok.)
Ha a kettőspont után nem egy szóköz van, akkor a SZÖVEG.KERES függvény eredményéhez nem 2, hanem a szóközökkel megnövelt érték kell. (1 a kettőspont miatt, utána plusz a szóközök száma.)Ez a képlet húzható le végig, amikor elfogytak az adataid, hibát fog eredményezni, de gondolom ez nem olyan nagy baj.
Utána Ctrl+C és irányított beillesztés a képletes oszlopokra, hogy "maradandó" értéket kapj.Üdv.
-
karlkani
aktív tag
Sziasztok!
Adott egy ~150000 soros adathalmaz, ami ~2000 felhasználó adatait tartalmazza. Minden adat külön sorban. Amre szükség lenne, nem egymás után van a szövegben, hanem a mintához hasonló módon.
Minta
...
...
...
"id": 123456789,
...
...
...
"username": "Felhasználónév",
...
...
...
A következőt kellene kinyerni a szövegből ("idézőjelek", "," nélkül, ahogy írom):
Felhasználónév 123456789
Felhasználónév2 12345678910
...
Előre is köszönöm!
-
norby91
tag
Hali!
Röviden igy néz ki a Google táblázat lebutitva:
B oszlop függvény:
=HA(A1<="1999";1;KEREK.LE(A1/1000;0))Tehát, ha Az "A" oszlop értéke kisebb vagy egyenlő, mint 1999, akkor irjon 1-et, ha nagyobb, akkor az érték 1000-ed részét kerekitse lefelé.. Tehát 2000-től már 2-t kellene majd irnia.
Mindegyik érték mellé 1-es került.Mi a hiba? Miért lett igaz az, hogy 55365<="1999" --> ezért került 1-es érték a cellába.
Esetleg ha van más megoldás, megköszönöm!
Előre is köszi. -
Sutyi73
csendes tag
Köszi, sikerült.
-
-
Sutyi73
csendes tag
Sziasztok! Segítséget szeretnék kérni. Adott egy munkaidő nyilvántartási táblázat, amiben a BL5-ös cellában összegezni szeretném azoknak a celláknak az összegét amiben a tm + szám szerepel. Jelen példában tm 1,5 + tm 3 = 4,5
Köszönettel Sutyi73
Itt a minta:
[link]
Új hozzászólás Aktív témák
Hirdetés
- Microsoft licencek KIVÉTELES ÁRON AZONNAL - UTALÁSSAL IS AUTOMATIKUS KÉZBESÍTÉS - Windows és Office
- Antivírus szoftverek, VPN
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap - NYÁRI AKCIÓ!
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Assassin's Creed Shadows Collector's Edition PC
- BESZÁMÍTÁS! ASUS TURBO RTX 3090 24GB GDDR6X videokártya garanciával hibátlan működéssel
- Csere-Beszámítás! Számítógép PC Játékra! Intel I7 6700/ RX 580 8GB / 32GB DDR4 / 500GB SSD
- BESZÁMÍTÁS! Gigabyte B450M R5 5600X 16GB DDR4 512GB SSD RTX 3060 12GB Rampage SHIVA Seasonic 520W
- BESZÁMÍTÁS! Nintendo Switch 32GB V2 játékkonzol garanciával hibátlan működéssel
- Telefon felváráslás!! Xiaomi 13T, Xiaomi 13T Pro, Xiaomi 14T, Xiaomi 14T Pro
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged