hmmm... 0. Panjang juga bunyi formula untuk 1 item kode kolom C yang berisi CC301.
1. Kalau melihat text file berisi script yang Anda buat, tampaknya seluruh kolom dikomputasi ulang. > Apakah sumber datanya berubah setiap waktu, sehingga seluruh kolom harus dikomputasi ulang? > Apakah tidak memungkinkan dibuatkan satu template untuk mengkomputasi 1 kolom data quarter (triwulan) terbaru saja, yang hasil komputasi template ini lalu di-copy ke sheet series quarter-an tersebut ? 2. Jika dilihat dari rumusan komputasi di kolom i, ada nilai-nilai kode kolom C yang sudah menjadi bawaan sumber data (kolom i tidak berisi misalnya [bisa jadi ada kriteria lain, but it's ok]) dan ada nilai-nilai kode kolom C yang harus dikomputasi. > Berarti, ada kemungkinan bahwa isi kolom C akan selalu tetap atau setidaknya di-set selalu tetap, walau sumber datanya hanya menyediakan baris-baris nilai yang tidak butuh hitungan saja. Iya gak ? 3. kembali ke contoh formula nomor 0, yang berbunyi : *CC301* : =IF($C51="CC301";IF(AND(ISNUMBER(INDEX($M$1:$AX$48000;MATCH($A51&"be1=";$D$1:$D$48000;0);R$2));INDEX($M$1:$AX$48000;MATCH($A51&"be1=";$D$1:$D$48000;0);R$2)<>0); IF(RIGHT(R$1;2)="Q1";INDEX($M$1:$AX$48000;MATCH($A51&"be1=";$D$1:$D$48000;0);R$2); IF(OR(RIGHT(R$1;2)="Q2";RIGHT(R$1;2)="Q3";RIGHT(R$1;2)="Q4");IF(AND(INDEX($M$1:$AX$48000;MATCH($A51&"be1=";$D$1:$D$48000;0);R$2+1)<>0;ISNUMBER(INDEX($M$1:$AX$48000;MATCH($A51&"be1=";$D$1:$D$48000;0);R$2+1)));INDEX($M$1:$AX$48000;MATCH($A51&"be1=";$D$1:$D$48000;0);R$2)-INDEX($M$1:$AX$48000;MATCH($A51&"be1=";$D$1:$D$48000;0);R$2+1);"")));"");"SalahJalur") > Bisa jadi dengan mengubahnya agar menggunakan vLookUp akan menjadi lebih singkat, contohnya : =IF($C51="CC301";IFERROR(IF(RIGHT(M$1)-1;IF(N(VLOOKUP($A51&"be1=";$D$1:$AX$48000;M$2+9;0))*N(VLOOKUP($A51&"be1=";$D$1:$AX$48000;M$2+10;0));VLOOKUP($A51&"be1=";$D$1:$AX$48000;M$2+9;0)-VLOOKUP($A51&"be1=";$D$1:$AX$48000;M$2+10;0);"");IF( N(VLOOKUP($A51&"be1=";$D$1:$AX$48000;M$2+9;0));VLOOKUP($A51&"be1=";$D$1:$AX$48000;M$2+9;0);""));"");"SalahJalur") [bisa jadi formula lain juga masih ada yang bisa disederhanakan] > Dengan mencoba formulasi di atas yang diterapkan dalam bentuk VBA, bisa jadi akan cukup mempersingkat proses 4. tentang 'kecuali untuk LK th fiscal yg berbeda', jika dikaitkan dengan beberapa baris kode terkait yang ada dalam text file berisi script Anda > Formulasi seperti CC301 di atas yang tadinya berdasar bunyi periode Q di baris 1 [seperti RIGHT(M$1], akan menjadi dipengaruhi bunyi periode Q di baris yang kolom C nya berisi kode berbunyi 'aa0' > Berarti, andaikan ada emiten (kolom A) yang tidak menyediakan data kolom C bernilai 'aa0' akan menggunakan bunyi Q di baris 1. Hal ini mengindikasikan bahwa komputasi CC301 dan sebangsanya yang lain, yang dipengaruhi oleh bunyi Q di 'aa0' akan memiliki nilai qtr,qtQ, qtY, dsb yang berasal dari baris 'aa0'. > Bisa jadi, formula di nomor 3 (termasuk yang di-VBA-ken) cukup disesuaikan untuk bagian cek bunyi Q oleh Right(M1 menjadi =Right( if( kalau ada aa0 di emiten tersebut, ambil bunyi q nya , M1 ) ***ambil dari kanan dari suatu teks di : yang kalau ada kode aa0 di emiten itu, ambil dari baris itu di kolom yang sama (misal di m40) ,kalau tidak ada kode aa0 di emiten itu, ambil dari baris 1 di kolom yang sama (m1) 5. beberapa pengkondisi script yang ada, sebaiknya diperbaiki lagi. Contoh : ada blok pengkondisian IF yang berbunyi : If Len(qtk) = 0 Then 'blablablabla banyak sekali barisnya elseif len(qtk)>0 then 'blublublublu yang juga banyak sekali barisnya, dan ada yang berupa beda penggunaan qtk atau qtka qtkq dsb endif > bisa diubah menjadi seperti : if len(qtk)<>0 then 'blublublublu yang juga banyak sekali barisnya, dan ada yang berupa beda penggunaan qtk atau qtka qtkq dsb else 'blablablabla banyak sekali barisnya end > blok ini menghemat 1 proses perbandingan, yaitu tidak perlu cek Len(qtk) = 0 > proses perbandingan dengan operator <> lebih cepat dibanding operator = 6. Script menunjukkan bahwa proses komputasi selalu dimulai dari kode 'aa0' sampai yang terbawah. Artinya, data memang memiliki urutan kode 'aa0' dst yang tetap. > Berarti, Select Case bisa digunakan > Misal : select case acc case "aa0" script kerjaannya case "ba2=","ba3=","ba6=","be1=","be3=","be5=","bg5=" 'proses universal untuk kode-kode acc diatas Cells(rc, cc).Value = .Index(Dtlk, .Match(Tic & "a" & mid(acc,2) , Vlk, False), cc) * Kurs case dst end select btw, Andai yang diproses bisa 1 kolom per datangnya data baru di quarter baru yang masuk ke sheet input, maka dengan template berupa 1 sheet terpisah lalu hasilnya disalin ke sheet output yang berisi series yang pakai script Anda tersebut, maka seluruh proses bisa jadi lebih cepat. Apalagi kalau mau mulai mengerjakan dengan konsep cara kerja database mengolah data. Excel dengan fitur Get External Data dan susunan tabel yang baik dalam sheet Excel, bisa melakukan hal itu, meskipun ndak punya MS Access, MS SQL Server, Oracle, MySQL dsb sekalipun. Mestinya, dengan fitur get external data, untuk record yang masih sekitar 5 jutaan sih masih bisa sekitar beberapa menit malah bisa beberapa detik saja. Moga-moga ada manfaatnya... Wassalam, Kid 2015-06-11 17:55 GMT+10:00 lkm jktind lkmjkt...@gmail.com [belajar-excel] < belajar-excel@yahoogroups.com>: > > > ini kalau pakai formula biasa : > > *CC301* : > =IF($C51="CC301";IF(AND(ISNUMBER(INDEX($M$1:$AX$48000;MATCH($A51&"be1=";$D$1:$D$48000;0);R$2));INDEX($M$1:$AX$48000;MATCH($A51&"be1=";$D$1:$D$48000;0);R$2)<>0); > IF(RIGHT(R$1;2)="Q1";INDEX($M$1:$AX$48000;MATCH($A51&"be1=";$D$1:$D$48000;0);R$2); > IF(OR(RIGHT(R$1;2)="Q2";RIGHT(R$1;2)="Q3";RIGHT(R$1;2)="Q4");IF(AND(INDEX($M$1:$AX$48000;MATCH($A51&"be1=";$D$1:$D$48000;0);R$2+1)<>0;ISNUMBER(INDEX($M$1:$AX$48000;MATCH($A51&"be1=";$D$1:$D$48000;0);R$2+1)));INDEX($M$1:$AX$48000;MATCH($A51&"be1=";$D$1:$D$48000;0);R$2)-INDEX($M$1:$AX$48000;MATCH($A51&"be1=";$D$1:$D$48000;0);R$2+1);"")));"");"SalahJalur") > > > CC301 = menghitung pendapatan hanya 3 bulan saja . > CC302. CC303, CC304 -- rumus nya mirip -- yg dihitung , laba kotor , laba > usaha, laba bersih hanya 3 bulan saja. > > *CC302* = > =IF($C52="CC302";IF(AND(ISNUMBER(INDEX($M$1:$AX$48000;MATCH($A52&"be3=";$D$1:$D$48000;0);R$2));INDEX($M$1:$AX$48000;MATCH($A52&"be3=";$D$1:$D$48000;0);R$2)<>0);IF(RIGHT(R$1;2)="Q1";INDEX($M$1:$AX$48000;MATCH($A52&"be3=";$D$1:$D$48000;0);R$2);IF(OR(RIGHT(R$1;2)="Q2";RIGHT(R$1;2)="Q3";RIGHT(R$1;2)="Q4");IF(AND(INDEX($M$1:$AX$48000;MATCH($A52&"be3=";$D$1:$D$48000;0);R$2+1)<>0;ISNUMBER(INDEX($M$1:$AX$48000;MATCH($A52&"be3=";$D$1:$D$48000;0);R$2+1)));INDEX($M$1:$AX$48000;MATCH($A52&"be3=";$D$1:$D$48000;0);R$2)-INDEX($M$1:$AX$48000;MATCH($A52&"be3=";$D$1:$D$48000;0);R$2+1);"")));"");"SalahJalur") > > > *CC220* = =IF($C50="CC220";IF( > AND(ISNUMBER(INDEX($M$1:$AX$48000;MATCH($A50&"bg5=";$D$1:$D$48000;0);R$2));ISNUMBER(INDEX($M$1:$AX$48000;MATCH($A50&"bg5=";$D$1:$D$48000;0);R$2+4));ISNUMBER(INDEX($M$1:$AX$48000;MATCH($A50&"bg5=";$D$1:$D$48000;0);MATCH((LEFT(R$1;4)-1)&" > Q4";$M$1:$AX$1;0))));IF(AND(INDEX($M$1:$AX$48000;MATCH($A50&"bg5=";$D$1:$D$48000;0);R$2)<>0;INDEX($M$1:$AX$48000;MATCH($A50&"bg5=";$D$1:$D$48000;0);R$2+4)<>0;INDEX($M$1:$AX$48000;MATCH($A50&"bg5=";$D$1:$D$48000;0);MATCH((LEFT(R$1;4)-1)&" > Q4";$M$1:$AX$1;0))<>0);INDEX($M$1:$AX$48000;MATCH($A50&"bg5=";$D$1:$D$48000;0);R$2)-INDEX($M$1:$AX$48000;MATCH($A50&"bg5=";$D$1:$D$48000;0);R$2+4)+INDEX($M$1:$AX$48000;MATCH($A50&"bg5=";$D$1:$D$48000;0);MATCH((LEFT(R$1;4)-1)&" > Q4";$M$1:$AX$1;0));"");"");"Salah Jalur") > > > diatas 3 macam dari semuanya ada 46 macam formula -- dan bisa di pakai > untuk semua column atau row . > > > kecuali untuk LK th fiscal yg berbeda - > > > > Salam > > Lukman > > > > > > > > > > 2015-06-11 14:30 GMT+07:00 lkm jktind <lkmjkt...@gmail.com>: > >> contoh : I56 : be1= - be1=-1Q berapa pendapatan dalam 3 bulan . >> >> Q56 = Q51 Karena kolom Q adalah Q1 >> R56 = Q51 - S51 : kolom R adalah Q4 untuk mendapatkan data >> dari Okt ~ des >> S56 = S51 - T51 : Kolom S adalah Q3 untuk mendapatkan data >> dari Jul ~ sep >> T56 = T51 - U51 : Kolom T adalah Q2 untuk mendapatkan data >> dari april ~ jun >> >> Q51 = adalah pendapat dari jan ~ maret 2015 >> R51 = adalah pendapatan dari jan ~ des 2014 >> S51 = adalah pendapatan dari jan ~ sep 2014 >> T51 = adalah pendapatan dari jan ~ juni 2014 >> >> >> Salam >> >> Lukman >> >> >> 2015-06-11 13:43 GMT+07:00 'Mr. Kid' mr.nm...@gmail.com [belajar-excel] < >> belajar-excel@yahoogroups.com>: >> >>> >>> >>> Jadi, untuk semua rumusan di kolom i, pasti mengambil nilai (yang >>> ditambah kurang bagi dsb) hanya dari 1 kolom saja ? >>> Kalau sedang menghitung q1 tahun 2000 (yang ditambah kurang bagi dsb), >>> apakah hanya pakai data q1 tahun 2000 saja ? >>> Bagaimana dengan menghitung q2,q3,q4 ? >>> >>> >>> >>> >>> 2015-06-11 16:37 GMT+10:00 lkm jktind lkmjkt...@gmail.com >>> [belajar-excel] <belajar-excel@yahoogroups.com>: >>> >>>> >>>> >>>> Jadi kalau ada kolom i yang tidak berisi rumus (alias blank), maka >>>> nilainya tetap apa adanya dari sumber data ? >>>> : Ya >>>> kecuali data dalam USD -- akan di konversikan dalam IDR. >>>> >>>> Apakah semua rumus di kolom i itu pasti mengambil dari kolom yang sama >>>> ? kebanyakan mengunakan column yg sama >>>> >>>> bila masih mengunakan formula di dalam excel : >>>> baris untuk bantu untuk vertical : columns E,F,G,H (match >>>> vertical) >>>> baris untuk bantu untuk horizontal : Row 2. (match >>>> horizontal) >>>> >>>> jadi : = Index (data, match vertical, match horizontal) >>>> >>>> sedangkan untuk tahun fiscal yg berbeda di hitung secara manual . >>>> >>>> Kolom I : ini hanya catatan rumus nya saja . berisi No Acc yg akan >>>> digunakan untuk menghitung . (dari pada saya catat di file yg berbeda) >>>> sebagai dan dasar pembuatan formula >>>> >>>> >>>> Salam >>>> >>>> >>>> Lukman >>>> >>>> >>>> >>>> >>>> 2015-06-11 12:10 GMT+07:00 'Mr. Kid' mr.nm...@gmail.com >>>> [belajar-excel] <belajar-excel@yahoogroups.com>: >>>> >>>>> >>>>> >>>>> Jadi kalau ada kolom i yang tidak berisi rumus (alias blank), maka >>>>> nilainya tetap apa adanya dari sumber data ? >>>>> Apakah semua rumus di kolom i itu pasti mengambil dari kolom yang sama >>>>> ? >>>>> Maksudnya, ketika rumusan kolom i akan diimplementasi di kolom q1 >>>>> tahun x, maka akan menggunakan semua nilai di kolom tersebut juga berdasar >>>>> kode-kode dalam rumusan kolom i ? >>>>> >>>>> >>>>> 2015-06-11 14:46 GMT+10:00 lkm jktind lkmjkt...@gmail.com >>>>> [belajar-excel] <belajar-excel@yahoogroups.com>: >>>>> >>>>>> >>>>>> >>>>>> Pak Kid. >>>>>> >>>>>> Data nya : ada yg mengunakan USD dan IDR >>>>>> sedangkan Harga sahamnya mengunakan IDR >>>>>> Tahun fiscalnya ada ada yg berbeda: >>>>>> Kebanyakan : dari jan ~ des , atau dari april 2014 ~ maret >>>>>> 2015 (jepang) >>>>>> >>>>>> No Acc ---- di kolom C >>>>>> Ticker --- di kolom A >>>>>> >>>>>> Data awal nya . dari aa0 sampai AT100 jumlah row nya bisa >>>>>> tidak sama. disini ada formula yg di letakan di dalam excel. >>>>>> >>>>>> Data Inti nya dari ba2= sampai bg5= disini . semua data >>>>>> di seragamkan dengan mata uang rupiah. >>>>>> qtr, qtrQ, qtrY, qtrA --- tahun fiscalnya dari jan ~ des row 1. >>>>>> qtk, qtrkQ, qttkY, qtkA --- tahun fiscalnya berbeda. >>>>>> >>>>>> qtr, qtk -- quater saat ini. >>>>>> qtrQ , qtkQ ---- quater sebelumnya . digunakan untuk mencari hasil >>>>>> 3 bulan terakhir ---- Q to Q. >>>>>> qtrY , qtkY ---- setahun yg lalu . digunakan untuk menghitung >>>>>> Y to Y >>>>>> qtrA, qtkA ---- untuk mencari hasil 12 bulan terakhir. contoh >>>>>> : = 2014 Q2 + 2013 Q4 - 2013 Q2 >>>>>> >>>>>> sebuah template formula : >>>>>> sebenarnya ada sheet tambahan . dinamai sheet rumus . . >>>>>> >>>>>> Sub copy_formula() >>>>>> Application.Calculation = xlCalculationAutomatic >>>>>> Sheets("rumus").Range("R38:R83").Copy >>>>>> >>>>>> Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, >>>>>> _ >>>>>> SkipBlanks:=False, Transpose:=False >>>>>> >>>>>> Selection.Copy >>>>>> Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, >>>>>> SkipBlanks _ >>>>>> :=False, Transpose:=False >>>>>> Application.CutCopyMode = False >>>>>> With Selection.Interior >>>>>> .Pattern = xlNone >>>>>> .TintAndShade = 0 >>>>>> .PatternTintAndShade = 0 >>>>>> End With >>>>>> Selection.Replace What:="False", Replacement:="", LookAt:=xlPart, >>>>>> _ >>>>>> SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, >>>>>> _ >>>>>> ReplaceFormat:=False >>>>>> Selection.Replace What:="", Replacement:="", LookAt:=xlPart, _ >>>>>> SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, >>>>>> _ >>>>>> ReplaceFormat:=False >>>>>> Selection.Replace What:="#VALUE!", Replacement:="", >>>>>> LookAt:=xlPart, _ >>>>>> SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, >>>>>> _ >>>>>> ReplaceFormat:=False >>>>>> Selection.Replace What:="", Replacement:="", LookAt:=xlPart, >>>>>> SearchOrder _ >>>>>> :=xlByRows, MatchCase:=False, SearchFormat:=False, >>>>>> ReplaceFormat:=False >>>>>> >>>>>> Application.Calculation = xlCalculationManual >>>>>> >>>>>> End Sub >>>>>> >>>>>> di kolom I ada rumus nya >>>>>> >>>>>> total row sekitar 47.800 baris dengan columns 30 >>>>>> >>>>>> kalau di hitung dengan VBA komplit_1 waktunya sekitar 22 ~ 23 >>>>>> menit. >>>>>> VBA Komplit_2 sekitar 15 ~ 16 menit. >>>>>> >>>>>> Salam >>>>>> >>>>>> >>>>>> Lukman >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> 2015-06-11 10:06 GMT+07:00 'Mr. Kid' mr.nm...@gmail.com >>>>>> [belajar-excel] <belajar-excel@yahoogroups.com>: >>>>>> >>>>>>> >>>>>>> >>>>>>> Hai Lukman, >>>>>>> >>>>>>> Data awalnya seperti apa dan hasilnya seperti apa ya ? >>>>>>> Tampaknya tidak semua record adalah hitungan. Record hasil hitungan >>>>>>> pun sebenarnya akan selalu tetap per kode di kolom C, walau hitungannya >>>>>>> membutuhkan kode kolom C lainnya. >>>>>>> >>>>>>> Bolehkah dijabarkan kapan menggunakan : >>>>>>> qtr,qtrq,qtrY,qtrA ? >>>>>>> >>>>>>>> Dim qtr As String, qtrQ As String, qtrY As String, qtrA As String >>>>>>>> Dim qtk As String, qtkQ As String, qtkY As String, qtkA As String >>>>>>>> >>>>>>> >>>>>>> Sepertinya sebuah template formula yang diletakkan pada sebuah kolom >>>>>>> bisa mempercepat proses daripada menghitung setiap cells dengan loop >>>>>>> terhadap M baris x N kolom. >>>>>>> >>>>>>> Wassalam, >>>>>>> Kid. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> 2015-06-08 12:00 GMT+10:00 lkm jktind lkmjkt...@gmail.com >>>>>>> [belajar-excel] <belajar-excel@yahoogroups.com>: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> lebih sering -- hanya di hitung 1 column saja . >>>>>>>> >>>>>>>> contoh file terlampir : >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Salam >>>>>>>> >>>>>>>> Lukman >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> 2015-06-07 18:58 GMT+07:00 Toby kenzo tobyke...@yahoo.co.id >>>>>>>> [belajar-excel] <belajar-excel@yahoogroups.com>: >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Dear Lukman, >>>>>>>>> >>>>>>>>> Menurut saya masih bisa di simplfy programnya dgn tidak terlalu >>>>>>>>> banyak menggunakan "kondisi". >>>>>>>>> Jika memungkinkan,anda bisa menggunakan formula excel dalam suatu >>>>>>>>> sheet untuk melakukan kalkulasi,jadi tidak semua fungsi kalkulasi di >>>>>>>>> lakukan di dalam vba,sebisa mungkin tugas vba hanya memanggil >>>>>>>>> resultnya >>>>>>>>> saja, itu akan lebih cepat. >>>>>>>>> >>>>>>>>> TerimaKasih. >>>>>>>>> >>>>>>>>> Sent from Yahoo Mail on Android >>>>>>>>> <http://overview.mail.yahoo.com/mobile/?.src=Android> >>>>>>>>> >>>>>>>>> ------------------------------ >>>>>>>>> * From: * lkm jktind lkmjkt...@gmail.com [belajar-excel] < >>>>>>>>> belajar-excel@yahoogroups.com>; >>>>>>>>> * To: * belajar-excel@yahoogroups com < >>>>>>>>> belajar-excel@yahoogroups.com>; >>>>>>>>> * Subject: * [belajar-excel] Do Case atau select Case [2 >>>>>>>>> Attachments] >>>>>>>>> * Sent: * Sun, Jun 7, 2015 6:15:17 AM >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Saya telah membuat VBA (seperti terlampir di email ini.) >>>>>>>>> >>>>>>>>> Tapi rasanya lambat dalam memproses data. >>>>>>>>> >>>>>>>>> bila mengunakan do case atau select case apakah akan lebih cepat >>>>>>>>> ? >>>>>>>>> >>>>>>>>> bagaimana cara merubahnya . bila hendak mengunakan do case. >>>>>>>>> /select case. >>>>>>>>> >>>>>>>>> >>>>>>>>> Salam >>>>>>>>> >>>>>>>>> Lukman >>>>>>>>> >>>>>>>>> >>>>>>>>> NB : >>>>>>>>> 1. Komplit_1 -- ini lambat >>>>>>>>> 2. Komplit_2 -- ini lebih cepat daripada yang diatas. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> > >