-
IT café
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
-
Fferi50
őstag
Szia!
Egy oszlopot csinálj a városnevekből irányított szűrővel, csak az egyedi adatokra szűrve, másolás másik helyre. Utána az első cella mellé beírod a darabteli képletet és végighúzod az oszlopon.(A darabteli képletben $E$2:$E$4000 legyen a tartomány!)
Utána a darabtelis oszlopot átalakítod értékké. (másolás, irányított beillesztés - értéket).
Majd a két oszlopot rendezed a második oszlopra kívánalmaid szerint.Üdv.
[ Szerkesztve ]
-
Snoop-y
veterán
Sziasztok,
A kovetkezoben kernek segitseget:
Van 3 oszlopom es a negyedikben szeretnem megjeleniteni ezek eredmenyet a kovetkezokeppen:
Ha elso oszlop nem ures akkor annak az erteket
Ha ures akkor a masodikat ha az is ures akkor a harmadikat.New level... Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need
-
bteebi
veterán
válasz HS 2142 #23692 üzenetére
Ha nem kellenek a nyers adatok, csak a transzponált táblázat, akkor azt meg tudod csinálni, hogy a vágólapra helyezett táblázatot irányított beillesztéssel bemásolod képként (Enhanced metafile), majd ezt elforgatod Wordben 90°-kal. Jó minőségű és gyors, de sajnos az adatok nem lesznek szerkeszthetőek.
Vagy:
Elforgatod az összes szöveget 90°-kal, a sormagasságokat oszlopszélességűre veszed és fordítva, és akkor jó lesz.Cancel all my meetings. Someone is wrong on the Internet.
-
Saua
tag
-
addikt
Sziasztok. Ha egy táblázaton bekapcsolom a korrektúra/lapvédelem funkciót, akkor nem engedi használni az adatok/szűrők törlése gombot se. Tehát ha több szűrőt beállít valaki, utána nem tudja gyorsan alaphelyzetbe állítani, hanem egyesével kell a szűrőket vissza kikapcsolni.
Pedig ez nem szerkesztési művelet csak kényelmi funkció az autószűrőhöz. Ha a lapvédelemnél kipipálnék mindent amit felajánl engedélyezésre, ezt akkor is letiltja. Ezzel nem lehet valamit kezdeni?
Ryzen 7 5700G, 32 GB, RX6600XT, Windows 11
-
Saua
tag
válasz Fferi50 #23708 üzenetére
Köszönöm a segítségeteket de csak nem boldogulok.
Sajnos nagyon korlátozottak az excel ismereteim, azt szeretném ha nem kellene állandóan beírni a város nevét az i oszlopban levő DARABTELI képletbe, hanem a képlet másolható lenne és a városnevek automatikusan kerülnének az G oszlopból a feltétel helyére. Tehát az i oszlopban megjelenjen hogy például Balatonlelle hányszor szerepel az E oszlopban.
Nem világos, hogy hogy néz ki a teljes DARABTELI képlet. -
slashing
senior tag
Ötleteket várnék arra hogyan lehetséges megoldani a következő másolás beillesztést aztán megpróbláom magamtól megcsinálni
Első sor a fejléc és az alatta lévő adatokat kéne átmásolnom egy másik fájlnak ugyan olyan fejléccel rendelkező oszlopába. Fontos a fejléc szerinti cellaérték alapján menni mert változó sorrenben fognak lesznek a fejlécben az adatok egyszer 1x,2x,3x, mások meg lehet hogy csak 1x,4x van
Pl. Ha A1-ben az van hogy 1x akkor a másik fájl azon oszlopába kéne másolnom az adatokat aminek a fejlécében az A1 van, mindezt úgy hogy ismételhető legyen egymás után akárhányszor szóval ha új adat van akkor a második fájlnak mindig a végére rakja de fontos hogy a kiinduló fájl fejlécében lévő szöveg alatti adatok a végleges fájl azonos fejléccel rendelkező oszlopába kerüljenek mindig a végére.
Attól félek hogy baromi lassú lesz, mivel a legdurvább esetben a kiindulási pontban akár 200 fejléces oszlop is lehet és ezek mindegyikét egyesével kell gondolom valahogy ellenőriztetni és átmásolni...
-
Fferi50
őstag
válasz slashing #23716 üzenetére
Szia!
Ha jól értem, akkor a fejlécek különbözőek, csak más-más sorrendben vannak.
Ebben az esetben én a következőt javaslom:
Csinálj egy "átmeneti" táblát(munkalapot), ahová a fejléceket a második táblában levő sorrendbe teszed be. (Praktikusan beillesztesz egy munkalapot és ide bemásolod a második tábla első sorát).Ezután az első tábládra csinálsz egy "advanced filtert", ahol a szűrendő tartomány az első tábla usedrange, a szűrőfeltétel az átmeneti tábla első sora és új helyre másolás helyének kijelölöd az átmeneti tábla első sorát.
Végrehajtod az irányított/speciális szűrést - ekkor az átmeneti tábládban már ugyanolyan sorrendben lesznek az oszlopok, mint a második táblában. Innen már csak egy sima copy kell és az átmeneti tábla törlése.DE még egyszerűbb szerintem a következő:
Szintén advanced filter, a következők szerint:
Szűrendő az első táblád
Feltétel: a második táblád fejléc sora (csak az első sor!)
Másolás helye: a második táblád vége!
Új helyre másolással a szűrés végrehajtása.
Az tábla közben (az eredeti második tábla utolsó sora után) keletkező "álfejléc" sor törlése. Nyilván ezt akkor tudod megtenni, ha megjegyezted, melyik sort jelölted ki másolási célnak.Talán bonyolultnak tűnik, de hidd el egyszerűbb megcsinálni, mint leírni volt.
Én rögtön a második verzióval kezdeném.Üdv.
-
slashing
senior tag
válasz Fferi50 #23719 üzenetére
Csak hogy tuti ne beszéljünk el egymás mellett:
Bal oldalt van 3 variáció ahogy kiköpi a kigyűjtős macrom az adatokat. A jobb oldali végeredményt szeretném elérni. Kigyűjti a macro az adatokat változó fejléccel meghívja a következő macrot ami belerakja a jobb oldali táblába ahol már fix fejléc van csak mindig oda kerül az adat amelyik alá tartozik.
-
slashing
senior tag
válasz slashing #23720 üzenetére
Amúgy én úgy képzelem/képzeltem el hogy először megkerestetem a célfájl azon sorát amiben a legtovább van adat ezt eltározom egy változóban sorazonosítóként aztán van egy ciklusom ami végigfut az első tábla fejlécsorán mégpedig úgy hogy csinál egy keresést a másik fájl fejlécében és ahol megtalálja az egyezőt ott eltározom az oszlop azonosítót ha ez meg van akkor van egy sor és oszlopazonosítom ahova bemásolhatja az adatokat. Arra mondjuk figyelni kell hogy a sorazonosító ne legyen ciklusban nehogy lépcsős legyen az egész. Így leírva milyen egyszerű
-
Fferi50
őstag
válasz slashing #23720 üzenetére
Szia!
Most ellenőriztem, sajnos a speciális szűrés nem megy, mert ha nincs olyan fejléc a szűrendő mezőben, akkor hibát dob (bár nem egészen értem a logikáját, hogy miért, de ez van, ezt kell elfogadni.)
Másik ötlet:
Képlet szinten: Hol.van függvénnyel meghatároznám, hogy az adott fejléc hanyadik oszlopban van a másik táblában és abba az oszlopba kell tenni az adatot. (Nyilván ezt le lehet makróval rendezni (match függvény)).
Tehát: kb.így nézne ki
set mlap1=workbooks("Munkafüzet3").sheets("Munka1")
set mlap2=workbooks("Munkafüzet4").sheets("Munka1")
itt kezdheted az oszlopok ciklusát
oszlop=application.match(mlap1.range("A1").value;mlap2.rows('"1:1"),0)
if not iserror(oszlop) then ' ez csak azért kell, ha mégsem lenne olyan fejléc a másik munkalapon
yy=mlap.cells(40000,oszlop).end(xlup).row+1
for xx=2 to mlap1.range("A2").end(xldown).row
mlap2.cells(yy,oszlop).value=mlap1.cells(yy,"A").value
yy=yy+1
next
else
msgbox "Nincs ilyen fejléc: " & mlap1.range("A1").value
endif
next oszlopokA makró csak szemléltető, nem feltétlenül hibátlan.
Ezt végigcsinálod minden oszlopon, és minden kis táblán.
Ha deklarálod a változókat, az oszlop mindenképpen variant legyen, mert annak értéke hiba is lehet, mint látod.Remélem érthető és tudod használni.
Üdv.
-
Delila_1
Topikgazda
válasz slashing #23720 üzenetére
Nem teljesen olyan, mint a képen, de hasonlít. Ha kevesebb dolgom lesz, megpróbálom azt a formát kihozni.
Sub Oszlopok()
Dim WS1 As Worksheet, WS2 As Worksheet, sor As Long, usor As Long
Dim oszlop As Integer, uoszlop As Integer, cim As String, oszlophova As Integer
Dim WF As WorksheetFunction, sorhova As Long
Set WS1 = Sheets("Munka1")
Set WS2 = Sheets("Munka2")
Set WF = Application.WorksheetFunction
sor = 1
WS1.Select
Do While Cells(sor, 1) <> ""
uoszlop = WS1.Range("A" & sor).End(xlToRight).Column
For oszlop = 1 To uoszlop
cim = Cells(sor, oszlop)
On Error GoTo Tovabb
oszlophova = WF.Match(cim, WS2.Rows(1), 0)
Cells(sor + 1, oszlop).Select
usor = Selection.End(xlDown).Row
sorhova = WS2.Cells(Rows.Count, oszlophova).End(xlUp).Row + 1
Range(Cells(sor + 1, oszlop), Cells(usor, oszlop)).Copy WS2.Cells(sorhova, oszlophova)
Tovabb:
On Error GoTo 0
Next
sor = Range("A" & sor).End(xlDown).Row
sor = Range("A" & sor).End(xlDown).Row
Loop
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz Delila_1 #23723 üzenetére
Meg is van.
Sub Oszlopok_1()
Dim WS1 As Worksheet, WS2 As Worksheet, sor As Long, usor As Long
Dim oszlop As Integer, uoszlop As Integer, cim As String, oszlophova As Integer
Dim WF As WorksheetFunction, sorhova As Long
Set WS1 = Sheets("Munka1")
Set WS2 = Sheets("Munka2")
Set WF = Application.WorksheetFunction
sor = 1
WS1.Select
Do While Cells(sor, 1) <> ""
uoszlop = WS1.Range("A" & sor).End(xlToRight).Column
sorhova = WS2.UsedRange.Rows.Count + 1
For oszlop = 1 To uoszlop
cim = Cells(sor, oszlop)
On Error GoTo Tovabb
oszlophova = WF.Match(cim, WS2.Rows(1), 0)
Cells(sor + 1, oszlop).Select
usor = Selection.End(xlDown).Row
Range(Cells(sor + 1, oszlop), Cells(usor, oszlop)).Copy WS2.Cells(sorhova, oszlophova)
Tovabb:
On Error GoTo 0
Next
sor = Range("A" & sor).End(xlDown).Row
sor = Range("A" & sor).End(xlDown).Row
Loop
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
slashing
senior tag
Köszi, nekem most van egy verzióm ami manuálisan félig kész már csak valahogy ciklusba kellene raknom amit még egyenlőre nem tudom hogyan kell.
Ez most ott tart hogy a keresendo =cells(1,1) itt adom meg neki hogy melyik fejlécet keresse, kijelöli most még csak így manuálisan az Fejléc alatti adatokat(A2 xldown) és másolja, megnyitja a célfájlt, megállapítja az utolsó sort és azonosítja az oszlopot amiben szerepel a cells(1,1) fejléc majd odaugrik annak az oszlopnak az utolsó sorábá és bemásolja az adatokat.
Nah ezt kéne ciklusba rakni valahogy úgy hogy ha berakta az első oszlop adatait visszaugrik kimásolja a B1 alatti adatokat, berakja az afölötti fejléces oszloppal rendelkező oszlopba megint visszaugrik kimásolja a C1 alattit azt is bemásolja a megfelelő fejléccel ellátott oszlopba majd ha már nem talál adatot kilépjen.
Sub akarmdi()
Dim LastRow As Long
keresendo = Cells(1, 1)
Range("A2").Select
Range(Cells(ActiveCell.Row, ActiveCell.Column), Cells(ActiveCell.End(xlDown).Row, ActiveCell.Column)).Select
Selection.Copy
Pathname = "q:\SPC 2010-2012-2013\Bosch\"
Filename = "0000-0000.xlsx"
Workbooks.Open Filename:=Pathname & Filename
LastRow = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastRow = LastRow + 1
oszlopazonositas = Application.Match(keresendo, Workbooks("0000-0000.xlsx").Worksheets("munka1").[1:1], 0)
ActiveSheet.Cells(LastRow, oszlopazonositas).Select
Selection.PasteSpecial Paste:=xlPasteValues
End Sub(#23724) Delila_1 Próbálom
[ Szerkesztve ]
-
slashing
senior tag
-
samfishR
senior tag
válasz m.zmrzlina #23633 üzenetére
Köszi a tippet!
Sajnos a makrókhoz semmi közöm, ebben tudna valaki segíteni?
-
Fferi50
őstag
válasz slashing #23726 üzenetére
Szia!
Azért javaslom, nézd meg ezt is. Egyetlen követelmény, hogy a másolandó adatok az első oszlopban kövessék egymást - úgy ahogyan a képeken is van.
Sub masolo()
Dim mlap1 As Worksheet, masolando As Range, mlap2 As Worksheet, hovasor As Double, hovaoszlop As Double
Set mlap1 = Workbooks("Munkafüzet3").Sheets("Munka1")
Set mlap2 = Workbooks("Munkafüzet4").Sheets("Munka1")
Set terulet = mlap2.UsedRange
hovasor = terulet.Rows.Count
If terulet.Cells(1, hovasor) = "" Then
Do While True
If terulet(1, hovasor).End(xlToRight).Column < terulet.Columns.Count Then Exit Do
hovasor = hovasor - 1
Loop
End If
hovasor = hovasor + 1
Set terulet = mlap1.Range("A1").CurrentRegion
Do While True
For oszlop = 1 To terulet.Columns.Count
hovaoszlop = Application.IfError(Application.Match(terulet.Cells(1, oszlop), mlap2.Rows("1:1"), 0), 0)
If hovaoszlop <> 0 Then
Intersect(terulet, terulet.Offset(1, 0)).Columns(oszlop).Copy mlap2.Cells(hovasor, hovaoszlop)
End If
Next
hovasor = hovasor + terulet.Rows.Count - 1
Set terulet = terulet.Range("A1").End(xlDown).End(xlDown).CurrentRegion
If Intersect(mlap1.UsedRange, terulet) Is Nothing Then Exit Do
Loop
MsgBox "A másolás megtörtént!", vbInformation, "Másolás"
End SubÜdv.
-
slashing
senior tag
válasz Delila_1 #23724 üzenetére
annyi módosításban még segítenél hogy a WS1 az mindig annak a workbooknak az activesheetje legyen ahol éppen áll, mert ezelőtt a kód előtt van egy sheet.add-om a ws2 meg egy fix workbook fix sheetje amibe végül bekerül
(egy mappában lesznek)
Szerk:
(#23728) Fferi50 Nézem, köszi[ Szerkesztve ]
-
Fferi50
őstag
válasz Delila_1 #23724 üzenetére
Szia!
Néhány apró észrevétel:
" Cells(sor + 1, oszlop).Select
usor = Selection.End(xlDown).Row
"A select teljesen felesleges, egyszerűen usor=cells(sor+1,oszlop).end(xldown).row elég.
A worksheetfunction.match helyett célszerűbb az application.match függvényt alkalmazni, (ezt én is egy másik topicban tanultam), mivel így más módon kell a hibakezeléssel foglalkozni.
A ws.match hibát generál, ha nem találja a keresett értéket, az app.match hibaértékkel tér vissza, amit változóban vagy függvényben is "elkaphatsz", akár az iserror, akár az iferror függvény működik. Tehát ebben az esetben nem kell az on error goto vagy on error resume next sor és a hozzá kapcsolódó dolgok.Ha iserrort használsz, akkor "csak" arra kell figyelned, hogy a változó, amibe kéred a match eredményét, variantnak legyen definiálva - mivel értéke lehet szám és lehet hibaérték is. Iferrornál nem kerül a változóba hiba, tehát ott jó a double is.
Üdv.
-
m.zmrzlina
senior tag
válasz samfishR #23727 üzenetére
"A.xlsx" munkafüzetet megnyitod (ez az amiben te módosítasz nem a képletek)
Alt+F11-gyel VB editort megnyitodbal oldalon lesz a projekt tallózó ablakban, egy olyan hogy "VBAProject(A.xlsx)"
természetesen nem (A.xlsx) hanem a te fájlod neve lesz itt.
Ez alatt a ThisWorkBook-on jobbklikk majd View CodeAz így megnyíló ablakba bemáslod a 23634-es hsz-ben lévő kódot.
Ezt a fájlodat (az "A.xlsx"-t amiben te módosítasz nem a képletek) makróbarátként (.xlsm) kell menteni. Onnantól kezdve A.xlsm lesz a neve. Természetesen az "A" helyén a te fájlod neve szerepel.Ezen a két helyen munkafüzetek neveit átírod a saját munkafüzeteid neveire.
Workbooks.Open ThisWorkbook.Path & "\B.xlsx"
Workbooks.Open ThisWorkbook.Path & "\C.xlsx"Mindhárom munkafüzeted legyen ugyanabban a mappában legyen.
-
-
Fferi50
őstag
válasz Snoop-y #23732 üzenetére
Szia!
Ha nem írod, hogy milyen nyelvű és verziójú excel verziót használsz, akkor bizony ilyen előfordulhat. Mivel a fórumon általában magyar nyelvű excellel találkozunk, ezért a magyar nyelvű függvényeket szoktuk megadni (kivéve makró).
De tudjuk ám az angol nevüket is....Üdv.
-
bteebi
veterán
válasz Delila_1 #23614 üzenetére
"Van egy másik, a TNÉV, ami a hivatkozott szöveg minden szavának első betűjét nagyra-, a többit kicsire állítja"
Basszus, pont néhány napja kerestem ezt a függvényt, mert úgy emlékeztem, hogy van ilyen. Sajnos csak a KISBETŰ-t és a NAGYBETŰS-t találtam meg .
Cancel all my meetings. Someone is wrong on the Internet.
-
Delila_1
Topikgazda
válasz Fferi50 #23730 üzenetére
Nem vetted észre a hibakezelést a makrómban, pedig ott van. Ki is próbáltam olyan oszlopcímet adva az első lapon, ami nem szerepel a másodikon. Enélkül nem küldtem volna el.
Jó a worksheetfunction.match ebben az esetben is, csak ismerni kell az alkalmazását.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Fferi50
őstag
válasz Delila_1 #23738 üzenetére
Szia!
Félreértettél, nem azt írtam, hogy nincs hibakezelés a makródban - természetesen láttam, hogy ott van az on error goto tovabb és a tovabb cimke - , sőt, még azt sem írtam, hogy nem jó a ws.match, hanem azt, hogy app.match esetén nem kell külön hibakezelést beépíteni a makróba.
Üdv.
Idézet a 23730-ból:
"A worksheetfunction.match helyett célszerűbb az application.match függvényt alkalmazni, (ezt én is egy másik topicban tanultam), mivel így más módon kell a hibakezeléssel foglalkozni." -
addikt
Szép napot (legalábbis süthetne)
Adott egy excel fájl, amit többen is használnak. Egy illető aki használja, szeretné azt beállítani, hogy megadott cellát zárolvá tegyen úgy, hogy abba ő tudjon beleírni, de más ne. Lehetséges-e ez ? -
adam_
senior tag
Sziasztok!
Adott három oszlop, betontípus, kitéti osztály, és mennyiség. Egy olyan legördülő szűrési opciót szeretnék kialakítani, amelyből ki lehet választani a betontípust és hozzá mellette a hozzá tartozó kitéti osztályát lehozza szintén legördülő listából és az ezekhez tartozó mennyiségeket összeadja egy harmadik mellette lévő oszlopban.
Egy külön részben pedig listázza az osszes kombinaciot eloszor. Mert több betontípushoz több kitéti osztály is tartozhat. Ezt gondolom Fkeressel kéne elsőkörben?
Előre is köszönöm a válaszokat.
[ Szerkesztve ]
-
Delila_1
Topikgazda
Egyszerűen megoldható.
A 2. sorba autoszűrőt teszel. Szűröd a tartományt típusra és kitétre. Az E2 cella képlete
=RÉSZÖSSZEG(9;C:C)
Ez mindig az aktuális szűrésnek megfelelő összeget adja.Kimutatással megoldhatod a kérdésed második részét.
A sorcímkékhez adod a típust, oszlopcímkékhez a kitétet, és az értékekhez a mennyiséget.[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
adam_
senior tag
válasz Delila_1 #23744 üzenetére
Köszönöm megnézem.
Ha mindig szűrök, a képletet is be kell írni újfent az E2 cellában. Az miért nem marad ott egyszerűen? Nekem egy olyan excel tábla kellene, ahol ezt nem kellene mindig beírni, csak ha az ember rászűr, magától kiszámolja az E2-be az összegüket.
[ Szerkesztve ]
-
Delila_1
Topikgazda
Igen, mindegyikre tesz, de nem kötelező minden oszlopodat szűrni. Ha csak a típust szűröd, pl. C30/37-16/F3-ra, akkor 2 féle kitét látszik, a képlet értéke 54. Ha a kitétet is szűröd XC2 XV2 XD2 XA1-re, az eredmény 47.
Jobb, ha kimutatást készítesz, új lapra.
Javaslom, hogy a Munka1 lap A2:C495 tartományát alakítsd táblázattá. Kijelöl, Beszúrás, Táblázatok, Táblázat. Ez azért jó, mert az ebből készített kimutatás ilyenkor a táblázatod bővülésekor az újabb sorok adataival is számol frissítéskor.
Ebből érdemes kimutatást készíteni.Szerk.: a C495-ben helytelen adat van!
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Új hozzászólás Aktív témák
- Windows 10/11 Home/Pro , Office OEM/Retail kulcsok
- Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Canva Pro előfizetés - 1 éves
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! LEGOLCSÓBB! Automatikus 0-24
- Game Pass Ultimate előfizetések 1 - 25 hónapig azonnali kézbesítéssel a LEGOLCSÓBBAN!