-
GAMEPOD.hu
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
-
Delila_1
Topikgazda
válasz slashing #13671 üzenetére
A második kérdésedre próbálok válaszolni.
Megfordítottam a sorokat és oszlopokat, mert dátumból jóval több lesz, mint az egyéb adatokból, szerintem így jobban átlátható.
Hasraütéssel határoztam meg a délutános-, éjszakai-, és vasárnapi pótlékokat a P1:P3 tartományban. A zöld hátterű részt kell kiállítani, a H:M adja az eredményt, ahol az M értékeit kell az órabérrel felszorozni.
Szerk.: 12 órás éjszakai műszakról nem írtál, mert valószínűleg nem alkalmazzátok.
[ 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.
-
Mutt
aktív tag
válasz slashing #18862 üzenetére
Hello,
A kijelölt helyre kéne beolvasni a segédtáblák-ból az adatokat és ahány nevet írok oda annyival mindig bővülne az a sor...
Ez könnyedén megoldható, egyszerűen hivatkozni kell a cellában a segédtábla mezőjére.
pl. A4-be mehet ez =Segedtabla!A2A zavaró nullákkat pedig egy eyedi számformátummal el lehet tüntetni:
[<>0]Normál;[=0]"";Normál;NormálAz E4-E6-ban lévő függvényeket pedig fel kell készíteni, hogy csak akkor adjanak eredményt, ha A4-C4 mezőkbe van érték. Ehhez egy HA függvény kell.
Ami a képleteket nehezíti az az összevont cellák az A-C oszlopokban, a gond hogy E4 és E5-ben lévő függvények az A4-C4-ből veszik az adatokat. Ezt INDIREKT függvénnyel lehet kezelni.
Felraktam ide egy példát, ahol egyedi számformátumokkal, sok INDIREKT hivatkozással és egy beosztás számítással látható a végeredmény.
Amennyit tudsz ossz meg velünk a fájlból és próbálunk segíteni.
Ha még egy szűrőt is rá lehetne dobni az A3 B3 C3-ra az nagyon jó lenne.
A filterezést az összevonások miatt felejtsd el.üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Mutt
aktív tag
válasz slashing #18868 üzenetére
Hello,
Beletettem a munkabeosztásos fájlodba, hogy csak a segédtáblában feltüntetett neveket írja ki a munkabeosztásos oldalra. A fájl innen tölthető le.
Az eredeti képleteid a az első 9 sorban meghagytam, az én képleteim a 10. sortól kezdve vannak. Célszerű jó sokszor lemásolni őket, én csak a 45. sorig tettem meg.
A nevek kiíratására megoldás az alábbi:
- a Segédtáblák lapra a 15-ös sortól kezdve lehet írni a dolgozó nevét, a műszakot, a munkarendet és a hónapot amelyre ezen adatok vonatkoznak. pl. "Béla A 8 13. jan" - jelenti, hogy Béla idén januárban 8 órás rendben A-műszakban dolgozott. Fontos, hogy egy dolgozó 1 hónapban csak 1 beosztással rendelkezzen, illetve mindenkinek egyedi neve legyen.
- a fent definiált munkarendre tettem 3 dinamikus tartományt, hogy a képleteket ne kelljen módosítanod, ha bővíted ahogy töltöd a beosztásokat. A tartományok: dolgozok - tartalmazza a dolgozók nevét, beosztás - 8 v. 12 órás rendet adja meg, lista - a felsorolt hónapokat.
- a Műszakbeosztas lapon az A-C oszlopokba ezen tartományok segítségével íratom ki a neveket.
Az egyesített cellák miatt csak fordított beviteli sorrendben tudom kiírni őket, de szerintem ez nem zavaró.
A képletek többnyire a SZORZATÖSSZEG függvényt használják, amely képes CSE függvényeket normál függvényként kezelni. Itt az összehasonlítások miatt CSE függvény kell, vagy egy sokadik segédtábla.A fájlod többi részében is egyszerűsítettem. A lényeg, hogy a sok HA vizsgálatba könnyen be lehet kavarodni. Pl. a DE helyett 6:00, DU helyett 14:00 és ÉJ helyett 22:00-t kiíratására és nem egymásba ágyazott HA-kat használtam, hanem egy FKERES-t (a ségédtáblán az AB:AC oszlopokban van, hogy mire kell lefordítani az eredeti szöveget).
A másik egyszerűsítés, hogy a távozik esetén egyszerűen csak hozzáadtam a 8 v. 12 órát az érkezikhez.Még egyedi számformátumot is tettem a C oszlopra, ahol 8 v. 12 van számkánt, így lehet számításokban is használni. A formátuma Normál "órás", így úgy jelenik meg mint ahogy C4-ben te is irtad.
üdv.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
lappy
őstag
válasz slashing #19441 üzenetére
Szia!
Én ismerek ilyen szoftvereket és tényleg pillanatok alatt fel lehet vele a lapvédelmet, füzetvédelmet vagy akár makróval védett részeket is.
Igazából akit érdekel, hogy milyen képlet van mögötte vagy bármi más az könnyen feltöri.Bámulatos hol tart már a tudomány!
-
lappy
őstag
válasz slashing #19446 üzenetére
Mindegy hogy milyen a jelszó, mert az xls fájlban van valahol elmentve amit szinte pillanatok alatt megtalál és add helyette egy másik jelszót, vagy az eredetit ez attól függ melyik programot használod.
Azt nem tudom hogy az Excel milyen módon menti a jelszavakat.Bámulatos hol tart már a tudomány!
-
m.zmrzlina
senior tag
válasz slashing #19441 üzenetére
Az igazat megvallva az Excel lapvédelem nem egy Enigma bonyolultságú védelem
Kb 5 perc alatt feloldható és ebben már benne van az az idő amíg a pc bebootol plusz amíg kiguglizod a megoldást.
Ez utóbbit megspóroltam neked, mindjárt az első (nem szponzorált) találat. Így már csak 3 perc.
[ Szerkesztve ]
-
Delila_1
Topikgazda
válasz slashing #19638 üzenetére
Pl. A2-től az adatok végéig (ha van címsor):
=ofszet($a$2,0,0,darab2($a:$a)-1;1)Ha nincs címsor, A1-től:
=ofszet($a$1,0,0,darab2($a:$a);1)Névadáshoz viszed be a fenti képletek valamelyikét, és az érvényesítésben ezt a nevet adod meg forrásként.
[ 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.
-
Delila_1
Topikgazda
válasz slashing #21728 üzenetére
Meg kell szüntetned az összevonásokat az A oszlopban, mert emiatt nem tudsz autoszűrővel szűrni. Nézz el ide. Ezután már nincs szükség az I:K celláira, helyben tudsz szűrni.
Hogy ne legyenek zavaróak az A oszlop ismétlődő adatai, az A3 cellától lefelé vigyél be feltételes formázást. A képlete =A3=A2, és a karakter színének add meg a cellák háttérszínét.
A feltételes formázás első egyenlőségjelét HA szóként kell értelmezni. Itt: ha az aktuális cella tartalma megegyezik a fölötte lévővel, akkor jöhet a formázás.
Programozó: 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 slashing #21752 üzenetére
Nem értettelek félre, csak javasoltam egy egyszerű megoldást, amit autoszűrővel hajthatsz végre.
Irányított szűrővel is megkaphatnád az eredményt, de ahhoz is minden sorban kellene szerepelnie a sorszámnak. Az Excel módot ad a cellák összevonására, de sok esetben – mint a példádban is – nem tudja helyesen kezelni.Átlátható marad a táblázatod, ha ügyesen adsz feltételes formázást. Az A3 cellától lefelé kell kijelölnöd az A oszlopban kitöltött tartományt, miután megszüntetted a cellák összevonását.
Az egyik képlet a formátumban =A3=A2, itt a karakter színét kell beállítanod a háttér színére, a feltett kép szerint fehérre.
A másik képlet =A3<>A2, ennél egy felső szegélyt kell beállítanod..
A B:C tartomány legyen kívül-belül szegélyezve. Az A oszlop hátterét fehérre állítva a cellarácsok sem zavarják a képet, de a beállításoknál is megszüntetheted a cellarácsok megjelenítését.
Ilyen lesz:
[ 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.
-
Delila_1
Topikgazda
válasz slashing #21754 üzenetére
Feltöltöttem a fájlt ide. Mese a fájlban.
Programozó: 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 slashing #21771 üzenetére
Volt egy bibije, kijavítottam.
Bizonyos esetekben a szerszámok közül az érvényesítés csak az utoljára kiválasztottat adta.Programozó: 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 slashing #21921 üzenetére
Az E1 cella tartalmazza a mindenkori utolsó sor értékét.
Előfordul, hogy 1-2 sor cellái üresen maradnak a táblázat fölött, akkor az oszlop üres celláinak a számát add hozzá az E1 képletéhez. Ha 2 üres cella van az A oszlop tetején, az E1 képlete =darab2(a:a)+2Figyelem! Ha üres cellák is vannak az A oszlopban, az E1 nem az utolsó kitöltött cella sorszámát adja!
[ 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.
-
Louro
őstag
válasz slashing #22001 üzenetére
Én is az összesítőn oldanám meg. Lenne két mező: Mettől és Meddig. Az összegzés pedig a két paraméter között sheet-eket összesítené. (Elgondolkodtam a megvalósításán és valamiért a makró nekem használhatóbb.)
De, ha makró, akkor ugyanúgy kellene a Mettől Meddig mezők és a ciklus a paraméterben megadott értékek között futna le.
Összegző sheet-en lenne valahol a táblázat nagyon végén vagy az első oszlopban lenne.Makróban ennyi lenne:
Dim Mettol As Integer, Meddig As IntegerActiveWorkbook.Worksheets("Osszegzes").Select
Mettol = Cells(1, 1)
Meddig = Cells(2, 1)If Mettol > Meddig Then
MsgBox "Nagyobb a Mettől mező, mint a Meddig."
Else
For i = Mettol To Meddig
itt van az összeadás
Next
End IfMess with the best / Die like the rest
-
slashing
senior tag
válasz slashing #22165 üzenetére
tárgytalan google segített:
Sub ProcessFiles()
Dim Filename, Pathname As String
Dim wb As WorkbookPathname = ActiveWorkbook.Path & "\Files\"
Filename = Dir(Pathname & "*.xls")
Do While Filename <> ""
Set wb = Workbooks.Open(Pathname & Filename)
DoWork wb
wb.Close SaveChanges:=True
Filename = Dir()
Loop
End SubSub DoWork(wb As Workbook)
With wb
'Do your work here
.Worksheets(1).Range("A1").Value = "Hello World!"
End With
End Sub -
slashing
senior tag
válasz slashing #22168 üzenetére
de istenigazából az is tökéletes megoldás nekem ha a mega munkalapra kerül egymás alá.
És akkor a munkafüzeten1-en lenne egy makró indítás gomb a mega lapon meg ott lenne minden fájlból az adat. Ez még jobb is mint a ha külön fájlba menne!faszán össze flood-oltam a fórumot
[ Szerkesztve ]
-
Delila_1
Topikgazda
válasz slashing #22169 üzenetére
[Sub it()
Dim cell As Range, usor As Long
Dim selectRange As Range
usor = Sheets("Munka1").Range("A" & Rows.Count).End(xlUp).Row
For Each cell In ActiveSheet.Range("A3:A" & usor)
If (cell.Value <> "") Then
If selectRange Is Nothing Then
Set selectRange = cell
Else
Set selectRange = Union(cell, selectRange)
End If
End If
Next cell
usor = Sheets("mega").Range("A" & Rows.Count).End(xlUp).Row + 1
selectRange.Copy
Sheets("mega").Range("A" & usor).PasteSpecial Paste:=xlPasteAll, Transpose:=True
End Sub[ 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.
-
Delila_1
Topikgazda
válasz slashing #22169 üzenetére
Az előbbi makró csak a megnyitott fájl adatainak a másolását oldotta meg. A mostaniban a fájlok megnyitása, és zárása is szerepel.
A Pathname változóban írd át az útvonalat. Nem érdemes az összefűzendő fájlokat és azt, amelyikben összefűzöd, azonos mappában tartani.
Sub ProcessFiles()
Dim Filename, Pathname As String, WBN As String
Dim wb As Workbook
WBN = ActiveWorkbook.Name
Pathname = "F:\Eadat\valami\"
Filename = Dir(Pathname & "*.xls")
Do While Filename <> ""
Set wb = Workbooks.Open(Pathname & Filename)
DoWork wb, WBN
wb.Close SaveChanges:=True
Filename = Dir()
Loop
End SubSub DoWork(wb As Workbook, WBN)
Dim usor As Long, cell As Range, selectRange As Range
With wb
usor = .Sheets("Munka1").Range("A" & Rows.Count).End(xlUp).Row
For Each cell In .Sheets(1).Range("A3:A" & usor)
If (cell.Value <> "") Then
If selectRange Is Nothing Then
Set selectRange = cell
Else
Set selectRange = Union(cell, selectRange)
End If
End If
Next cell
usor = Workbooks(WBN).Sheets("mega").Range("A" & Rows.Count).End(xlUp).Row + 1
selectRange.Copy
Workbooks(WBN).Sheets("mega").Range("A" & usor).PasteSpecial Paste:=xlPasteAll, Transpose:=True
End With
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
-
Delila_1
Topikgazda
válasz slashing #22183 üzenetére
Legegyszerűbb, ha minden füzetben a másolandó oldalt az első helyre mozgatod. Ekkor a DoWork makróban a
usor = .Sheets("Munka1").Range("A" & Rows.Count).End(xlUp).Row
sor helyett
usor = .Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
kerül, a
Workbooks(WBN).Sheets("6120-1121 PCB OLDAL").Range("A" & usor).PasteSpecial Paste:=xlPasteAll, Transpose:=True
helyett pedig
Workbooks(WBN).Sheets(1).Range("A" & usor).PasteSpecial Paste:=xlPasteAll, Transpose:=True
Az összegző füzetben is első legyen a lap, ahova bemásolod a többi füzetből az adatokat.
[ 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.
-
Delila_1
Topikgazda
válasz slashing #22185 üzenetére
Akkor ugorj neki újra.
1 db fájlba, különböző lapokra akarod bemásolni több füzet lapjainak a tartalmát?
A gyűjtő füzet lapjait úgy nevezted el, hogy a név egyúttal a mappa neve, ahonnan be akarod gyűjteni az adatokat?Ahonnan másolsz, azok a füzetek hány lapot tartalmaznak?
Programozó: 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
-
Delila_1
Topikgazda
válasz slashing #22192 üzenetére
Próba nélkül az első makró (nálam most éppen bedöglött az Excel).
Sub ProcessFiles()
Dim Filename, Pathname As String, WBN As String, WS As String
Dim wb As Workbook
Application.ScreenUpdating = False
WBN = ActiveWorkbook.Name
WS = ActiveSheet.Name
Pathname = "C:\teszt\" & WS & "\"
Filename = Dir(Pathname & "*.xlsx")
Do While Filename <> ""
Set wb = Workbooks.Open(Pathname & Filename)
DoWork wb, WBN, WS
wb.Close SaveChanges:=True
Filename = Dir()
Loop
Application.ScreenUpdating = True
End SubBármelyik oldalról indítva elméletileg a saját könyvtárából hívja be, és másolja a füzetek adatait.
[ 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.
-
Delila_1
Topikgazda
válasz slashing #22192 üzenetére
A DoWork makró End With fölötti sora legyen
Workbooks(WBN).Sheets(WS).Range("A" & usor).PasteSpecial Paste:=xlPasteAll, Transpose:=True
Szerk.:
Inkább leírom a 2. makrót is.
Sub DoWork(wb As Workbook, WBN, WS)
Dim usor As Long, cell As Range, selectRange As Range
With wb
usor = .Sheets("Munka1").Range("A" & Rows.Count).End(xlUp).Row
For Each cell In .Sheets(1).Range("A3:A" & usor)
If (cell.Value <> "") Then
If selectRange Is Nothing Then
Set selectRange = cell
Else
Set selectRange = Union(cell, selectRange)
End If
End If
Next cell
usor = Workbooks(WBN).Sheets(WS).Range("A" & Rows.Count).End(xlUp).Row + 1
selectRange.Copy
Workbooks(WBN).Sheets(WS).Range("A" & usor).PasteSpecial Paste:=xlPasteAll, Transpose:=True
End With
End Sub[ 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.
-
Delila_1
Topikgazda
válasz slashing #22195 üzenetére
Szívesen.
Igen, a WS változó az aktív lap nevét tárolja, és ezt adja át a Pathname változónak is.
Kiteszed a gombot az első 6120-... lapra, hozzárendeled a ProcessFiles makrót. A gombon a szöveg olyasmi lehet, hogy Adatok bemásolása. Ezt a gombot másolod az összes többi lapra. Bárhonnan indítod, mindig a saját könyvtárából hívja be a fájlokat.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
- Az NVIDIA szerint a partnereik prémium AI PC-ket kínálnak
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Xbox Series X|S
- Anglia - élmények, tapasztalatok
- Konzolokról KULTURÁLT módon
- BestBuy ruhás topik
- Milyen billentyűzetet vegyek?
- 3D nyomtatás
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Kihívás a középkategóriában: teszten a Radeon RX 7600 XT
- További aktív témák...
- Adobe Creative Cloud - 2024. 04. 05 - 2025. 04. 05-ig
- Steam, Windows, Origin kulcsok, előfizetések közvetlenül a kiadótól, a LEGJOBB ÁRON!
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- World of Warcraft Shadowlands Collectors edition EU EN
- PC JÁTÉKOK (OLCSÓ STEAM, EA , UPLAY KULCSOK ÉS SOKMINDEN MÁS IS 100% GARANCIA )