-
Fototrend
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
- Mini-ITX
- Bittorrent topik
- Bemutatkoztak az Arctic P Pro Reverse sorozatú, "tükrözött" légkavarói
- Xbox Series X|S
- Lecsap az S26 Ultra az Exynos 2600-ra
- Honor Magic V2 - origami
- Békéscsaba és környéke adok-veszek-beszélgetek
- Rendkívül ütőképesnek tűnik az újragondolt Apple tv
- PROHARDVER! feedback: bugok, problémák, ötletek
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- További aktív témák...
- Dell Precision 5820 XL PC - Xeon W-2123 112GB RAM 512GB SSD 1TB HDD RX 580 GTS 8GB Win 11
- Telefon felvásárlás!! iPhone 13 Mini/iPhone 13/iPhone 13 Pro/iPhone 13 Pro Max
- Bomba ár! Lenovo ThinkPad L540 - i5-4GEN I 16GB I 500SSD I DVDRW I 15,6" HD I Cam I W10 I Garancia
- BESZÁMÍTÁS! Asus H370-A i5 9600K 16GB DDR4 512GB SSD RTX 2060 Super 8GB Zalman T7 Zalman 500W
- GYÖNYÖRŰ iPhone 12 mini 128GB Purple -1 ÉV GARANCIA - Kártyafüggetlen, MS3326, 94% Akkumulátor
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Promenade Publishing House Kft.
Város: Budapest