Tecnologia, programação e muito Visual FoxPro.

sexta-feira, 25 de setembro de 2009

Re: ]] XL-mania [[ Menentukan Tgl HariKerja Terakhir, dg diketahui Tgl Awal dan LamaProses

 

dear mas HerrSoe(cakil)
Lho kemarinnya Soe-Timbul sekarang kok ganti SoeCakil to mas, he he..

Kiriman dari mas kid sebenarnya sudah cukup; ini siti sekedar ikut-ikutan saja..

1.
mencoba menyelesaikan dengan formula
(lihat sheet III (t formula)

di sini sekalian dimohonkan kepada para empu dan begawan excel
formula composser (bukan makro), untuk memberikan pencerahannya:
apa yg salah di formula tsb sehingga ada 'sepotong' array formula
yg jika dibuat terpisah (sbg kolom dummies / helper) dapat bekerja dgn baik;
tetapi ketika disatukan hasilnya Ellol...
Terima kasih.

2.
karena formula gagal dibuat megaformula maka terpaksa diselesaikan
dengan UDF (lihat sheet I / kasus)

di UDF (fungsi buatan sendiri)  ada argument ExcludeDOW yg agak ribet pengisiannya
tetapi menjadikan fungsi ini gampang diatur; hari kerja dlm 1 week tidak
harus hanya Senin s/d Jumat saja
mau dibuat hari kerja dlm 1 week hanya Selasa saja juga bisa ..

UDF ini idea / algoritma-nya hasil jiplakan dari Excel-Tip ( www.cpearson.com/Excel )
topik "better workday"
tetapi kalau anda sempat membandingkan, akan nyata sudah banyak perubahannya..

UDF nya; seperti ini
(tidak perlu diberi comments lagi..)
'---------------
Enum EnumDOW
   Sunday = 1:    Monday = 2:  Tuesday = 4: Wednesday = 8
   Thursday = 16: Friday = 32: Saturday = 64
End Enum

Function cWORKDAY(StartDate As Date, DaysReq As Long, _
         ExcludeDOW As EnumDOW, Optional Holidays As Variant) As Variant
   '--ctv / 22 sep 2009--
   Dim n As Long, nWokD As Long, LoopLimit As Long
   Dim vDate As Variant, EvalDate As Date
   Dim CurDOW As EnumDOW, IsHoliday As Boolean
  
   Select Case DaysReq
      Case Is < 0: GoTo ctv_Err_Result
      Case Is = 0: cWORKDAY = StartDate: Exit Function
   End Select
   If ExcludeDOW >= 127 Then GoTo ctv_Err_Result
   LoopLimit = DaysReq * 10
   Do Until nWokD = DaysReq
      n = n + 1
      EvalDate = StartDate + n
      CurDOW = 2 ^ (Weekday(EvalDate) - 1)
      If (CurDOW And ExcludeDOW) = 0 Then
         IsHoliday = False
         If Not IsMissing(Holidays) Then
            For Each vDate In Holidays
               If vDate = EvalDate Then
                  IsHoliday = True: Exit For
               End If
            Next vDate
         End If
         If IsHoliday = False Then nWokD = nWokD + 1
      End If
      If n > LoopLimit Then GoTo ctv_Err_Result
   Loop
   cWORKDAY = StartDate + n
   Exit Function
ctv_Err_Result:
   cWORKDAY = CVErr(xlErrValue)
End Function




2009/9/23 HerrSoe <herrsoe@gmail.com>
>
> Ysh:  Moderators & para member milis XL-mania,
>
> Terima kasih, dari milis ini saya mendapat pelajaran berharga: bahwa excel dapat menghitung
> JUMLAH HARI KERJA dari tglMULAI s/d tglAKHIR dimana hari Sabtu dan Minggu = bukan hari kerja
> (diabaikan) dan Hari Libur (yg kita buat List-nya) juga tidak ikut diperhitungkan.
> Dlm Kasus spt itu dipergunakan Fungsi NETWORKDAYS.
> "Bukan-Hari-Kerja"  pada fungsi NetWorkDays sudah tertentu: Sabtu+Minggu.
>
> Dlm palajaran itu juga dicontohkan FORMULA yg menyamai prinsip kerja NETWORKDAYS
> tetapi malah lebih lengkap, yaitu "Bukan-Hari-Kerja"-nya dapat diubah sesuai kehendak / keperluan kita.
> ( ref milis 17sep 09:  http://tech.groups.yahoo.com/group/XL-mania/message/14001 )
>
> Saat ini kami menghadapi keperluan kalkulasi: kebalikan dari NETWORKDAYS, yaitu menentukan
> Tanggal HariKerja Terakhir  bila diketahui  Tanggal Awal dan JUMLAH HARI KERJA yg diperlukan.
> Sedangkan Hari Libur di kantor kami ada 2 aturan:
> 1. Karyawan level tertentu (X) Hari Kerja = Senin -sd- Jumat
> (untuk kasus satu kami sudah menemukan fungsinya : Workday)
>
> 2. Karyawan level tertentu (Y) Hari Kerja = Senin -sd- Sabtu
> 3. Bahkan nantinya direncanakan ada karyawan level tertentu (Z) yg harikerjanya = Senin -sd- Kamis
> Untuk kasus 2 dan 3 selama ini kami masih menghitungnya secara manual di lembar Kalender.
>
> Mohon bantuan dari para XL-maniawan / XL-maniawati ysh, kiranya dapat memberi formulasi
> serta jika mungkin penjelasannya. (terlampir workbook berisi kasus tsb serta tambahan ).
> Sekali lagi terima kasih.
>
> herrsoe
> (herru sucakil... :)

__._,_.___
+-:: XL-mania ::::::::::::::::::::----------------------------------+
| Selamat Idul Fitri... Mohon maap dari momods...                   |
| http://www.facebook.com/group.php?gid=37671048001&ref=mf          |
+-------------------------------------------------------------------+
| DILARANG : MLM, money game, OOT, iklan tanpa izin, SARA, testing, |
| pembicaraan pribadi, one line message,  melecehkan,  tidak sopan. |
+-------------------------------------------------------------------+
| Buat subjek yang kreatif, jangan : "tanya", "help", "mohon bantu" |
| Usahakan besar attachment < 200 kb. Gunakan  winzip  jika  perlu. |
+-------------------------------------------------------------------+
| Ajak teman-teman Anda bergabung dengan mengirim e-mail kosong ke  |
| XL-mania-subscribe@yahoogroups.com atau kirimkan mereka file dari |
| http://groups.yahoo.com/group/XL-mania/files/Promotion/           |
+-------------------------------------------------------------------+
| Berikan testimoni di : http://www.friendster.com/xlmania atau...  |
| http://www.xl-mania.com/2008/06/testimoni-xl-mania.html           |
+-------------------------------------------------------------------+
| Message lama ada di :                                             |
| http://groups.yahoo.com/group/XL-mania/messages [perlu yahoo id]  |
| http://www.mail-archive.com/xl-mania@yahoogroups.com              |
+-------------------------------------------------------------------+
Recent Activity
Visit Your Group
Yahoo! Finance

It's Now Personal

Guides, news,

advice & more.

Yahoo! Groups

Mom Power

Community just for Moms

Join the discussion

Yahoo! Groups

Auto Enthusiast Zone

Auto Enthusiast Zone

Discover auto groups

.

__,_._,___

Nenhum comentário:

Arquivo do blog