Tecnologia, programação e muito Visual FoxPro.

quarta-feira, 18 de agosto de 2010

Re: ]] XL-mania [[ Jadwal Ketua

 

Perbaikan coding

Function SiapaJabat(RngRef As Range, Tgl As Date) As String
   ' siti Vi/ 17 Aug 2010 / Merdeka
   ' menggunakan ASUMSI II / penjelasan di sheet 1
   '----------------------------------------------
   Dim r As Long, n As Long, t As Long
   Dim TglArr() As Date, Ada As Long
   SiapaJabat = "Ketua": r = 1
   Do While RngRef(r, 1) <> ""
      For t = CLng(RngRef(r, 1)) To CLng(RngRef(r, 2))
         n = n + 1: ReDim Preserve TglArr(1 To n)
         TglArr(n) = CDate(t)
      Next t
      r = r + 1
   Loop
   On Error Resume Next
   Ada = WorksheetFunction.Match(Tgl, TglArr, 0)
   If Ada > 0 Then SiapaJabat = "Wakil Ketua"
End Function
'------------

Tapi sayangnya
hasilnya tidak persis sama dengan hasil array formula kiriman mas Kid;
untuk tgl-tgl di luar range misal tgl 31 Des 2009  atau 1 Mar 2010, rumus mas Kid
menghasilkan = 0 (penampakan = "Wakil Ketua")  yg artinya saat itu :
Ketua TIDAK DITEMPAT / Ketua Sedang dlm Perjalanan Dinas

Satu lagi, formula ajaib dari mas Kid itu jangan di copy > pasteSpecial Value lho ya...
karena nanti hasilnya akan ber-ubah menjadi nilai 1 atau 0

cmiiw
siti



2010/8/17 STDEV(i) <setiyowati.devi@gmail.com>
jadwalnya kok agak mendua..
dikatakan : Ketua Berangkat 1 Jan 2010    Kembali 5 Jan 2010
Kalau kata "KEMBALI" berarti "sudah di kantor lagi" maka
seharusnya keterangannya: tgl 1Jan  sd tgl 4Jan = Ketua Tidak Ada
di sheet ditulisnya : tgl 1 jan sd tgl 5Jan = Ketua Tidak Ada
mana  yg benar ??

Di lain tempat, di E6 = tgl 5 Jan 2010
hasil di F6  diinginkan = "Ketua"  (artinya saat itu di kantor ada Ketua)?!

aku ikut seperti diinginkan
jika di E6 = tgl 5 Jan 2010  >> hasilnya di G6 = "Ketua"
kalau di E6 tgl 4 jan 2010 barulah hasil di G6 = "Wakil Ketua"

Rumusnya gampang, tulis di F6
=Siapa($A$3,E6)

rujukan ke jadwal ($A$3) hanya perlu 1 cell yaitu cell pertama pada tabal jadwal
tak peduli sampai berapa pun jumlah records /baris pada jadwal-nya;
asal tidak ada record loncat parita / baris kosong ...!!!!!


--------listing code udf Siapa(Cell1Jadwal, Tgl)---------

Function Siapa(RngRef As Range, Tgl As Date) As String
   ' siti Vi/ 17 Aug 2010 / Merdeka
   Dim r As Long, n As Long, t As Long
   Dim TglArr() As Date
   r = 1
   Do While RngRef(r, 1) <> ""
      For t = CLng(RngRef(r, 1)) To CLng(RngRef(r, 2)) - 1
         n = n + 1
         ReDim Preserve TglArr(1 To n)
         TglArr(n) = CDate(t)
      Next t
      r = r + 1
   Loop  
   Siapa = "Ketua"
   For n = 1 To UBound(TglArr)
      If Tgl = TglArr(n) Then
         Siapa = "Wakil Ketua"
         Exit For
      End If
   Next n
End Function
'--------------------------
Tafsir "Al-Assal":
semua Tgl yg ada di RENTANG jadwal (kecuali tgl yg di kolom kedua) disusun kedalam

sebuah array-dinamis 1 dimensi (TglArr) .
Lalu Tgl Kriteria (misal yg ada di E6 itu) dicocokkan (samakah) dgn setiap elemen data
di TglArr, jika ada yg cocok, berarti SIAPA = "Wakil Ketua"
Kalau ndak ada tgl yang cocok ??   (ndak usah dijawab)



2010/8/17 Audra Sakti <Audrasakti@gmail.com>
> Mohon bantuan dari para pakar,
> ceritanya begini, Ketua punya jadwal perjalanan dinas, misalnya dari
> tgl 1-1-10 s/d 15-1-10, dari tgl 3-2-10 s/d 10-2-10 ketua tidak ada,
> yang diinginkan misalnya pada cell E6 terisi tanggal, maka di F6 akan
> muncul Ketua apabila tanggal di E6 tidak termasuk di Jadwal Ketua.
> Untuk lebih jelasnya ada di lampiran. Saya sudah coba pakai logika,
> IF, OR dan AND. memang bisa, tapi rumusnya kepanjangan, bagaimana
> mempersingkatnya?
>


__._,_.___
Recent Activity:
+-:: XL-mania ::::::::::::::::::::----------------------------------+
| selamat menunaikan ibadah puasa... walau perut lapar, tanya excel |
| jalan terus... malu bertanya telat pulang kantor :D :D :D         |
| 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              |
+-------------------------------------------------------------------+
MARKETPLACE

Hobbies & Activities Zone: Find others who share your passions! Explore new interests.


Get great advice about dogs and cats. Visit the Dog & Cat Answers Center.


Stay on top of your group activity without leaving the page you're on - Get the Yahoo! Toolbar now.

.

__,_._,___

Nenhum comentário:

Arquivo do blog