Wa'alaikumussalam wr wb

Syntax array formulanya begini :
=Abs( Small( IFError( 1 * Text( (  tgl - IF(  *nHari *< 0 , 399 ) + Row(
$1:$400 ) ) * IsError( Match(  tgl - IF(  *nHari *< 0 , 399 ) + Row( $1:$400
) ,  *LibSpec  *, 0 ) ) * IsError( Find( Weekday(  tgl - IF(  *nHari *< 0 , 399
) + Row( $1:$400 ) ) , *dLibur* ) ) * IF(  *nHari *< 0 , -1 , 1 ) , "0;-0;"
) , "" ) , Max( Abs(  *nHari  *) , 1 ) ) )

Kalau disusun per blok jadi begini :
=Abs(
    Small(
        IFError( 1
                * Text(
                        (  tgl - IF(  *nHari *< 0 , 399 ) + Row( $1:$400 )
)
                        * IsError( Match(  tgl - IF(  *nHari *< 0 , 399 ) +
Row( $1:$400 ) ,  *LibSpec  *, 0 ) )
                        * IsError( Find( Weekday(  tgl - IF(  *nHari *< 0 , 399
) + Row( $1:$400 ) ) , *dLibur* ) )
                        * IF(  *nHari *< 0 , -1 , 1 )
                        , "0;-0;"
                    )
                , ""
        )
        , Max( Abs(  *nHari  *) , 1 )
    )
)

Batasan :
1. Excel 2007 only
2. Untuk hari libur berturut-turut (libur nasional + libur mingguan)
maksimal 399 hari kecuali disesuaikan pada bagian 399  dan $1:$400($400
selalu 399  +1)
3. Sesuaikan dengan regional setting setempat dalam penggunaan tanda koma
di dalam formula
4. Sesuaikan dengan regional setting setempat dalam penggunaan tanda titik
koma di dalam number format (bagian 0;-0; )

Elemen :
tgl  : nilai tanggal acuan bertipe datetime
*nHari  *: jumlah hari kerja target bertipe numerik bilangan bulat dengan
kondisi :
              <0 -> N hari kerja sebelum tanggal acuan;
              =0 -> 1 hari kerja mulai tanggal acuan;
              >0 -> N hari kerja setelah tanggal acuan;
*LibSpec  *: daftar tanggal libur spesial bertipe datetime seperti tanggal
hari libur nasional dan sebagainya
*dLibur*  : kombinasi nomor hari libur mingguan dengan Minggu adalah hari
ke-1, contoh :
                  16 -> hari libur mingguan di hari Minggu dan Jumat
                  6224 -> hari libur mingguan di hari Jumat, Senin, dan
Rabu (tidak memperhitungkan urutan)

Proses :
1. bunyi (  tgl - IF(  *nHari *< 0 , 399 ) + Row( $1:$400 ) )  : daftar
tanggal yang akan diperiksa sebagai hari kerja
2. bunyi IsError( Match(  tgl - IF(  *nHari *< 0 , 399 ) + Row( $1:$400 )
,  *LibSpec  *, 0 ) )  : status hari kerja dari daftar tanggal yang selain
tanggal libur spesial
3. bunyi IsError( Find( Weekday(  tgl - IF(  *nHari *< 0 , 399 ) + Row(
$1:$400 ) ) , *dLibur* ) )  : status hari kerja dari daftar tanggal yang
selain hari libur mingguan
4. hari kerja dari daftar tanggal adalah tanggal dalam daftar tanggal (poin
1) yang memenuhi 2 syarat (poin 2 *dan[ setara * ]* 3) tersebut
5. bunyi IF(  *nHari *< 0 , -1 , 1 ) : membalik urutan Ascending daftar
tanggal dengan tanggal bukan hari kerja adalah 0 (poin 4) agar bisa tetap
terurut dengan Small
6. bunyi Text( [formula poin 1 sampai 5] ,  "0;-0;" ) : membuang daftar
tanggal bernilai 0 (bukan hari kerja)
7. bunyi 1 * [poin 6] : mengubah tipe data daftar hari kerja (poin 6)
[tanggal bukan hari kerja sudah dibuang] menjadi bertipe numerik atau
datetime serial number
8. bunyi IFError( [poin 7] , "" )  : mengubah lokasi tanggal bukan hari
kerja menjadi bertipe text bernilai nullstring agar tidak diproses oleh
Small
9. bunyi Small( [poin 8] , Max( Abs(  *nHari  *) , 1 ) ) : mengambil
tanggal kerja ke-N dari daftar tanggal kerja yang terurut Asc berdasar
hasil poin 8
    dengan bunyi Max( Abs(  *nHari  *) , 1 ) sebagai pengatur tanggal hari
kerja yang diambil adalah hari ke-N yang minimal 1 dari hasil pengurutan
bagian Small
10. bunyi Abs( [poin 9] ) : mengubah hasil poin 9 menjadi nilai hasil yang
bertipe datetime serial number

Contoh : (regional setting English)
A1 berisi tanggal acuan 2016-06-02 (hari Kamis)
*B1 *berisi jumlah hari kerja target 2
*C1 *berisi daftar hari libur mingguan minggu dan jumar 16
*i1:i5* berisi daftar libur spesial di tanggal 30 dan 31 Mei 2016, 2 Juni
2016, 6 dan 7 Juni 2016

Cells hasil di D1, diisi array formula : (entry formula dengan CTRL SHIFT
ENTER)
=Abs(
    Small(
        IFError( 1
                * Text(
                        (  A1 - IF(  *B1 *< 0 , 399 ) + Row( $1:$400 ) )
                        * IsError( Match(  A1 - IF(  *B1 *< 0 , 399 ) +
Row( $1:$400 ) ,  *i1:i5* , 0 ) )
                        * IsError( Find( Weekday(  A1 - IF(  *B1 *< 0 , 399 )
+ Row( $1:$400 ) ) , *C1 *) )
                        * IF(  *B1 *< 0 , -1 , 1 )
                        , "0;-0;"
                    )
                , ""
        )
        , Max( Abs(  *B1 *) , 1 )
    )
)

Sepertinya, hasilnya adalah 8 Juni 2016 (hari Rabu) karena hari kerja ke-1
adalah Sabtu 4 Juni 2016 dan hari kerja ke-2 adalah 8 Juni 2016

Kalau B1 diganti menjadi 0, berarti hasilnya hari itu juga BILA hari itu
adalah hari kerja. Ketika hari itu adalah BUKAN hari kerja, maka hasilnya
ke 1 hari kerja setelahnya.
Karena A1 (2 Juni 2016) adalah hari libur spesial (ada di i1:i5), maka akan
ke 1 hari kerja setelahnya, yaitu Sabtu 4 Juni 2016 (Jumat 3 Juni 2016
adalah libur mingguan C1 bernilai 16)

Kalau B1 diganti menjadi -2, maka akan mencari hari kerja sebelum A1 dan
sepertinya hasilnya adalah 28 Mei 2016 (Sabtu)
karena hari kerja ke-1 sebelumnya adalah 1 Juni 2016 dan hari kerja ke-2
sebelumnya adalah 28 Mei 2016 (30 dan 31 mei hari libur spesial, 29 mei
2016 hari libur mingguan)

Selamat mencoba...

Wassalamu'alaikum wr wb
Kid






2016-06-01 14:20 GMT+07:00 Ayub Barin [email protected] [belajar-excel] <
[email protected]>:

>
>
> Yth, Masters
> Assalamualaikum wr.wb
>
> Maaf masters saya lagi, kali ini tetap seperti hal yang lalu "minta
> pertolongan",
> Pada Excel 2010 fasilitas menghitung hari kerja tersedia :
> Workday = menghitung 5 hari kerja
> Workday.intl = bisa menghitung 6 hari kerja (membaca hari sabtu)
> (Dalam kasus : tanggal awal dan jumlah hari diketahui, mencari tanggal
> akhir dengan menghitung hanya hari kerja)
>
> Masalah yg ditemukan :
> Pada excel 2007
> Workday.intl yang menghitung 6 hari kerja tidak tersedia, mohon master
> berkenan memberi saya VBA/rumus pengganti workday.intl (menghitung jumlah
> hari kerja termasuk hari sabtu dan tidak termasuk hari libur nasional dan
> hari minggu)....atas bantuan diucapkan terima kasih.
>
> Wassalamualaikum.wr.wb
> Hormat Saya
>
> 
>

Kirim email ke