Halo Pak Reza,
1. betul formula itu untuk meng-create nomor transaksi baru yang tergantung
nomor maksimum untuk bulan itu
nomor transaksi dibatasi pak Franky (yang punya kasus) dengan 3 digit saja,
oleh sebab itu digunakan fungsi Right (yang hasilnya selalu string). Maka
digunakan -- untuk konversinya
nah data yang dikenai right adalah data di range dengan nama dtTrn
jadi dtTrn adalah nama range
untuk kasus ini, dtTrn berisi range hasil formula :
=OFFSET(tbl_Voucher_trn!$B$1,1,0,MAX(1,Input!$Q$6-1))
Coba lihat di ribbon Formulas -> Name Manager
Jadi dtTrn adalah semua nomor transaksi yang sudah masuk ke tabel data.
2. formula Q8 adalah formula validasi data akhir.
Setiap baris input oleh user, akan di-validasi oleh formula validasi yang
template formulanya ada di baris : 3 yang mem validasi data baris 3
Artinya validasi per baris data input diletakkan pada baris data inout
tersebut.
Template formula validasi baris input ada di baris 3 pada kolom S yang
bunyinya :
=PRODUCT(1*(LEN(U3:AA3)>0)) -> array formula
yang berarti semua data di U3:AA3 tidak ada yang blank, karena perkalian
seluruh item (product) dari kondisi bahwa [panjang isi data (Len) di range
U3:AA3 > 0] menghasilkan 1
Jika user menginput n data, maka jumlah n data yang diinout ada di cell Q8
Dengan patokan nilai itu, bisa diketahui baris-baris input yang harus di
validasi
Agar bisa langsung cek seluruh input sudah oke, maka perlu validasi total
yang diambil dari nilai-nilai validasi per baris
nah formula di s8 :
=IF(Q8,PRODUCT(OFFSET(S11,1,0,Q8)),0) ->bukan array formula
adalah hasil perkalian seluruh item (Product) seluruh nilai validasi tiap
baris input (offset S11 dengan blok range setinggi nilai Q8), dimana S
berisi formula validasi baris data.
3. VBA
'buat variabel object simpan data suatu object, yaitu variabel rngData akan
menyimpan object range s8
'object ini kan berisi hasil validasi total
Set rngData = Range("s8")
'cek dulu, hasil validasi total, kalau bukan (<>) 0 maka statusnya input
sudah valid dan layak diproses,
'jika ternyata nol, maka gak perlu diproses
If rngData.Value <> 0 Then
'sampai sini, berarti data sudah valid dan akan diproses
'prosesnya adalah meng-copy image data input ke tabel data
'image input disusun menggunakan template formula setelah kolom S.
Template formula ada di baris 3 kan ya
'berikut step copy paste nya
'lihat di worksheet, dari s8 (rngdata), lompat (offset) 4 baris plus
(kebawah karena positif) dan 2 kolom plus (kekanan karena positif)
'sampainya ada di cell : u12.
'sudah sampai dihasil offset, lakukan pengeblokan seluruh cell yang
bersinggungan (ini alasannya ada kolom kosong T dan baris kosong baris 11)
'proses pengeblokan ini dilakukan oleh CurrentRegion
'hasil ngeblok, di copy (masuk clipboard)
rngData.Offset(4, 2).CurrentRegion.Copy
'setelah di copy, akan di paste ke lokasi lain, tetapi hanya nilainya
dan format number
'oleh sebab itu diawali dengan menuju cell tujuan paste (secara
imajinasi tanpa berpindah -- excel lagi berimajinasi disini), yaitu
'di sheet yang disimpan kedalam variabel shtTrn, pada range a1 nya,
kemudian lompat sebanyak nilai variabel lOffset baris
'setelah tiba ditujuan, dilakukan paste spesial dan yang dipilih adalah
valus dan number format
'selesai membayangkan setiap step perintah, excel segera bergerak
shtTrn.Range("a1").Offset(lOffset).PasteSpecial
xlPasteValuesAndNumberFormats
.
.
else 'potongannya dilengkapi satu blok supaya gak bikin bingung
.
.
endif
4. bertanya adalah satu pijakan untuk memantapkan keimanan dengan ilmu.
Harusnya kita semakin menghargai orang-orang yang bersungguh-sungguh dalam
bertanya.
Andai ada yang belum jelas, silakan diungkapkan.
Wassalam.
Kid.
2011/5/18 Reza 2002 <[email protected]>
>
>
> Halo Mas Mr.Kid...
>
> Setelah saya ubek-ubek file yang disaranin, saya kebingungan di formula ini
> nih mas:
>
> 1. cell Q9 =
> {MAX(IF(MID(dtTrn;4;7)=TEXT(M9;"MM/YYYY");--RIGHT(dtTrn;3)))+1}
>
> ini kan berguna untuk menunjukkan no transaksi yg baru. Mohon dijelaskan
> lebih lanjut tentang formula ini mas, terutama maksud dari dtTrn didalam
> fungsi tersebut.
>
> 2. cell S8 = IF(Q8;PRODUCT(OFFSET(S11;1;0;Q8));0)
> ini berguna untuk apa yah? Mohon penjelasannya ttg formula ini Mas..
>
> 3. Kemudian, untuk VB nya:
>
> Set rngData = Range("s8")
> If rngData.Value <> 0 Then
> rngData.Offset(4, 2).CurrentRegion.Copy
> shtTrn.Range("a1").Offset(lOffset).PasteSpecial
> xlPasteValuesAndNumberFormats
>
> Maksud dari "rngData.Offset(4, 2).CurrentRegion.Copy" ini bagaimana? Mohon
> penjelasan juga...
>
> Maaf, saya jadi banyak nanya. Malu bertanya, jadi tambah
> bingung...hehehe....
>
> Makasi atas perhatiannya...
>
> Salam
>
> Reza
>
>
>