Hirdetés
- ASUS Maximus VIII Ranger Z170 6-7-8-9-10 gen támogatás (Coffeetime mod)
- DFI és DFI Lanparty gyűjteményem
- Möbelix Milan íróasztal - a tapasztalatok összeszerelés után.
- Keychron V6 Max (HU) Mechanikus vezetéknélküli billentyűzet (Bluetooth, RF, USB)
- Újjászületés: szombattól új szerverkörnyezetben a PROHARDVER!
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- GoodSpeed: Pillangóhatás: F billentyű meghibásodása -új gamer számítógépasztal
- Brogyi: CTEK akkumulátor töltő és másolatai
- sh4d0w: Ez van, srácok...
- GoodSpeed: Möbelix Milan íróasztal - a tapasztalatok összeszerelés után.
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Fire/SOUL/CD: INGYENES Clone és Backup-Restore alkalmazások tesztje [2024]
-
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
-
Cifu
félisten
válasz
Árnymester #26982 üzenetére
Próbálkozom, de sehogy sem sikerül....
A probléma (ha jól látom) a következő:
A nekem nem külön munkalapokra, hanem komplett excell fájlokba kellene másolnom, tehát a '2014q3.xlsx' fájl 'munkalap1' munkalapján vannak az adatok, a második oszlopba vannak a vonalkódok, aztán az adatok a következőkbe (pár oszlop lényegtelen a számomra).
Ezekből kéne 'C oszlop' nevű új workbookot (.xlsx) fájlt létrehozni, amelybe átmásolom az adott sor bizonyos celláinak tartalmát, majd a fájlt bezárni, és folytatni a következő sorral.
Szóval valami ilyesmi lenne (csak ez még mindig nem működik
):
Sub WorkbooksAdd()
Dim munkalap1 As Worksheet
Dim wborig As Workbook
Dim r As Integer, count As IntegerSet wborig = "2014q3_int.xlsx"
Set munkalap1 = ActiveSheet
r = 5
Do Until Not IsEmpty(munkalap1(r, B))Application.ScreenUpdating = False
y = (wborig.munkalap1(r, C)
strPath = ThisWorkbook.Path
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=y.Name
'Címsor másolása
ActiveSheet.Cells(1, 1).Value = wborig.munkalap1.Cells(4, B)
ActiveSheet.Cells(1, 2).Value = wborig.munkalap1.Cells(4, C)
ActiveSheet.Cells(1, 3).Value = wborig.munkalap1.Cells(4, D)
ActiveSheet.Cells(1, 4).Value = wborig.munkalap1.Cells(4, K)
ActiveSheet.Cells(1, 5).Value = wborig.munkalap1.Cells(4, T)
'Adatok másolása
ActiveSheet.Cells(2, 1).Value = wborig.munkalap1.Cells(r, B)
ActiveSheet.Cells(2, 2).Value = wborig.munkalap1.Cells(r, C)
ActiveSheet.Cells(2, 3).Value = wborig.munkalap1.Cells(r, D)
ActiveSheet.Cells(2, 4).Value = wborig.munkalap1.Cells(r, K)
ActiveSheet.Cells(2, 5).Value = wborig.munkalap1.Cells(r, T)For Each wb In Application.Workbooks
If Not wb.Name = ThisWorkbook.Name Then wb.Close SaveChanges:=Truer = r + 1
LoopApplication.ScreenUpdating = True
End Sub
-
Delila_1
veterán
válasz
Árnymester #26973 üzenetére
Erre a feladatra nem készült fel az MS, mert állítólag közel-távol csak nálunk gyakorlat a munkanapok áthelyezése.
-
Fferi50
Topikgazda
válasz
Árnymester #26951 üzenetére
Szia!
Nem tudom milyen excel verziód van...
2010-től már létezik az ÖSSZ.MUNKANAP.INTL (NetworkDays_Intl) függvény, amelynek megadhatod, hogy mely napok számítanak ünnepnapnak.
Paraméterek: Kezdő nap, Befejező nap, Hétvége jele (itt több variációt is megadhatsz, pl. hogy csak vasárnap a hétvége), Ünnepnapok
Ha például megadod, hogy csak vasárnap a hétvége, az ünnepnapok között felsorolod az összes nem dolgozós szombatot is a tényleges ünnepek mellett, akkor jól fog számolni.Üdv.
-
Delila_1
veterán
válasz
Árnymester #26965 üzenetére
Köszi a rangot
-
Delila_1
veterán
válasz
Árnymester #26961 üzenetére
Jó lenne, amit írtam, ha nem hagyom ki belőle a szombat és vasárnap kivonását. Így jár, aki kapkod.
Hétvégékkel a makró
Function Munkanap(kezd As Date, vegez As Date)
Dim MN As Integer, ido As Integer, valami
MN = vegez - kezd
For ido = 0 To MN
valami = kezd + ido
If Weekday(valami, 2) > 5 Then MN = MN - 1
If Application.WorksheetFunction.CountIf(Range("E1:E20"), valami) > 0 Then MN = MN - 1
If Application.WorksheetFunction.CountIf(Range("G1:G10"), valami) > 0 Then MN = MN + 1
Next
Munkanap = MN
End FunctionSzerk: magyarázat
A kezd dátumhoz a For-Next ciklusban egyenként hozzáadom a két dátum közötti különbséget. Ha a kezd=2015.04.03, akkor a ciklusban az első érték ugyanez lesz (mert közben rájöttem, hogy ha 1-gyel kezdem a ciklust, az első napot nem veszi figyelembe). Ha ez a nap ünnep (szerepel az E oszlopban), vagy hétvége, akkor az össznapból (MN) levon 1-et. Ha viszont szombat, és munkanap, akkor hozzáad az MN-hez 1-et.
A ciklusban a következő esetben a 2015.04.04-et vizsgálja hasonló módon. -
Delila_1
veterán
válasz
Árnymester #26953 üzenetére
Rosszul írtam, felcseréltem a + és - jelet a két If kezdetű sorban. Bocsi, írd át!
-
Delila_1
veterán
válasz
Árnymester #26953 üzenetére
Írtam hozzá egy felhasználói függvényt. Az ünnepnapokat az E1:E20; a rendkívüli munkanapokat a G1:G10 tartományba írtam be. Ezt a két tartományt írd át a makróban a saját területeidre.
Function Munkanap(kezd As Date, vegez As Date)
Dim MN As Integer, ido As Integer, valami
MN = vegez - kezd
For ido = 1 To MN
valami = kezd + ido
If Application.WorksheetFunction.CountIf(Range("E1:E20"), valami) > 0 Then MN = MN + 1
If Application.WorksheetFunction.CountIf(Range("G1:G10"), valami) > 0 Then MN = MN - 1
Next
Munkanap = MN
End FunctionA függvény alkalmazása:
=munkanap(A3;A2), ahol az A2 a kezdő-, A3 a végző dátum.
-
Delila_1
veterán
válasz
Árnymester #26951 üzenetére
A NETWORKDAYS függvényt használd. Ennek az utolsó paramétere az a tartomány legyen, ahol az év ünnepnapjait megadod.
Új hozzászólás Aktív témák
- Mikrotik routerek
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Battlefield 6
- Kormányok / autós szimulátorok topikja
- sziku69: Szólánc.
- Kínai és egyéb olcsó órák topikja
- Luck Dragon: Asszociációs játék. :)
- Telekom mobilszolgáltatások
- Yettel topik
- Nyíregyháza és környéke adok-veszek-beszélgetek
- További aktív témák...
- Lenovo magyar laptop billentyűzetre van szükséged? Akármelyik verzióban segítünk!
- HIBÁTLAN iPhone XS 64GB Gold -1 ÉV GARANCIA - Kártyafüggetlen, MS3030, 100% Akkumulátor
- Motorola Edge 40 Pro 256GB, Kártyafüggetlen, 1 Év Garanciával
- REFURBISHED és ÚJ - Lenovo ThinkPad 40AY Universal USB-C Dock
- Corsair K70 RGB TKL // EU // Számla + Garancia //
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Laptopműhely Bt.
Város: Budapest