Minggu, 25 November 2012

[belajar-excel] Digest Number 1929

11 New Messages

Digest #1929
1a
rumus formula dipakai di userform by "ngademin Thohari" ngademinth
1b
Re: rumus formula dipakai di userform by "Mr. Kid" nmkid.family@ymail.com
2a
memakai Material control userform by "ngademin Thohari" ngademinth
2b
Re: memakai Material control userform by "Mr. Kid" nmkid.family@ymail.com
3a
Re: Menulis formula di makro by "Mr. Kid" nmkid.family@ymail.com
4a
Re: Menghitung Bonus/insentif customer by "Mr. Kid" nmkid.family@ymail.com
5a
Re: Membuat Kontrol Stock by "Mr. Kid" nmkid.family@ymail.com
6a
Re: berhenti dari milis by "Mr. Kid" nmkid.family@ymail.com
7a
Re: CUTI KARYAWAN-BAGAIMANA RUMUS EXCELNYA? by "Mr. Kid" nmkid.family@ymail.com
8.1
8.2
Re: Tes kecepatan macro ambil tanggal by "Mr. Kid" nmkid.family@ymail.com

Messages

Sat Nov 24, 2012 11:26 pm (PST) . Posted by:

"ngademin Thohari" ngademinth

Be-exceller

apakah rumus formula bisa dipakai di userform?

Terima kasih

amin

Sun Nov 25, 2012 12:57 am (PST) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Pak Amin,

Bisa dijelaskan lebih detil ?
Rumus atau formula sepertinya sam saja.
Excel mengkalkulasi formula atau rumus yang berisi kalimat susunan proses
kalkulasi.
VBA memproses baris perintah (script) bukan formula.

Bisa jadi salah satu perintah (script) VBA adalah :
1. memasang formula di cells Excel.
2. mengkalkulasi suatu proses hitung memanfaatkan fungsi Excel, tetapi
bahasanya tidak seperti bahasa formula yang diawali sama dengan dan
sebagainya.
3. memerintahkan Excel untuk mengkalkulasi suatu kalimat formula tertentu.
Jadi bukan VBA yang mengkalkulasi.

UserForm adalah salah satu object yang menjadi anggota VBA. Maka kemampuan
script VBA bisa diterapkan ke UserForm. Yang jelas, seluruh kalkulasi
item-item dalam UserForm harus dilakukan dengan menyusun algoritma
kalkulasi dengan VBA.
Contoh, jika ada textbox masa kerja dan textbox nilai bonus, jika ingin
mengkalkulasi untuk masa kerja sekian dapat bonus sekiun, maka hal ini
harus dilakukan VBA melalui banyak IF atau yang lainnya yang tersusun dalam
berbaris-baris perintah, dan ndak mungkin dengan formula seperti =VLookUp
blablabla.
Nah cara susun algoritma itulah yang harus dipelajari semua orang yang
ingin berusaha mengotomasi sesuatu.

Cara lainnya adalah dengan menuliskan nilai inputan dari text box ke sebuah
cell, dan di cell lain sudah atau kemudian dipasang formula kalkulasi.

Mungkin demikian,

Wassalam,
Kid.

2012/11/25 ngademin Thohari <ngademinth@yahoo.co.id>

> **
>
>
> Be-exceller
>
> apakah rumus formula bisa dipakai di userform?
>
> Terima kasih
>
> amin
>
>
>

Sat Nov 24, 2012 11:26 pm (PST) . Posted by:

"ngademin Thohari" ngademinth

.Be-exceller

terima kasih kepada alm. mba siti vi, yang telah memberikan pembelajaran sehingga bermanfaat,

memodifikasi dari milis mba siti vi saya ingin membuat input material contol dengan menggunakan user form, gabungan dari pembelajaran mr. kid dan rekan2, master2 yang lain,

saya lampirkan data2nya, dimana data tersebut adalah excel yang akan saya ganti memakai userform

terima kasih

amin

Sun Nov 25, 2012 1:07 am (PST) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Pak Amin,

Kalau saya,
1. Buat sebuah sheet baru anggap saja sebagai coretan_input. Isinya hanya
header dan sebuah baris data termasuk formulanya. Semua cell yang nilainya
tergantung control textbox dibiarkan kosong
2. Semua textbox yang diinput user, setiap ada pengubahan isi (event
change) melakukan penulisan ke cell terkait di sheet coretan_input tadi.
3. Semua textbox yang merupakan hasil formula, mengambil nilai cell dari
sheet coretan_input yang berisi formula yang terkait
4. ketika tombol Simpan, lakukan copas value dari sheet coretan input ke
baris tujuan di sheet data (milik anda namanya form input)

itu kalau saya loh ya, soalnya males repot. Biarkan Excel membantu
semaksimalnya saja. Toh satu atau banya sheet coretan juga gak ada efeknya,
karena cuma dipakai secara lokal.

Wassalam,
Kid.

2012/11/25 ngademin Thohari <ngademinth@yahoo.co.id>

> **
>
>
> .Be-exceller
>
> terima kasih kepada alm. mba siti vi, yang telah memberikan pembelajaran
> sehingga bermanfaat,
>
> memodifikasi dari milis mba siti vi saya ingin membuat input material
> contol dengan menggunakan user form, gabungan dari pembelajaran mr. kid dan
> rekan2, master2 yang lain,
>
> saya lampirkan data2nya, dimana data tersebut adalah excel yang akan saya
> ganti memakai userform
>
> terima kasih
>
> amin
>
>
>
>

Sun Nov 25, 2012 12:20 am (PST) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Dimohon file lampiran pada posting berikutnya tidak melebihi batas
peraturan milis.

mbak Emi,

File terlampir memanfaatkan sebuah sheet berisi template formula alias
formula yang bisa di-copy ke sheet target.
Prosesnya :
1. menghitung jumlah record input (berdasar kolom D)
2. membersihkan hasil lama yang di target
3. copy formula dari template formula ke sheet target sebanyak jumlah
record di input
4. di-values-ken

Wassalam,
Kid.

2012/11/23 Emi <emilestariklcc@yahoo.com>

> **
>
>
>
> Guru dan teman BeExcel,
> Data di sheet ini adalah hasil input manual di sheet "InputArea"
> Saya mau mempelajari bagaimana menulis makro sebagai ganti kepada
> formula .
> Artinya semua formula di sheet ini ditulis di VBE dan bukan di sheet ini.
> Terima kasih
> -Emi Lestari
>
>
>
>

Sun Nov 25, 2012 12:25 am (PST) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Pak Jonson,

Mungkin sebaiknya Bapak menjelaskan lebih rinci tentang hal-hal yang akan
dikalkulasi.
Bisa jadi banyak BeExceller yang tidak memahami kasus seperti demikian
karena bidang kerjanya berbeda dengan Anda.

Wassalam,
Kid.

2012/11/23 jonson dahrino <jonson_dahry@yahoo.co.id>

> **
>
>
> Dear master excel,
> saya sudah hampir nyerah nih dengan kasusu in (heheheheh.....)
> mohon bantuannya ya..
>
> pada intinya adalh perhitungan bonus dengan berbagai kriteria dan level
> pencapaiannya
>
> aturannya ada di sheet scheme dan bonusnya dihitung progresif
>
> saya lampirkan filenya juga :
>
>
>
>

Sun Nov 25, 2012 12:46 am (PST) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Pak Odhy,

Coba disiapkan hal berikut :
1. tabel referensi nama seluruh material, seluruh salesman

2. menyusun tabel data stok (header saja dulu), yang kira-kira akan ada
kolom :
>> tanggal dan waktu -> waktu terima atau ambil
>> kode barang -> yang dikontrol
>> status -> terima jika terima barang baru, return jika kembalian, ambil
jika pengambilan
>> penerima -> gudang jika penerimaan, sales atau marketing jika pengambilan
>> pemberi -> purchase atau atapa kalau terima barang baru, sales atau
marketing jika terima dari return, gudang jika diambil sales atau marketing
>> qty -> positif jika gudang terima barang, negatif jika gudang
mengeluarkan barang
>> saldo -> saldo terakhir kode barang sebelum baris tersebut ditambah qty
baris tersebut

3. buat sheet input penerimaan barang dan sheet input pengambilan barang.
Dua sheet ini juga memungkinkan untuk digabung. Biasanya, dengan
memisahkannya (input terima sendiri dan input ambil sendiri) akan
memudahkan pengembangannya dikemudian hari. Bentuk akhir dari semua input,
sebaiknya tersusun seperti tabel data (nomor 2), sehingga VBA untuk copy
inputan (hasil entry user) ke sheet data akan lebih sederhana.
*Bukan berarti hal ini maka bentuk form input seperti susunan sheet data
loh ya*
Seindah apapun bentuk form inputan, sebaiknya didapatkan baris-baris hasil
inputan yang sederhana seperti susunan sheet data.

4. buat summary saldo menggunakan pivot table pada sebuah sheet
5. buat summary penerimaan barang menggunakan pivot nomor 4 di sheet lainnya
6. buat summary apa saja berdasar pivot nomor 4
7. buat sheet-sheet output yang dibutuhkan dan *bisa jadi *akan lebih mudah
memanfaatkan pivot yang sudah ada.

Wassalam,
Kid.

2012/11/23 rodhy hakim <odhyz83_assasaky@yahoo.com>

> **
>
>
> Dear Para Master,****
> Mohon masukan kira-kira bagaimana bentuk Kontrol Stock gudang menggunakan
> exel dengan kriteria sebagai berikut ;****
> 1. Penerimaan Barang (terdiri dari item code, Nama material dan Jumlah)
> misal material : 10 jenis (material kadang-kadang berubah)****
> 2. Pengambilan Barang****
> a. Pengambilan Salesman masing salesman, salesman: 16 org (
> pengambilan Pagi dan Pengambilan Siang (senin,selasa,rabu,kamis jumat))***
> *
> b. Pengambilan Marketing****
> 3. Pengembalian (sisa penjualan) tiap harinya. dan****
> 4. Total/ Saldo barang tiap harinya.****
> Sehingga bisa memudahkan mengontrol stock gudang perhari, perbulan atopun
> pertahun.****
> Atas masukan para master saya ucapkan banyak terima kasih.****
> Salam,
> Odhy
>
>
>

Sun Nov 25, 2012 12:48 am (PST) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

oh yang ini re-post ya, dan yang aktif adalah di thread satunya.

Wassalam,
Kid.

2012/11/22 indria pie <mas_pie3@yahoo.co.id>

> **
>
>
> Yth. Master Excel
>
> mohon kami dibantu untuk permasalahan tentang formula excel untuk cuti
> karyawan
>
> mohon solusi dan pencerahannya ?
>
> terima kasih sebelumnya
>
> salam,
> snupy
>
>
>

Sun Nov 25, 2012 1:00 am (PST) . Posted by:

"lkm jktind" lkmjkt

Pak Kid.

Bila memakai range. maka yg di pakai adalah offset dari activecell yg
sebagai pedomannya. (di Tes_01 dan Tes_03) di kerjakan baris kebaris
berikutnya
cells(1,1).select
*ActiveCell*.Offset(0, 2).FormulaR1C1 =
"=TEXT(RC[-2],""dd/mm/yy"")"
di Tes_01
With* ActiveCell * .Offset(i - 1, 4).FormulaR1C1 = "=TEXT
(RC[-4],""dd/mm/yy"")"
pemakaian* Offset* menjadi sangat dominan. misalnya :
activecell.offset(0,6) = activecell.offset(0,-4) * activecell.offset(0,-3)

Bila di Tes_02 : Dim r As Long *Active rows* yg sebagai
pedomannya. di kerjakan baris kebaris berikutnya
cells(1,1).select
Cells(r, 4) = Left(Cells(r, 1), 10)
untuk perkalian . menjadi : Cells(r,7) = cells(r,2) * Cells(r,3)

Bila Di Tes_04 : *Activerange* yg sebagai pedomannya.
untuk melaksanakan seperti perkalian diatas . (columns(2) *
colums(3)) = pada rows yg sama.
Apakah bisa dipakai : activerange.offset(0,8)
=activerange.offset(0,-6) * activerange.offset(0,-5) = (belum sempat di
coba )
rasanya nga berhasil .

dari penjelasan Pak Kid . tanpa sengaja saya menemukan cara memasuk formula
excel kedalam VBA yg didalam formula nya ada tanda " -------- yg harus
dirubah menjadi "" (dua kali)
walaupun belum saya coba . (adapun formula yg hendak saya masuk kan ke
dalam VBA :
=IF(INDEX('M:\[LK_WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&"A100"
;'M:\[LK_WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))="(IDR)";INDEX('M:\[LK_WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&P$3;'M:\[LK_WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0));IF(INDEX('M:\[LK_WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&"A100";'M:\[LK_WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))="(USD)";INDEX('M:\[LK_WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&P$3;'M:\[LK_WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))*$B$2))

Looping . sedianya akan ku pergunakan untuk mencari no acc dari nama acc
yg nga beraturan . yg bila memakai formula bisa mungkin harus memakai
beberapa formula IF.
dari sumber file PDF setelah di conver menjadi Excel. yg kemudian di ambil
nilai nya.

Terima kasih . Pak Kid.

Selamat siang.

Salam dari

Lukman

2012/11/24 Mr. Kid <mr.nmkid@gmail.com>

> **
>
>
> Maaf ada yang ketinggalan.
>
> File terlampir adaalh perbaikan dari file sebelumnya, yang berisi :
> 1. Pengubahan prosedur Tes_01 agar lebih fleksibel terhadap baris data
> seperti Tes_02.
> 2. Pengubahan prosedur Tes_01 agar mengolah sisi time.
> 3. Pengubahan prosedur Tes_01 agar menghasilkan values.
>
>
> Wassalam,
> Kid.
>
> 2012/11/24 Mr. Kid <mr.nmkid@gmail.com>
>
>> Oh iya, ada yang kelupaan.
>>
>> Dari tadikan membahas yang sheet Pertanyaan 2.
>> Masalah kecepatan proses sudah dibahas cukup banyak.
>> Kesimpulan yang dapat diambil antara lain adalah perlunya usaha untuk
>> memanfaatkan fitur-fitur Excel secara optimum.
>>
>> Contohnya pada sheet pertanyaan 1. Diinginkan untuk menyusun unique list
>> per kolom.
>> Dengan memanfaatkan fitur remove duplicate dalam sebuah loop untuk
>> memproses perkolom, bisa diperoleh hasil yang relatif cepat dengan jumlah
>> baris script yang lebih sedikit.
>> Baris script yang lebih sedikit tentu saja akan mempercepat proses,
>> tetapi tidaklah terlalu signifikan. Yang utama adalah algoritma dalam
>> script itu sendiri. Semakin efisien alur proses yang disusun, maka semakin
>> cepat.
>> Biasanya, jumlah baris script yang sedikit lebih memudahkan penelusuran
>> ketika terjadi error.
>>
>> File terlampir adalah sebuah contoh.
>> >> Pada sheet Pertanyaan 1, ada proses yang memanfaatkan fitur
>> removeduplicate. Untuk xl2003 dan sebelumnya, ganti penggunaan
>> removedupklicate dengan fitur advanced filter unique records to another
>> place
>> >> Pada sheet Pertanyaan 2, bisa dilakukan pengujian proses untuk
>> maksimal baris Excel yang terisi data. Perhatikan syarat dan ketentuan yang
>> dijelaskan dalam sheet tersebut, karena tujuannya adalah untuk menguji
>> kecepatan proses tertentu pada suatu keadaan tertentu. Untuk awalnya, file
>> tersebut menyediakan data sampai cell A1000000. Penggantian nomor baris
>> maksimal bisa dilakukan dengan mengubah nilai (numerik) pada cell J1.
>>
>> Wassalam,
>> Kid.
>>
>> 2012/11/24 Mr. Kid <mr.nmkid@gmail.com>
>>
>> Pak Lukman,
>>>
>>> Mungkin prosedur Tes_04 yang dimaksud Pak Lukman adalah :
>>>
>>> Sub Tes_04()
>>> Cells(1, 11) = Time
>>>
>>> Dim Rng As Range
>>> Dim i As Long
>>> Application.ScreenUpdating = False
>>> Application.EnableEvents = False
>>> Sheets("Pertanyaan 2").Select
>>> Range("A2").Select
>>> Set Rng = Range("A2", Range("A1000000").End(xlUp))
>>> Cells(2, 11) = Time
>>> 'With ActiveCell
>>>
>>> ' For i = 1 To Rng.Rows.Count
>>> ' .Offset(i - 1, 4).FormulaR1C1 = "=TEXT(RC[-4],""dd/mm/yy"")"
>>> ' Next i
>>> 'End With
>>>
>>> *Rng**.Offset(0, 2).FormulaR1C1 = "=TEXT(RC[-2],""dd/mm/yy"")"*
>>>
>>>
>>> Application.ScreenUpdating = True
>>> Application.EnableEvents = True
>>> Cells(3, 11) = Time
>>> End Sub
>>>
>>>
>>> Tes_01 : diatas 5 menit (ini pun belum selesai)
>>> Tes_02 06:17:44 PM ~ 06:17:56 PM
>>> Tes_03 : diatas 5 menit dan belum selesai)
>>> Tes_04 : 06:28:45 PM ~ 06:28:46 PM
>>>
>>> Tes_03 lebih cepat dibanding Tes_01 karena loop pada Tes_03 tidak
>>> melakukan Select pada cell berikutnya yang akan dipasangi formula.
>>> Tes_04 paling cepat karena tidak meminta VBA untuk membaca satu per satu
>>> cell yang akan diproses.
>>> Pada Tes_04, seluruh pemasangan formula diserahkan kepada Excel.
>>> *VBA digunakan untuk :
>>> 1. menentukan range yang akan dipasangi formula*,
>>> yaitu bagian yang berbunyi :
>>> *Rng**.Offset(0, 2)*
>>> dimana rng merujuk pada kolom data mulai A2 sampai baris A terbawah yang
>>> berisi data :
>>>
>>> Set Rng = Range("A2", Range("A1000000").End(xlUp))
>>> kemudian di offset 2 kolom kekanan yang berati ke range hasil yaitu di
>>> kolom C dengan rujukan baris yang sama dengan rng, yaitu mulai baris 2
>>> sampai baris terkahir data.
>>>
>>> *2. menentukan bunyi formula pada cell pertama hasil yang kemudian oleh
>>> Excel akan di-copy ke cell lain yang ditunjuk oleh nomor 1 tadi.*
>>> Bunyi formula pada cell pertama hasil [cell C2] :
>>> *.FormulaR1C1 = "=TEXT(RC[-2],""dd/mm/yy"")"*
>>> Untuk formula ini, kerja Excel dalam meng-copy formula dan
>>> mengkalkulasinya jauh lebih cepat dibanding proses kalkulasi yang sama yang
>>> dilakukan oleh VBA.
>>> Itu sebabnya prosedur Tes_04 jauh lebih cepat dibanding Tes_03.
>>>
>>> Pemasangan formula melalui VBA umumnya disusun dengan kaidah dasar :
>>> 1. buat formula dalam worksheet pada cell pertama hasil
>>> 2. copy formula ke semua baris data yang membutuhkan
>>> 3. cek hasil kalkulasi formula,
>>> >> jika sudah sesuai, lanjutkan ke nomor 4
>>> >> jika belum sesuai, kembali ke nomor 1
>>> 4. Susun script pemasangan formula untuk seluruh baris hasil (jangan
>>> satu per satu cell melalui loop)
>>> Contohnya adalah baris berbunyi :
>>> *Rng**.Offset(0, 2).FormulaR1C1 = "=TEXT(RC[-2],""dd/mm/yy"")"*
>>> 5. Copy formula ke VBA pada bagian pemasangan formula,
>>> Contohnya seperti bagian yang berbunyi :
>>>
>>> *.FormulaR1C1 = "=TEXT(RC[-2],"dd/mm/yy")"*
>>> Bagian *merah *adalah bunyi formula dalam cell C2 di worksheet
>>> (bukan di VBA) sesuai hasil kerja nomor 1 sampai nomor 3 di atas
>>> 6. Ganti semua karakter petik dua (") menjadi 2 buah karakter petik dua
>>> ("")
>>> Contoh :
>>>
>>> *.FormulaR1C1 = "=TEXT(RC[-2],""dd/mm/yy"")"*
>>>
>>> Jadi, sebenarnya ndak terlalu sulit untuk dipahami kok. Justru harusnya
>>> lebih mudah.
>>> Coba bayangkan jika kalkulasinya membutuhkan proses lookup 2 dimensi
>>> (sisi row dan juga harus cari di sisi kolom).
>>> Apalagi jika sisi row nya saja ada banyak kriteria (misal saja ada 7
>>> kriteria), yang jadinya harus berupa array formula.
>>> Dengan memanfaatkan properti formulaarray, maka bisa disusun sebuah
>>> array blok.
>>>
>>> Pada beberapa kasus, seperti memasang array formula unique list, maka
>>> proses pemasangan array formula hanya bisa pada cell pertama saja dengan
>>> properti array formula. Kemudian copy formula ke cell lain (selain cell
>>> pertama).
>>>
>>>
>>> >> cara tes_02 . dalam pelaksanan untuk prosedur lain nya . apakah bisa
>>> menimbulkan kesalahan dihasilnya ?
>>> Untuk kegiatan seperti data tersebut, bisa jadi tidak ada yang salah
>>> hasilnya. Hanya saja tes_02 secara mutlak adalah memerintahkan VBA
>>> mengkalkulasi hasil dengan algoritma yang disusun programmer-nya melalui
>>> bahasa VB. Sedangkan Excel memberi akses untuk bisa memanfaatkan kemampuan
>>> si Excel dalam menyusun, memasang, dan mengkalkulasi formula.
>>>
>>> Wassalam,
>>> Kid.
>>>
>>>
>>>
>>> 2012/11/24 lkm jktind <lkmjktind@gmail.com>
>>>
>>>> **
>>>>
>>>>
>>>> Pak Kid.
>>>>
>>>> Dari data yg pak Kid kirim kan itu , saya copy paste sampai menjadi
>>>> 506.482 row
>>>> data ini yg saya tes dengan data hanya di kolom A.
>>>> dan didalam nya ada data yg kosong. (tidak semua nya terisi data)
>>>> hasil nya seperti dibawah ini :
>>>>
>>>> Tes_01 : diatas 5 menit (ini pun belum selesai)
>>>> Tes_02 06:17:44 PM ~ 06:17:56 PM
>>>> Tes_03 : diatas 5 menit dan belum selesai)
>>>> Tes_04 : 06:28:45 PM ~ 06:28:46 PM
>>>>
>>>> yg hendak saya tanyakan: cara tes_02 . dalam pelaksanan untuk prosedur
>>>> lain nya . apakah bisa menimbulkan kesalahan dihasilnya ?
>>>> Walaupun waktu yg di butuhkan lebih banyak . tapi cara tes_02 ini ,
>>>> lebih mudah saya pahami.
>>>>
>>>> terima kasih . (sudah banyak saya belajar dari Pak Kid)
>>>>
>>>> Selamat malam dan salam sejahtera.
>>>>
>>>> Lukman.
>>>>
>>>> Maaf file nya tidak saya sertakan ( 8.5 MB)
>>>>
>>>>
>>>> Sub Tes_01()
>>>> Cells(1, 9) = Time
>>>>
>>>> Dim Rng As Range
>>>> Dim i As Long
>>>> Application.ScreenUpdating = False
>>>> Application.EnableEvents = False
>>>> Sheets("Pertanyaan 2").Select
>>>> Range("A2").Select
>>>> Set Rng = Range("A2", Range("A1000000").End(xlUp))
>>>> Cells(2, 9) = Time
>>>>
>>>> For i = 1 To Rng.Rows.Count
>>>> ActiveCell.Offset(0, 2).FormulaR1C1 =
>>>> "=TEXT(RC[-2],""dd/mm/yy"")"
>>>> ActiveCell.Offset(1, 0).Select
>>>> Next i
>>>> Application.ScreenUpdating = True
>>>> Application.EnableEvents = True
>>>> Cells(3, 9) = Time
>>>> End Sub
>>>>
>>>> Sub tes_02()
>>>> Cells(1, 10) = Time
>>>>
>>>> Dim r As Long
>>>> Dim s As Long
>>>> Worksheets(2).Select
>>>> Cells(2, 1).Select
>>>> s = Cells(Rows.Count, 1).End(xlUp).Row
>>>> 'Range(Cells(2, 7), Cells(s, 10)).ClearContents
>>>> Cells(2, 10) = Time
>>>>
>>>> For r = 2 To s
>>>> Cells(r, 4) = Left(Cells(r, 1), 10)
>>>> 'Cells(r, 8) = Mid(Cells(r, 1), 11, 10)
>>>> Next
>>>> Cells(3, 10) = Time
>>>> End Sub
>>>>
>>>> Sub Tes_03()
>>>> Cells(1, 11) = Time
>>>>
>>>> Dim Rng As Range
>>>> Dim i As Long
>>>> Application.ScreenUpdating = False
>>>> Application.EnableEvents = False
>>>> Sheets("Pertanyaan 2").Select
>>>> Range("A2").Select
>>>> Set Rng = Range("A2", Range("A1000000").End(xlUp))
>>>> Cells(2, 11) = Time
>>>> With ActiveCell
>>>>
>>>> For i = 1 To Rng.Rows.Count
>>>> .Offset(i - 1, 4).FormulaR1C1 = "=TEXT(RC[-4],""dd/mm/yy"")"
>>>> Next i
>>>> End With
>>>>
>>>> Application.ScreenUpdating = True
>>>> Application.EnableEvents = True
>>>> Cells(3, 11) = Time
>>>> End Sub
>>>>
>>>> Sub Tes_04()
>>>> Cells(1, 11) = Time
>>>>
>>>> Dim Rng As Range
>>>> Dim i As Long
>>>> Application.ScreenUpdating = False
>>>> Application.EnableEvents = False
>>>> Sheets("Pertanyaan 2").Select
>>>> Range("A2").Select
>>>> Set Rng = Range("A2", Range("A1000000").End(xlUp))
>>>> Cells(2, 11) = Time
>>>> With ActiveCell
>>>>
>>>> For i = 1 To Rng.Rows.Count
>>>> .Offset(i - 1, 4).FormulaR1C1 = "=TEXT(RC[-4],""dd/mm/yy"")"
>>>> Next i
>>>> End With
>>>>
>>>> Application.ScreenUpdating = True
>>>> Application.EnableEvents = True
>>>> Cells(3, 11) = Time
>>>> End Sub
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>
>
>

Sun Nov 25, 2012 2:31 am (PST) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Pak Lukman,

Bila Di Tes_04 : *Activerange* yg sebagai pedomannya.
untuk melaksanakan seperti perkalian diatas . (columns(2) *
colums(3)) = pada rows yg sama.
Apakah bisa dipakai : activerange.offset(0,8)
=activerange.offset(0,-6) * activerange.offset(0,-5) = (belum sempat di
coba )
rasanya nga berhasil .
>> Kita coba bersama ya.
1. kata activerange harus diganti dengan variabel range yang merujuk ke
cells penulisan hasil. Itu sebabnya ada set rng=blabla seperti begini :
Set Rng = Range("A2", Range("A1000000").End(xlUp))
Jadi active range bisa saja ada di range AB1 sampai AB7, tetapi rng
tetap merujuk ke kolom A pada baris tertentu.
2. variabel rng baru ada di kolom A, padahal hasil formula harus ditulis di
kolom C yang artinya harus lompat 2 kolom kekanan. Setuju ?
Maka penggunaan variabel range yang akan dipasangi formula bersamaan
jadi :
*Rng**.Offset(0, 2)*
3. Pada kolom C akan dipasangi formula apa ?
Misal formulanya adalah nilai kolom X baris itu * nilai kolom G baris
itu
Coba ikuti bagian *Pemasangan formula melalui VBA umumnya disusun
dengan kaidah dasar :*
pada email sebelumnya.
a. pasang formula di cell pertama. Berarti di C2 diworksheet (bukan
VBA) tulis =X2*G2 lalu Enter
b. coba copy ke semua cell data dan cek apakah sudah oke hasil
formulanya.
c. oh sudah oke, maka kembali ke VBA dan buat script :
*Rng**.Offset(0, 2)**.Formula = "=X2*G2"*
d. ubah semua karakter " menjadi "" (karena tidak ada karakter " dalam
tulisan formula =X2*G2 maka hal ini tidak perlu dilakukan)
4. didapatlah tes_04 bentuk pemasangan* tanpa loop* dan langsung ke seluruh
cell hasil.

Bagaimana jika akan menggunakan IF yang buanyuak ?
Susun saja bagian 3.a. dengan benar dan dicek pada 3.b. sampai ok, kemudian
salin formula seperti 3.c. dengan finishing seperti 3.d.

Ketika data yang akan dipasangi formula sangat banyak, maka cara tes_04
akan sangat cepat sampai suatu bunyi formula tertentu yang sangat spesifik
dengan kebutuhan setempat. Batas inilah yang harus secara cermat diawasi
dan mulai dipikirkan solusi lainnya.
Untuk jumlah baris sedikit dan proses kalkulasi yang sederhana, maka cara
loop cell per cell seperti cara tes_02 sudah akan dirasa cukup. Tapi juga
harus segera bertindak untuk mencari solusi lain ketika ada kesulitan dalam
menerapkan formula yang rumit atau sudah mulai terasa lambat prosesnya.

Looping . sedianya akan ku pergunakan untuk mencari no acc dari nama acc
yg nga beraturan . yg bila memakai formula bisa mungkin harus memakai
beberapa formula IF.
>> sebelum ke formula yang puanjang dan mungkin sebaiknya di efisienkan
dulu.
Kemampuan Excel untuk melookup sangatlah baik. Buanyak sekali kondisi (IF)
bisa disederhanakan dengan proses LookUp dengan menyusun tabel lookup
pengkondisian yang baik. Coba deh cari di posting terdahulu tentang lookup
yang bisa menjadi pengganti proses banyak kondisi.

adapun formula yg hendak saya masuk kan ke dalam VBA :
=IF(INDEX('M:\[LK_WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&"A100"
;'M:\[LK_WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_
WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))="(IDR)";INDEX('M:\[LK_
WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&P$3;'M:\[LK_
WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_
WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0));IF(INDEX('M:\[LK_WEB_
100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&"A100";'M:\[
LK_WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_
WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))="(USD)";INDEX('M:\[LK_
WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&P$3;'M:\[LK_
WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_
WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))*$B$2))
>> Untuk formula seperti ini, bisa dicoba dalam banyak tahap dan dicari
mana yang paling efisien.
Contoh :
*Tahap 1*, memasang formula apa adanya (tanpa ada proses optimasi formula)
1. tentukan range yang akan dipasangi formula (misal barisnya mulai 5
sampai terbawah, sesuaikan dengan keadaan real)
Set Rng = Range("A5", Range("A1000000").End(xlUp))
2. formula dipasang mulai kolom P (offset 15 kolom ke kanan) sampai kolom
AN (sebanyak 25 kolom)
*Rng**.Offset(0, 15)***.Resize(,25)
3. pasang formula di worksheet pada cell P5 dan copy sampai AN100 misalnya,
dan sudah oke.
4. buat baris script pemasangan formula :
*Rng**.Offset(0, 15)***.Resize(,25).formula = "*disiniformulanya*"
*disiniformulanya *diganti dengan bunyi formula diatas menjadi :
*Rng**.Offset(0, 15)***.Resize(,25).formula = "
=IF(INDEX('M:\[LK_WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&"A100"
;'M:\[LK_WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_
WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))="(IDR)";INDEX('M:\[LK_
WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&P$3;'M:\[LK_
WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_
WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0));IF(INDEX('M:\[LK_WEB_
100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&"A100";'M:\[
LK_WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_
WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))="(USD)";INDEX('M:\[LK_
WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&P$3;'M:\[LK_
WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_
WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))*$B$2))"
5. ganti semua " yang ada dalam formula menjadi ""
*Rng**.Offset(0, 15)***.Resize(,25).formula = "
=IF(INDEX('M:\[LK_WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&""A100""
;'M:\[LK_WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_
WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))="(IDR)";INDEX('M:\[LK_
WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&P$3;'M:\[LK_
WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_
WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0));IF(INDEX('M:\[LK_WEB_
100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&"A100";'M:\[
LK_WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_
WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))="(USD)";INDEX('M:\[LK_
WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&P$3;'M:\[LK_
WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_
WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))*$B$2))"

Sekarang penyusunan proses agar lebih cepat, misal
'dimatikan dulu kalkulasi otomatisnya karena cell yang dipasangi
formula ada banyak
application.calculation=xlmanual
'pasang formulanya :
Set Rng = Range("A5", Range("A1000000").End(xlUp))
*Rng**.Offset(0, 15)***.Resize(,25).formula = "
=IF(INDEX('M:\[LK_WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&""A100""
;'M:\[LK_WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_
WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))="(IDR)";INDEX('M:\[LK_
WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&P$3;'M:\[LK_
WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_
WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0));IF(INDEX('M:\[LK_WEB_
100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&"A100";'M:\[
LK_WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_
WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))="(USD)";INDEX('M:\[LK_
WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&P$3;'M:\[LK_
WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_
WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))*$B$2))"
'lakukan kalkulasi :
rng.parent.calculate 'atau set calculation jadi xlautomatic lagi
'di-values-ken
*Rng**.Offset(0, 15)***.Resize(,25).value=*Rng**.Offset(0, 15)***
.Resize(,25).value

Jika ingin coba tahap lain, bisa buat prosedur yang isinya sama, tapi nama
prosedur beda. Kemudian ubah alur prosesnya. Misal :
*Tahap 2* : karena ada rujukan ke file lain dan cell berformula ada banyak,
salin dulu data rujukan dari file lain itu ke sebuah sheet sementara
bernama temp.
Maka proses :
1. buat sheet temporary (simpan ke sebuah variabel misal shtTmp dan beri
nama tetap, misal *Temp *karena akan digunakan oleh formula)
2. buka workbook referensi 'M:\[LK_WEB_100.xlsm dan copy dari sheet bernama
DT_LK dan paste values ke shttmp pada cell yang sama persis lokasinya
seperti di dt_lk.
3. tutup workbook referensi
4. pasang formula yang sudah diubah rujukannya, yang tadi merujuk ke
'M:\[LK_WEB_100.xlsm]DT_LK' menjadi *Temp*
5. selesai proses diakhir dengan menghapus shtTemp karena hasil formula
sudah di-values-ken

Setelah dibanding-bandingkan, masih kurang cepat, maka coba tahap 3 dengan
baris bantu atau kolom bantu, sampai bertemu formula lain yang lebih
sederhana. Dan seterusnya begitu sampai ada banyak pilihan dan bisa memilih
mana yang akan digunakan.

Wassalam,
Kid.

2012/11/25 lkm jktind <lkmjktind@gmail.com>

> **
>
>
> Pak Kid.
>
> Bila memakai range. maka yg di pakai adalah offset dari activecell yg
> sebagai pedomannya. (di Tes_01 dan Tes_03) di kerjakan baris kebaris
> berikutnya
> cells(1,1).select
> *ActiveCell*.Offset(0, 2).FormulaR1C1 = "=TEXT(RC[-2],""dd/mm/yy"")"
> di Tes_01
> With* ActiveCell * .Offset(i - 1, 4).FormulaR1C1 =
> "=TEXT(RC[-4],""dd/mm/yy"")"
> pemakaian* Offset* menjadi sangat dominan. misalnya :
> activecell.offset(0,6) = activecell.offset(0,-4) * activecell.offset(0,-3)
>
> Bila di Tes_02 : Dim r As Long *Active rows* yg sebagai
> pedomannya. di kerjakan baris kebaris berikutnya
> cells(1,1).select
>
> Cells(r, 4) = Left(Cells(r, 1), 10)
> untuk perkalian . menjadi : Cells(r,7) = cells(r,2) *
> Cells(r,3)
>
> Bila Di Tes_04 : *Activerange* yg sebagai pedomannya.
> untuk melaksanakan seperti perkalian diatas . (columns(2) *
> colums(3)) = pada rows yg sama.
> Apakah bisa dipakai : activerange.offset(0,8)
> =activerange.offset(0,-6) * activerange.offset(0,-5) = (belum sempat di
> coba )
> rasanya nga berhasil .
>
> dari penjelasan Pak Kid . tanpa sengaja saya menemukan cara memasuk
> formula excel kedalam VBA yg didalam formula nya ada tanda " -------- yg
> harus dirubah menjadi "" (dua kali)
> walaupun belum saya coba . (adapun formula yg hendak saya masuk kan ke
> dalam VBA :
> =IF(INDEX('M:\[LK_WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&"A100"
> ;'M:\[LK_WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))="(IDR)";INDEX('M:\[LK_WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&P$3;'M:\[LK_WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0));IF(INDEX('M:\[LK_WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&"A100";'M:\[LK_WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))="(USD)";INDEX('M:\[LK_WEB_100.xlsm]DT_LK'!$K$4:$AI$31998;MATCH($B502&P$3;'M:\[LK_WEB_100.xlsm]DT_LK'!$A$4:$A$31998;0);MATCH(P$1;'M:\[LK_WEB_100.xlsm]DT_LK'!$K$1:$AI$1;0))*$B$2))
>
> Looping . sedianya akan ku pergunakan untuk mencari no acc dari nama acc
> yg nga beraturan . yg bila memakai formula bisa mungkin harus memakai
> beberapa formula IF.
> dari sumber file PDF setelah di conver menjadi Excel. yg kemudian di
> ambil nilai nya.
>
> Terima kasih . Pak Kid.
>
> Selamat siang.
>
> Salam dari
>
> Lukman
>
>
>
>
>
GROUP FOOTER MESSAGE
---------------------------------------------------------------------
bergabung ke milis (subscribe), kirim mail kosong ke:
belajar-excel-subscribe@yahoogroups.com

posting ke milis, kirimkan ke:
belajar-excel@yahoogroups.com

berkunjung ke web milis
http://tech.groups.yahoo.com/group/belajar-excel/messages

melihat file archive / mendownload lampiran
http://www.mail-archive.com/belajar-excel@yahoogroups.com/
atau (sejak 25-Apr-2011) bisa juga di :
http://milis-belajar-excel.1048464.n5.nabble.com/

menghubungi moderators & owners: belajar-excel-owner@yahoogroups.com

keluar dari membership milis (UnSubscribe):
kirim mail kosong ke  belajar-excel-unsubscribe@yahoogroups.com
---------------------------------------------------------------------

Tidak ada komentar:

Posting Komentar