15 New Messages
Digest #1884
2a
Re: Input database dengan UserForm ke PC Server sebagai BankData by "Mr. Kid" nmkid.family@ymail.com
3b
Fw: [belajar-excel] perbanyak sheet berdarkan validation list by "hendrik karnadi" hendrikkarnadi
3c
Re: Fw: [belajar-excel] perbanyak sheet berdarkan validation list by "Mr. Kid" nmkid.family@ymail.com
Messages
Fri Nov 2, 2012 12:37 pm (PDT) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
Asumsinya, data inputan seperti dalam sheet coba_proses
Kemudian sheet tersebut diproses dengan menjalankan prosedur bernama
'Proses'
Bunyi prosedur Proses adalah :
Public Sub Proses()
Dim shtDT As Worksheet
Dim rngDT As Range, rngLoopDT As Range
Dim rngRef As Range, rngLoopRef As Range
Dim rngLibur As Range
Dim sDTSek As String, sDTAcc As String, sDTKode As String
Dim dtDTTglTr As Date
Dim dblRefFee As Double, dblRefTax As Double
Dim lRefNDay As Long
'tentukan sheet yang dikerjakan
'misal sheet tersebut sedang aktif, maka bis dengan activesheet
'bisa diganti dengan worksheets("nama sheetnya")
'atau merujuk nama object seperti Sheet4 seperti :
Set shtDT = Sheet4
'hilangkan baris kosong diantara record data
'baris kosong membuat dataset tidak berkaidah database
'asumsi : kolom yang selalu terisi adalah kolom Ticker (kolom E)
'kolom E adalah kolom ke-5 dalam dataset, karena dataset mulai dari
kolom A
With shtDT
.AutoFilterMode = False 'turn off autofilter
'pada area mulai dari a1 sampai cell terakhir data offset 1
With .Range(.Range("a1"),
.Range("a1").SpecialCells(xlCellTypeLastCell).Offset(1))
.AutoFilter 5, "=" 'autofilter kolom ke-5
dalam dataset yang blank
'dari header lompat 1 ke bawah (offset 1)
'pilih yang tampak saja (hasil autofilter)
'dihapus barisnya (entirerow.delete)
.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
.AutoFilterMode = False 'turn off autofilter
End With
'tentukan area data inputan yang sekarang menjadi 1 area data saja
'karena sudah dihilangkan baris kosongnya
Set rngDT = shtDT.Range("a1").CurrentRegion
Set rngRef = Sheet5.Range("a1").CurrentRegion
'tentukan area referensi termasuk header
Set rngRef = rngRef.Offset(1).Resize(rngRef.Rows.Count - 1, 1) 'area
ref tanpa header dan hanya 1 kolom
Set rngLibur = Sheet5.Range("n1").CurrentRegion.Resize(, 1) 'area
hari libur (1 kolom):kolom pertama
'sort hari libur agar ascending (memudahkan formula)
rngLibur.CurrentRegion.Sort rngLibur.Resize(1, 1), xlAscending,
Header:=xlYes
'rngllibur dibuat tanpa header
Set rngLibur = rngLibur.Offset(1).Resize(rngLibur.Rows.Count - 1)
'loop disetiap cell kolom E mulai record pertama (baris 2 = offset 1
baris)
'kolom E adalah lompat 4 kolom (offset 4 kolom)
For Each rngLoopDT In rngDT.Resize(, 1).Offset(1, 4)
With rngLoopDT 'pada range yang sedang
diproses (di kolom E loh ya)
If LenB(.Value) <> 0 Then 'gak blank ?
'ambil data DT untuk cari nilai di referensi database
sDTSek = UCase$(.Offset(0, -4).Value) 'ada di kolom A
(offset -4 kolom = 4 kolom kekiri dari E)
sDTAcc = UCase$(.Offset(0, -3).Value) 'di kol B
sDTKode = UCase$(.Offset(0, 1).Value) 'di kol F (offset 1
kolom = 1 kolom kekanan dari E)
dtDTTglTr = .Offset(0, -2).Value
'cari di referensi database, untuk kondisi yang sesuai data
DT yang diambil
'loop selalu berdasar 1 kolom, dan nilai diambil dengan
merujuk ke baris diproses
'untuk ref, bisa berdasar rngref yang merujuk ke kolom A
dan sudah tanpa header
dblRefFee = 0
dblRefTax = 0
lRefNDay = 0
For Each rngLoopRef In rngRef
With rngLoopRef 'pada range yang diproses (kol A)
If UCase$(.Value) = sDTSek
Then 'sekuritas sama ?
If UCase$(.Offset(0, 1).Value) = sDTAcc
Then 'No Acc (offset 1 kolom) sama ?
If .Offset(0, 2).Value <= dtDTTglTr
Then 'tgltr data >= tgl berlaku mulai ?
If .Offset(0, 3).Value >= dtDTTglTr
Then 'tgltr data <= tgl berlaku sampai ?
If UCase$(.Offset(0, 4).Value) =
sDTKode Then 'No Acc (offset 1 kolom) ?
'ambil data referensi
dblRefFee = .Offset(0, 5).Value
dblRefTax = .Offset(0, 6).Value
lRefNDay = .Offset(0, 7).Value
'karena sudah dapat, maka
keluar dari loop ref
Exit For
End If
End If
End If
End If
End If
End With
Next rngLoopRef
'isi data
'>> ganti dengan hasil UCase
.Offset(0, -4).Value = sDTSek
'kol A
.Offset(0, -3).Value = sDTAcc
'kol B
.Offset(0, -1).Value = UCase$(.Offset(0, -1).Value)
'kol D
.Value = UCase$(.Value)
'kol E
.Offset(0, 1).Value = sDTKode
'kol F
'>> fee (offset 5 kolom) : =ABS(G2) * H2 * %feedb [G :
offset 2 kolom; H : offset 3 kolom]
.Offset(0, 5).Value = Abs(.Offset(0, 2).Value) * .Offset(0,
3).Value * dblRefFee
'>> tax (offset 6 kolom) : =ABS(G2) * H2 * %taxdb [G :
offset 2 kolom; H : offset 3 kolom]
.Offset(0, 6).Value = Abs(.Offset(0, 2).Value) * .Offset(0,
3).Value * dblRefTax
'>> tgl_jt (offset 8 kolom) :
=Workday(C2,ndaydb,range_liburnas) [C : offset -2 kolom]
.Offset(0, 8).Value = _
Application.WorksheetFunction.WorkDay(.Offset(0,
-2).Value, lRefNDay, rngLibur)
.Offset(0, 8).NumberFormat = "YYYY-MM-DD"
Else
'clear kolom fee,tax, dan tgl_jt
'pemeriksaan dan konfirmasi dapat dilakukan dengan
'mem-filter kolom fee atau tax atau tgl_jt yang kosong
.Offset(0, 5).ClearContents
.Offset(0, 6).ClearContents
.Offset(0, 8).ClearContents
End If
End With
Next rngLoopDT
End Sub
Wassalam,
Kid.
2012/11/2 lkm jktind <lkmjktind@gmail.com >
> **
>
>
> Mohon maaf.
> sedang berhalangan.
> Baru sempat membalas email saat ini.
>
> Berikut ini : saya kirimkan . lagi contoh file . yg saya kehendaki hasil
> nya seperti si sheet hasil.
> dan mau nya diselesaikan dengan cara loopping.
>
>
> Sebelum nya saya ucapkan terima kasih.
>
>
> Salam Lukman
>
>
> NB : mau mengambil data berapa % fee jual/beli , berapa % Tax dan
> Lamanya tenggang waktu berikut jadwal hari libur .
> Data tersebut ada di sheet database
>
>
>
Kemudian sheet tersebut diproses dengan menjalankan prosedur bernama
'Proses'
Bunyi prosedur Proses adalah :
Public Sub Proses()
Dim shtDT As Worksheet
Dim rngDT As Range, rngLoopDT As Range
Dim rngRef As Range, rngLoopRef As Range
Dim rngLibur As Range
Dim sDTSek As String, sDTAcc As String, sDTKode As String
Dim dtDTTglTr As Date
Dim dblRefFee As Double, dblRefTax As Double
Dim lRefNDay As Long
'tentukan sheet yang dikerjakan
'misal sheet tersebut sedang aktif, maka bis dengan activesheet
'bisa diganti dengan worksheets("
'atau merujuk nama object seperti Sheet4 seperti :
Set shtDT = Sheet4
'hilangkan baris kosong diantara record data
'baris kosong membuat dataset tidak berkaidah database
'asumsi : kolom yang selalu terisi adalah kolom Ticker (kolom E)
'kolom E adalah kolom ke-5 dalam dataset, karena dataset mulai dari
kolom A
With shtDT
.AutoFilterMode = False 'turn off autofilter
'pada area mulai dari a1 sampai cell terakhir data offset 1
With .Range(.Range(
.Range("a1")
.AutoFilter 5, "=" 'autofilter kolom ke-5
dalam dataset yang blank
'dari header lompat 1 ke bawah (offset 1)
'pilih yang tampak saja (hasil autofilter)
'dihapus barisnya (entirerow.delete)
.Offset(1).SpecialC
End With
.AutoFilterMode = False 'turn off autofilter
End With
'tentukan area data inputan yang sekarang menjadi 1 area data saja
'karena sudah dihilangkan baris kosongnya
Set rngDT = shtDT.Range(
Set rngRef = Sheet5.Range(
'tentukan area referensi termasuk header
Set rngRef = rngRef.Offset(
ref tanpa header dan hanya 1 kolom
Set rngLibur = Sheet5.Range(
hari libur (1 kolom):kolom pertama
'sort hari libur agar ascending (memudahkan formula)
rngLibur.CurrentReg
Header:=xlYes
'rngllibur dibuat tanpa header
Set rngLibur = rngLibur.Offset(
'loop disetiap cell kolom E mulai record pertama (baris 2 = offset 1
baris)
'kolom E adalah lompat 4 kolom (offset 4 kolom)
For Each rngLoopDT In rngDT.Resize(
With rngLoopDT 'pada range yang sedang
diproses (di kolom E loh ya)
If LenB(.Value) <> 0 Then 'gak blank ?
'ambil data DT untuk cari nilai di referensi database
sDTSek = UCase$(.Offset(
(offset -4 kolom = 4 kolom kekiri dari E)
sDTAcc = UCase$(.Offset(
sDTKode = UCase$(.Offset(
kolom = 1 kolom kekanan dari E)
dtDTTglTr = .Offset(0, -2).Value
'cari di referensi database, untuk kondisi yang sesuai data
DT yang diambil
'loop selalu berdasar 1 kolom, dan nilai diambil dengan
merujuk ke baris diproses
'untuk ref, bisa berdasar rngref yang merujuk ke kolom A
dan sudah tanpa header
dblRefFee = 0
dblRefTax = 0
lRefNDay = 0
For Each rngLoopRef In rngRef
With rngLoopRef 'pada range yang diproses (kol A)
If UCase$(.Value) = sDTSek
Then 'sekuritas sama ?
If UCase$(.Offset(
Then 'No Acc (offset 1 kolom) sama ?
If .Offset(0, 2).Value <= dtDTTglTr
Then 'tgltr data >= tgl berlaku mulai ?
If .Offset(0, 3).Value >= dtDTTglTr
Then 'tgltr data <= tgl berlaku sampai ?
If UCase$(.Offset(
sDTKode Then 'No Acc (offset 1 kolom) ?
'ambil data referensi
dblRefFee = .Offset(0, 5).Value
dblRefTax = .Offset(0, 6).Value
lRefNDay = .Offset(0, 7).Value
'karena sudah dapat, maka
keluar dari loop ref
Exit For
End If
End If
End If
End If
End If
End With
Next rngLoopRef
'isi data
'>> ganti dengan hasil UCase
.Offset(0, -4).Value = sDTSek
'kol A
.Offset(0, -3).Value = sDTAcc
'kol B
.Offset(0, -1).Value = UCase$(.Offset(
'kol D
.Value = UCase$(.Value)
'kol E
.Offset(0, 1).Value = sDTKode
'kol F
'>> fee (offset 5 kolom) : =ABS(G2) * H2 * %feedb [G :
offset 2 kolom; H : offset 3 kolom]
.Offset(0, 5).Value = Abs(.Offset(
3).Value * dblRefFee
'>> tax (offset 6 kolom) : =ABS(G2) * H2 * %taxdb [G :
offset 2 kolom; H : offset 3 kolom]
.Offset(0, 6).Value = Abs(.Offset(
3).Value * dblRefTax
'>> tgl_jt (offset 8 kolom) :
=Workday(C2,
.Offset(0, 8).Value = _
Application.
-2).Value, lRefNDay, rngLibur)
.Offset(0, 8).NumberFormat = "YYYY-MM-DD"
Else
'clear kolom fee,tax, dan tgl_jt
'pemeriksaan dan konfirmasi dapat dilakukan dengan
'mem-filter kolom fee atau tax atau tgl_jt yang kosong
.Offset(0, 5).ClearContents
.Offset(0, 6).ClearContents
.Offset(0, 8).ClearContents
End If
End With
Next rngLoopDT
End Sub
Wassalam,
Kid.
2012/11/2 lkm jktind <lkmjktind@gmail.
> **
>
>
> Mohon maaf.
> sedang berhalangan.
> Baru sempat membalas email saat ini.
>
> Berikut ini : saya kirimkan . lagi contoh file . yg saya kehendaki hasil
> nya seperti si sheet hasil.
> dan mau nya diselesaikan dengan cara loopping.
>
>
> Sebelum nya saya ucapkan terima kasih.
>
>
> Salam Lukman
>
>
> NB : mau mengambil data berapa % fee jual/beli , berapa % Tax dan
> Lamanya tenggang waktu berikut jadwal hari libur .
> Data tersebut ada di sheet database
>
>
>
Fri Nov 2, 2012 10:43 pm (PDT) . Posted by:
"lkm jktind" lkmjkt
Terima kasih atas jawabanannya.
Pak Kid
sudah sesuai dengan yang saya kehendaki.
Tapi untuk dapat memahami cara kerja nya mungkin saya masih butuh
semingguan.
Salam
Lukman
2012/11/3 Mr. Kid <mr.nmkid@gmail.com >
> **
>
>
> Asumsinya, data inputan seperti dalam sheet coba_proses
> Kemudian sheet tersebut diproses dengan menjalankan prosedur bernama
> 'Proses'
>
> Bunyi prosedur Proses adalah :
> Public Sub Proses()
> Dim shtDT As Worksheet
> Dim rngDT As Range, rngLoopDT As Range
> Dim rngRef As Range, rngLoopRef As Range
> Dim rngLibur As Range
> Dim sDTSek As String, sDTAcc As String, sDTKode As String
> Dim dtDTTglTr As Date
> Dim dblRefFee As Double, dblRefTax As Double
> Dim lRefNDay As Long
>
> 'tentukan sheet yang dikerjakan
> 'misal sheet tersebut sedang aktif, maka bis dengan activesheet
> 'bisa diganti dengan worksheets("nama sheetnya")
> 'atau merujuk nama object seperti Sheet4 seperti :
> Set shtDT = Sheet4
>
> 'hilangkan baris kosong diantara record data
> 'baris kosong membuat dataset tidak berkaidah database
> 'asumsi : kolom yang selalu terisi adalah kolom Ticker (kolom E)
> 'kolom E adalah kolom ke-5 dalam dataset, karena dataset mulai dari
> kolom A
> With shtDT
> .AutoFilterMode = False 'turn off autofilter
>
> 'pada area mulai dari a1 sampai cell terakhir data offset 1
> With .Range(.Range("a1"),
> .Range("a1").SpecialCells(xlCellTypeLastCell).Offset(1))
> .AutoFilter 5, "=" 'autofilter kolom ke-5
> dalam dataset yang blank
> 'dari header lompat 1 ke bawah (offset 1)
> 'pilih yang tampak saja (hasil autofilter)
> 'dihapus barisnya (entirerow.delete)
> .Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
> End With
> .AutoFilterMode = False 'turn off autofilter
> End With
>
> 'tentukan area data inputan yang sekarang menjadi 1 area data saja
> 'karena sudah dihilangkan baris kosongnya
> Set rngDT = shtDT.Range("a1").CurrentRegion
>
> Set rngRef = Sheet5.Range("a1").CurrentRegion
> 'tentukan area referensi termasuk header
> Set rngRef = rngRef.Offset(1).Resize(rngRef.Rows.Count - 1, 1) 'area
> ref tanpa header dan hanya 1 kolom
>
> Set rngLibur = Sheet5.Range("n1").CurrentRegion.Resize(, 1) 'area
> hari libur (1 kolom):kolom pertama
>
> 'sort hari libur agar ascending (memudahkan formula)
> rngLibur.CurrentRegion.Sort rngLibur.Resize(1, 1), xlAscending,
> Header:=xlYes
>
> 'rngllibur dibuat tanpa header
> Set rngLibur = rngLibur.Offset(1).Resize(rngLibur.Rows.Count - 1)
>
> 'loop disetiap cell kolom E mulai record pertama (baris 2 = offset 1
> baris)
> 'kolom E adalah lompat 4 kolom (offset 4 kolom)
> For Each rngLoopDT In rngDT.Resize(, 1).Offset(1, 4)
> With rngLoopDT 'pada range yang sedang
> diproses (di kolom E loh ya)
> If LenB(.Value) <> 0 Then 'gak blank ?
> 'ambil data DT untuk cari nilai di referensi database
> sDTSek = UCase$(.Offset(0, -4).Value) 'ada di kolom A
> (offset -4 kolom = 4 kolom kekiri dari E)
> sDTAcc = UCase$(.Offset(0, -3).Value) 'di kol B
> sDTKode = UCase$(.Offset(0, 1).Value) 'di kol F (offset
> 1 kolom = 1 kolom kekanan dari E)
> dtDTTglTr = .Offset(0, -2).Value
>
> 'cari di referensi database, untuk kondisi yang sesuai
> data DT yang diambil
> 'loop selalu berdasar 1 kolom, dan nilai diambil dengan
> merujuk ke baris diproses
> 'untuk ref, bisa berdasar rngref yang merujuk ke kolom A
> dan sudah tanpa header
> dblRefFee = 0
> dblRefTax = 0
> lRefNDay = 0
> For Each rngLoopRef In rngRef
> With rngLoopRef 'pada range yang diproses (kol
> A)
> If UCase$(.Value) = sDTSek
> Then 'sekuritas sama ?
> If UCase$(.Offset(0, 1).Value) = sDTAcc
> Then 'No Acc (offset 1 kolom) sama ?
> If .Offset(0, 2).Value <= dtDTTglTr
> Then 'tgltr data >= tgl berlaku mulai ?
> If .Offset(0, 3).Value >= dtDTTglTr
> Then 'tgltr data <= tgl berlaku sampai ?
> If UCase$(.Offset(0, 4).Value) =
> sDTKode Then 'No Acc (offset 1 kolom) ?
> 'ambil data referensi
> dblRefFee = .Offset(0, 5).Value
> dblRefTax = .Offset(0, 6).Value
> lRefNDay = .Offset(0, 7).Value
>
> 'karena sudah dapat, maka
> keluar dari loop ref
> Exit For
> End If
> End If
> End If
> End If
> End If
> End With
> Next rngLoopRef
>
> 'isi data
> '>> ganti dengan hasil UCase
> .Offset(0, -4).Value = sDTSek
> 'kol A
> .Offset(0, -3).Value = sDTAcc
> 'kol B
> .Offset(0, -1).Value = UCase$(.Offset(0, -1).Value)
> 'kol D
> .Value = UCase$(.Value)
> 'kol E
> .Offset(0, 1).Value = sDTKode
> 'kol F
>
> '>> fee (offset 5 kolom) : =ABS(G2) * H2 * %feedb [G :
> offset 2 kolom; H : offset 3 kolom]
> .Offset(0, 5).Value = Abs(.Offset(0, 2).Value) *
> .Offset(0, 3).Value * dblRefFee
>
> '>> tax (offset 6 kolom) : =ABS(G2) * H2 * %taxdb [G :
> offset 2 kolom; H : offset 3 kolom]
> .Offset(0, 6).Value = Abs(.Offset(0, 2).Value) *
> .Offset(0, 3).Value * dblRefTax
>
> '>> tgl_jt (offset 8 kolom) :
> =Workday(C2,ndaydb,range_liburnas) [C : offset -2 kolom]
> .Offset(0, 8).Value = _
> Application.WorksheetFunction.WorkDay(.Offset(0,
> -2).Value, lRefNDay, rngLibur)
> .Offset(0, 8).NumberFormat = "YYYY-MM-DD"
> Else
> 'clear kolom fee,tax, dan tgl_jt
> 'pemeriksaan dan konfirmasi dapat dilakukan dengan
> 'mem-filter kolom fee atau tax atau tgl_jt yang kosong
> .Offset(0, 5).ClearContents
> .Offset(0, 6).ClearContents
> .Offset(0, 8).ClearContents
> End If
> End With
> Next rngLoopDT
> End Sub
>
> Wassalam,
> Kid.
>
>
>
>
>
>
> 2012/11/2 lkm jktind <lkmjktind@gmail.com >
>
>> **
>>
>>
>> Mohon maaf.
>> sedang berhalangan.
>> Baru sempat membalas email saat ini.
>>
>> Berikut ini : saya kirimkan . lagi contoh file . yg saya kehendaki
>> hasil nya seperti si sheet hasil.
>> dan mau nya diselesaikan dengan cara loopping.
>>
>>
>> Sebelum nya saya ucapkan terima kasih.
>>
>>
>> Salam Lukman
>>
>>
>> NB : mau mengambil data berapa % fee jual/beli , berapa % Tax dan
>> Lamanya tenggang waktu berikut jadwal hari libur .
>> Data tersebut ada di sheet database
>>
>>
>>
>
>
Pak Kid
sudah sesuai dengan yang saya kehendaki.
Tapi untuk dapat memahami cara kerja nya mungkin saya masih butuh
semingguan.
Salam
Lukman
2012/11/3 Mr. Kid <mr.nmkid@gmail.
> **
>
>
> Asumsinya, data inputan seperti dalam sheet coba_proses
> Kemudian sheet tersebut diproses dengan menjalankan prosedur bernama
> 'Proses'
>
> Bunyi prosedur Proses adalah :
> Public Sub Proses()
> Dim shtDT As Worksheet
> Dim rngDT As Range, rngLoopDT As Range
> Dim rngRef As Range, rngLoopRef As Range
> Dim rngLibur As Range
> Dim sDTSek As String, sDTAcc As String, sDTKode As String
> Dim dtDTTglTr As Date
> Dim dblRefFee As Double, dblRefTax As Double
> Dim lRefNDay As Long
>
> 'tentukan sheet yang dikerjakan
> 'misal sheet tersebut sedang aktif, maka bis dengan activesheet
> 'bisa diganti dengan worksheets("
> 'atau merujuk nama object seperti Sheet4 seperti :
> Set shtDT = Sheet4
>
> 'hilangkan baris kosong diantara record data
> 'baris kosong membuat dataset tidak berkaidah database
> 'asumsi : kolom yang selalu terisi adalah kolom Ticker (kolom E)
> 'kolom E adalah kolom ke-5 dalam dataset, karena dataset mulai dari
> kolom A
> With shtDT
> .AutoFilterMode = False 'turn off autofilter
>
> 'pada area mulai dari a1 sampai cell terakhir data offset 1
> With .Range(.Range(
> .Range("a1")
> .AutoFilter 5, "=" 'autofilter kolom ke-5
> dalam dataset yang blank
> 'dari header lompat 1 ke bawah (offset 1)
> 'pilih yang tampak saja (hasil autofilter)
> 'dihapus barisnya (entirerow.delete)
> .Offset(1).SpecialC
> End With
> .AutoFilterMode = False 'turn off autofilter
> End With
>
> 'tentukan area data inputan yang sekarang menjadi 1 area data saja
> 'karena sudah dihilangkan baris kosongnya
> Set rngDT = shtDT.Range(
>
> Set rngRef = Sheet5.Range(
> 'tentukan area referensi termasuk header
> Set rngRef = rngRef.Offset(
> ref tanpa header dan hanya 1 kolom
>
> Set rngLibur = Sheet5.Range(
> hari libur (1 kolom):kolom pertama
>
> 'sort hari libur agar ascending (memudahkan formula)
> rngLibur.CurrentReg
> Header:=xlYes
>
> 'rngllibur dibuat tanpa header
> Set rngLibur = rngLibur.Offset(
>
> 'loop disetiap cell kolom E mulai record pertama (baris 2 = offset 1
> baris)
> 'kolom E adalah lompat 4 kolom (offset 4 kolom)
> For Each rngLoopDT In rngDT.Resize(
> With rngLoopDT 'pada range yang sedang
> diproses (di kolom E loh ya)
> If LenB(.Value) <> 0 Then 'gak blank ?
> 'ambil data DT untuk cari nilai di referensi database
> sDTSek = UCase$(.Offset(
> (offset -4 kolom = 4 kolom kekiri dari E)
> sDTAcc = UCase$(.Offset(
> sDTKode = UCase$(.Offset(
> 1 kolom = 1 kolom kekanan dari E)
> dtDTTglTr = .Offset(0, -2).Value
>
> 'cari di referensi database, untuk kondisi yang sesuai
> data DT yang diambil
> 'loop selalu berdasar 1 kolom, dan nilai diambil dengan
> merujuk ke baris diproses
> 'untuk ref, bisa berdasar rngref yang merujuk ke kolom A
> dan sudah tanpa header
> dblRefFee = 0
> dblRefTax = 0
> lRefNDay = 0
> For Each rngLoopRef In rngRef
> With rngLoopRef 'pada range yang diproses (kol
> A)
> If UCase$(.Value) = sDTSek
> Then 'sekuritas sama ?
> If UCase$(.Offset(
> Then 'No Acc (offset 1 kolom) sama ?
> If .Offset(0, 2).Value <= dtDTTglTr
> Then 'tgltr data >= tgl berlaku mulai ?
> If .Offset(0, 3).Value >= dtDTTglTr
> Then 'tgltr data <= tgl berlaku sampai ?
> If UCase$(.Offset(
> sDTKode Then 'No Acc (offset 1 kolom) ?
> 'ambil data referensi
> dblRefFee = .Offset(0, 5).Value
> dblRefTax = .Offset(0, 6).Value
> lRefNDay = .Offset(0, 7).Value
>
> 'karena sudah dapat, maka
> keluar dari loop ref
> Exit For
> End If
> End If
> End If
> End If
> End If
> End With
> Next rngLoopRef
>
> 'isi data
> '>> ganti dengan hasil UCase
> .Offset(0, -4).Value = sDTSek
> 'kol A
> .Offset(0, -3).Value = sDTAcc
> 'kol B
> .Offset(0, -1).Value = UCase$(.Offset(
> 'kol D
> .Value = UCase$(.Value)
> 'kol E
> .Offset(0, 1).Value = sDTKode
> 'kol F
>
> '>> fee (offset 5 kolom) : =ABS(G2) * H2 * %feedb [G :
> offset 2 kolom; H : offset 3 kolom]
> .Offset(0, 5).Value = Abs(.Offset(
> .Offset(0, 3).Value * dblRefFee
>
> '>> tax (offset 6 kolom) : =ABS(G2) * H2 * %taxdb [G :
> offset 2 kolom; H : offset 3 kolom]
> .Offset(0, 6).Value = Abs(.Offset(
> .Offset(0, 3).Value * dblRefTax
>
> '>> tgl_jt (offset 8 kolom) :
> =Workday(C2,
> .Offset(0, 8).Value = _
> Application.
> -2).Value, lRefNDay, rngLibur)
> .Offset(0, 8).NumberFormat = "YYYY-MM-DD"
> Else
> 'clear kolom fee,tax, dan tgl_jt
> 'pemeriksaan dan konfirmasi dapat dilakukan dengan
> 'mem-filter kolom fee atau tax atau tgl_jt yang kosong
> .Offset(0, 5).ClearContents
> .Offset(0, 6).ClearContents
> .Offset(0, 8).ClearContents
> End If
> End With
> Next rngLoopDT
> End Sub
>
> Wassalam,
> Kid.
>
>
>
>
>
>
> 2012/11/2 lkm jktind <lkmjktind@gmail.
>
>> **
>>
>>
>> Mohon maaf.
>> sedang berhalangan.
>> Baru sempat membalas email saat ini.
>>
>> Berikut ini : saya kirimkan . lagi contoh file . yg saya kehendaki
>> hasil nya seperti si sheet hasil.
>> dan mau nya diselesaikan dengan cara loopping.
>>
>>
>> Sebelum nya saya ucapkan terima kasih.
>>
>>
>> Salam Lukman
>>
>>
>> NB : mau mengambil data berapa % fee jual/beli , berapa % Tax dan
>> Lamanya tenggang waktu berikut jadwal hari libur .
>> Data tersebut ada di sheet database
>>
>>
>>
>
>
Fri Nov 2, 2012 11:59 pm (PDT) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
Secara singkat :
1. Untuk sebuah data (misalkan saja data input hanya berisi 1 record saja)
>> perlu loop terhadap sheet database untuk mencari yang sesuai dengan
kondisi data di sheet inputnya berdasar nilai-nilai tertentu.
>> loop itu adalah bagian :
sDTSek = UCase$(.Offset(0, -4).Value) 'ada di kolom A (offset -4 kolom =
4 kolom kekiri dari E)
sDTAcc = UCase$(.Offset(0, -3).Value) 'di kol B
sDTKode = UCase$(.Offset(0, 1).Value) 'di kol F (offset 1
kolom = 1 kolom kekanan dari E)
dtDTTglTr = .Offset(0, -2).Value
'cari di referensi database, untuk kondisi yang sesuai data
DT yang diambil
'loop selalu berdasar 1 kolom, dan nilai diambil dengan
merujuk ke baris diproses
'untuk ref, bisa berdasar rngref yang merujuk ke kolom A
dan sudah tanpa header
dblRefFee = 0
dblRefTax = 0
lRefNDay = 0
For Each rngLoopRef In rngRef
With rngLoopRef 'pada range yang diproses (kol A)
If UCase$(.Value) = sDTSek
Then 'sekuritas sama ?
If UCase$(.Offset(0, 1).Value) = sDTAcc
Then 'No Acc (offset 1 kolom) sama ?
If .Offset(0, 2).Value <= dtDTTglTr
Then 'tgltr data >= tgl berlaku mulai ?
If .Offset(0, 3).Value >= dtDTTglTr
Then 'tgltr data <= tgl berlaku sampai ?
If UCase$(.Offset(0, 4).Value) =
sDTKode Then 'No Acc (offset 1 kolom) ?
'ambil data referensi
dblRefFee = .Offset(0, 5).Value
dblRefTax = .Offset(0, 6).Value
lRefNDay = .Offset(0, 7).Value
'karena sudah dapat, maka
keluar dari loop ref
Exit For
End If
End If
End If
End If
End If
End With
Next rngLoopRef
>> range referensi di sheet database adalah rngRef, yang didefinisikan setelah
baris-baris deklarasi variabel (setelah dim blabla yang banyak). Proses
inisialisasi si rngRef berbunyi :
Set rngRef = Sheet5.Range("*a1*").CurrentRegion
'tentukan area referensi termasuk header
Set rngRef= rngRef.Offset(1).Resize(rngRef.Rows.Count - 1, 1) 'area
ref tanpa header dan hanya 1 kolom
>> nah ternyata rngref cukup didasarkan pada kolom *A *saja. Artinya, kolom
A pasti harus ada datanya.
2. Setelah didapatkan baris data di sheet database yang dibutuhkan dan
disimpan dalam variabel yang di hijau,
proses berikutnya adalah mengkalkulasi untuk menulis di sheet inputan untuk
kolom Fee,Tax, dan tgl_jt
'>> fee (offset 5 kolom) : =ABS(G2) * H2 * %feedb [G : offset 2 kolom; H :
offset 3 kolom]
.Offset(0, 5).Value = Abs(.Offset(0, 2).Value) * .Offset(0,
3).Value * dblRefFee
'>> tax (offset 6 kolom) : =ABS(G2) * H2 * %taxdb [G :
offset 2 kolom; H : offset 3 kolom]
.Offset(0, 6).Value = Abs(.Offset(0, 2).Value) * .Offset(0,
3).Value * dblRefTax
'>> tgl_jt (offset 8 kolom) :
=Workday(C2,ndaydb,range_liburnas) [C : offset -2 kolom]
.Offset(0, 8).Value = _
Application.WorksheetFunction.WorkDay(.Offset(0,
-2).Value, lRefNDay, rngLibur)
.Offset(0, 8).NumberFormat = "YYYY-MM-DD"
>> Kalkulasi tgl_jt memanfaatkan fungsi WorkDay.
Pada proses kalkulasi tgl_jt, dibutuhkan data hari-hari libur nasional yang
sudah ada di sheet database. Maka range data ini didefinisikan dengan :
Set rngLibur= Sheet5.Range("n1").CurrentRegion.Resize(, 1) 'area
hari libur (1 kolom):kolom pertama
'sort hari libur agar ascending (memudahkan formula)
rngLibur.CurrentRegion.*Sort* rngLibur.Resize(1, 1), xlAscending,
Header:=xlYes
'rngllibur dibuat tanpa header
Set rngLibur= rngLibur.Offset(1).Resize(rngLibur.Rows.Count - 1)
>> range hari libur nasional yang dibutuhkan (rngLibur) adalah data tanggal
tanpa teks header.
>> data tanggal* diurutkan* Ascending, siapa tahu membantu mempercepat
kerja Excel dalam menentukan batas libur nasional untuk proses fungsi Workday
yang digunakan untuk menentukan tgl_jt.
3. Cell lain di sheet inputan yang bertipe text ingin dibuat seragam
menggunakan huruf kapital seluruhnya, maka ada proses :
'isi data
'>> ganti dengan hasil UCase
.Offset(0, -4).Value = sDTSek
'kol A
.Offset(0, -3).Value = sDTAcc
'kol B
.Offset(0, -1).Value = UCase$(.Offset(0, -1).Value)
'kol D
.Value = UCase$(.Value)
'kol E
.Offset(0, 1).Value = sDTKode
'kol F
4. Proses 1 sampai 3 di atas, boleh dikerjakan kalau ada data Ticker-nya.
Maka butuh kondisi yang bunyinya :
If LenB(.Value) <> 0 Then 'gak blank ?
'diisi proses 1 sampai 3 diatas
Else
'kalau ticker gak ada isinya, pengen
dikosongkan saja nilai kolom Fee,Tax, dan tgl_jt
'sehingga bisa jadi kolom cek bahwa baris itu
harus dikonfirmasi dengan pengirim data inputan
'karena isi fee,tax, dan tgl_jt nya blank
(bukan 0 atau nullstring, tapi blank)
End If
5. Pada bagian kondisi nomor 4 yang salah (kondisi Else), butuh proses yang
berbunyi :
'clear kolom fee,tax, dan tgl_jt
'pemeriksaan dan konfirmasi dapat dilakukan dengan
'mem-filter kolom fee atau tax atau tgl_jt yang kosong
.Offset(0, 5).ClearContents
.Offset(0, 6).ClearContents
.Offset(0, 8).ClearContents
6. Proses 1 sampai 5 baru berlaku untuk 1 baris data inputan. Karena data
inputan ada lebih dari 1, maka perlu proses loop terhadap setiap baris data
inputan. *Setiap proses dalam loop, akan bekerja pada sebuah baris proses*.
Bagian ini adalah :
'loop disetiap cell kolom E mulai record pertama (baris 2 = offset 1
baris)
'kolom E adalah lompat 4 kolom (offset 4 kolom)
For Each rngLoopDT In rngDT.Resize(, 1).Offset(1, 4)
*With rngLoopDT* 'pada range yang sedang
diproses (di kolom E loh ya)
'isi proses 1 sampai 5 ada disini
*End With*
Next rngLoopDT
>> proses loop terhadap setiap baris data inputan adalah didasarkan pada
nilai di kolom Ticker (kolom E atau kolom ke-5 dari tabel inputan) tapi
tanpa header, karena kolom ini yang menjadi pokok data.
>> range data inputan secara keseluruhan didefinisikan dengan :
'tentukan area data inputan yang sekarang menjadi 1 area data saja
'karena sudah dihilangkan baris kosongnya
Set rngDT = shtDT.Range("a1").CurrentRegion
7. Ternyata, data inputan memiliki baris-baris kosong. Hal ini membuat data
inputan kurang memenuhi kaidah database. Oleh sebab itu diperlukan proses
sebelum pendefinisian setiap range yang digunakan (rngLibur, rngRef,
rngDT).
>> Untuk contoh ini, digunakan basis pemeriksaan berdasar kolom Ticker (bisa
jadi tidak berdasar kolom Ticker).
>> Artinya, jika kolom Ticker kosong, maka diasumsikan baris itu kosong
(tidak ada data sama sekali).
>> Hal ini bisa berakibat bahwa bagian ELSE dalam pengkondisian nomor 4,
tidak perlu ada.
>> Bagian ELSE tetap dibuat, karena kriteria penetapan baris kosong bisa
jadi berubah dan proses konfirmasi data akibat nilai Ticker kosong (bagian
ELSE) juga harus tetap ada.
>> Untuk menghilangkan baris kosong :
'tentukan sheet yang dikerjakan
'misal sheet tersebut sedang aktif, maka bis dengan activesheet
'bisa diganti dengan worksheets("nama sheetnya")
'atau merujuk nama object seperti Sheet4 seperti :
Set shtDT = Sheet4
'hilangkan baris kosong diantara record data
'baris kosong membuat dataset tidak berkaidah database
'asumsi : kolom yang selalu terisi adalah kolom Ticker (kolom E)
'kolom E adalah kolom ke-5 dalam dataset, karena dataset mulai dari
kolom A
With shtDT
.AutoFilterMode = False 'turn off autofilter
'pada area mulai dari a1 sampai cell terakhir data offset 1
With .Range(.Range("a1"),
.Range("a1").SpecialCells(xlCellTypeLastCell).Offset(1))
.AutoFilter 5, "=" 'autofilter kolom ke-5
dalam dataset yang blank
'dari header lompat 1 ke bawah (offset 1)
'pilih yang tampak saja (hasil autofilter)
'dihapus barisnya (entirerow.delete)
.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
.AutoFilterMode = False 'turn off autofilter
End With
Semoga uraian di atas bisa mempermudah penerlusuran jalan proses prosedur
bernama 'Proses'
Wassalam,
Kid.
2012/11/3 lkm jktind <lkmjktind@gmail.com >
> **
>
>
> Terima kasih atas jawabanannya.
> Pak Kid
> sudah sesuai dengan yang saya kehendaki.
>
> Tapi untuk dapat memahami cara kerja nya mungkin saya masih butuh
> semingguan.
>
> Salam
>
> Lukman
>
>
>
> 2012/11/3 Mr. Kid <mr.nmkid@gmail.com >
>
> **
>>
>>
>> Asumsinya, data inputan seperti dalam sheet coba_proses
>> Kemudian sheet tersebut diproses dengan menjalankan prosedur bernama
>> 'Proses'
>>
>> Bunyi prosedur Proses adalah :
>> Public Sub Proses()
>> Dim shtDT As Worksheet
>> Dim rngDT As Range, rngLoopDT As Range
>> Dim rngRef As Range, rngLoopRef As Range
>> Dim rngLibur As Range
>> Dim sDTSek As String, sDTAcc As String, sDTKode As String
>> Dim dtDTTglTr As Date
>> Dim dblRefFee As Double, dblRefTax As Double
>> Dim lRefNDay As Long
>>
>> 'tentukan sheet yang dikerjakan
>> 'misal sheet tersebut sedang aktif, maka bis dengan activesheet
>> 'bisa diganti dengan worksheets("nama sheetnya")
>> 'atau merujuk nama object seperti Sheet4 seperti :
>> Set shtDT = Sheet4
>>
>> 'hilangkan baris kosong diantara record data
>> 'baris kosong membuat dataset tidak berkaidah database
>> 'asumsi : kolom yang selalu terisi adalah kolom Ticker (kolom E)
>> 'kolom E adalah kolom ke-5 dalam dataset, karena dataset mulai dari
>> kolom A
>> With shtDT
>> .AutoFilterMode = False 'turn off autofilter
>>
>> 'pada area mulai dari a1 sampai cell terakhir data offset 1
>> With .Range(.Range("a1"),
>> .Range("a1").SpecialCells(xlCellTypeLastCell).Offset(1))
>> .AutoFilter 5, "=" 'autofilter kolom
>> ke-5 dalam dataset yang blank
>> 'dari header lompat 1 ke bawah (offset 1)
>> 'pilih yang tampak saja (hasil autofilter)
>> 'dihapus barisnya (entirerow.delete)
>> .Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
>> End With
>> .AutoFilterMode = False 'turn off autofilter
>> End With
>>
>> 'tentukan area data inputan yang sekarang menjadi 1 area data saja
>> 'karena sudah dihilangkan baris kosongnya
>> Set rngDT = shtDT.Range("a1").CurrentRegion
>>
>> Set rngRef = Sheet5.Range("a1").CurrentRegion
>> 'tentukan area referensi termasuk header
>> Set rngRef = rngRef.Offset(1).Resize(rngRef.Rows.Count - 1, 1) 'area
>> ref tanpa header dan hanya 1 kolom
>>
>> Set rngLibur = Sheet5.Range("n1").CurrentRegion.Resize(, 1) 'area
>> hari libur (1 kolom):kolom pertama
>>
>> 'sort hari libur agar ascending (memudahkan formula)
>> rngLibur.CurrentRegion.Sort rngLibur.Resize(1, 1), xlAscending,
>> Header:=xlYes
>>
>> 'rngllibur dibuat tanpa header
>> Set rngLibur = rngLibur.Offset(1).Resize(rngLibur.Rows.Count - 1)
>>
>> 'loop disetiap cell kolom E mulai record pertama (baris 2 = offset 1
>> baris)
>> 'kolom E adalah lompat 4 kolom (offset 4 kolom)
>> For Each rngLoopDT In rngDT.Resize(, 1).Offset(1, 4)
>> With rngLoopDT 'pada range yang sedang
>> diproses (di kolom E loh ya)
>> If LenB(.Value) <> 0 Then 'gak blank ?
>> 'ambil data DT untuk cari nilai di referensi database
>> sDTSek = UCase$(.Offset(0, -4).Value) 'ada di kolom A
>> (offset -4 kolom = 4 kolom kekiri dari E)
>> sDTAcc = UCase$(.Offset(0, -3).Value) 'di kol B
>> sDTKode = UCase$(.Offset(0, 1).Value) 'di kol F (offset
>> 1 kolom = 1 kolom kekanan dari E)
>> dtDTTglTr = .Offset(0, -2).Value
>>
>> 'cari di referensi database, untuk kondisi yang sesuai
>> data DT yang diambil
>> 'loop selalu berdasar 1 kolom, dan nilai diambil dengan
>> merujuk ke baris diproses
>> 'untuk ref, bisa berdasar rngref yang merujuk ke kolom A
>> dan sudah tanpa header
>> dblRefFee = 0
>> dblRefTax = 0
>> lRefNDay = 0
>> For Each rngLoopRef In rngRef
>> With rngLoopRef 'pada range yang diproses (kol
>> A)
>> If UCase$(.Value) = sDTSek
>> Then 'sekuritas sama ?
>> If UCase$(.Offset(0, 1).Value) = sDTAcc
>> Then 'No Acc (offset 1 kolom) sama ?
>> If .Offset(0, 2).Value <= dtDTTglTr
>> Then 'tgltr data >= tgl berlaku mulai ?
>> If .Offset(0, 3).Value >= dtDTTglTr
>> Then 'tgltr data <= tgl berlaku sampai ?
>> If UCase$(.Offset(0, 4).Value) =
>> sDTKode Then 'No Acc (offset 1 kolom) ?
>> 'ambil data referensi
>> dblRefFee = .Offset(0,
>> 5).Value
>> dblRefTax = .Offset(0,
>> 6).Value
>> lRefNDay = .Offset(0, 7).Value
>>
>> 'karena sudah dapat, maka
>> keluar dari loop ref
>> Exit For
>> End If
>> End If
>> End If
>> End If
>> End If
>> End With
>> Next rngLoopRef
>>
>> 'isi data
>> '>> ganti dengan hasil UCase
>> .Offset(0, -4).Value = sDTSek
>> 'kol A
>> .Offset(0, -3).Value = sDTAcc
>> 'kol B
>> .Offset(0, -1).Value = UCase$(.Offset(0, -1).Value)
>> 'kol D
>> .Value = UCase$(.Value)
>> 'kol E
>> .Offset(0, 1).Value = sDTKode
>> 'kol F
>>
>> '>> fee (offset 5 kolom) : =ABS(G2) * H2 * %feedb [G :
>> offset 2 kolom; H : offset 3 kolom]
>> .Offset(0, 5).Value = Abs(.Offset(0, 2).Value) *
>> .Offset(0, 3).Value * dblRefFee
>>
>> '>> tax (offset 6 kolom) : =ABS(G2) * H2 * %taxdb [G :
>> offset 2 kolom; H : offset 3 kolom]
>> .Offset(0, 6).Value = Abs(.Offset(0, 2).Value) *
>> .Offset(0, 3).Value * dblRefTax
>>
>> '>> tgl_jt (offset 8 kolom) :
>> =Workday(C2,ndaydb,range_liburnas) [C : offset -2 kolom]
>> .Offset(0, 8).Value = _
>> Application.WorksheetFunction.WorkDay(.Offset(0,
>> -2).Value, lRefNDay, rngLibur)
>> .Offset(0, 8).NumberFormat = "YYYY-MM-DD"
>> Else
>> 'clear kolom fee,tax, dan tgl_jt
>> 'pemeriksaan dan konfirmasi dapat dilakukan dengan
>> 'mem-filter kolom fee atau tax atau tgl_jt yang kosong
>> .Offset(0, 5).ClearContents
>> .Offset(0, 6).ClearContents
>> .Offset(0, 8).ClearContents
>> End If
>> End With
>> Next rngLoopDT
>> End Sub
>>
>> Wassalam,
>> Kid.
>>
>>
>>
>>
>>
>>
>> 2012/11/2 lkm jktind <lkmjktind@gmail.com >
>>
>>> **
>>>
>>>
>>> Mohon maaf.
>>> sedang berhalangan.
>>> Baru sempat membalas email saat ini.
>>>
>>> Berikut ini : saya kirimkan . lagi contoh file . yg saya kehendaki
>>> hasil nya seperti si sheet hasil.
>>> dan mau nya diselesaikan dengan cara loopping.
>>>
>>>
>>> Sebelum nya saya ucapkan terima kasih.
>>>
>>>
>>> Salam Lukman
>>>
>>>
>>> NB : mau mengambil data berapa % fee jual/beli , berapa % Tax dan
>>> Lamanya tenggang waktu berikut jadwal hari libur .
>>> Data tersebut ada di sheet database
>>>
>>>
>>>
>>
>
>
1. Untuk sebuah data (misalkan saja data input hanya berisi 1 record saja)
>> perlu loop terhadap sheet database untuk mencari yang sesuai dengan
kondisi data di sheet inputnya berdasar nilai-nilai tertentu.
>> loop itu adalah bagian :
sDTSek = UCase$(.Offset(
4 kolom kekiri dari E)
sDTAcc = UCase$(.Offset(
sDTKode = UCase$(.Offset(
kolom = 1 kolom kekanan dari E)
dtDTTglTr = .Offset(0, -2).Value
'cari di referensi database, untuk kondisi yang sesuai data
DT yang diambil
'loop selalu berdasar 1 kolom, dan nilai diambil dengan
merujuk ke baris diproses
'untuk ref, bisa berdasar rngref yang merujuk ke kolom A
dan sudah tanpa header
dblRefFee = 0
dblRefTax = 0
lRefNDay = 0
For Each rngLoopRef In rngRef
With rngLoopRef 'pada range yang diproses (kol A)
If UCase$(.Value) = sDTSek
Then 'sekuritas sama ?
If UCase$(.Offset(
Then 'No Acc (offset 1 kolom) sama ?
If .Offset(0, 2).Value <= dtDTTglTr
Then 'tgltr data >= tgl berlaku mulai ?
If .Offset(0, 3).Value >= dtDTTglTr
Then 'tgltr data <= tgl berlaku sampai ?
If UCase$(.Offset(
sDTKode Then 'No Acc (offset 1 kolom) ?
'ambil data referensi
dblRefFee = .Offset(0, 5).Value
dblRefTax = .Offset(0, 6).Value
lRefNDay = .Offset(0, 7).Value
'karena sudah dapat, maka
keluar dari loop ref
Exit For
End If
End If
End If
End If
End If
End With
Next rngLoopRef
>> range referensi di sheet database adalah rngRef, yang didefinisikan setelah
baris-baris deklarasi variabel (setelah dim blabla yang banyak). Proses
inisialisasi si rngRef berbunyi :
Set rngRef = Sheet5.Range(
'tentukan area referensi termasuk header
Set rngRef= rngRef.Offset(
ref tanpa header dan hanya 1 kolom
>> nah ternyata rngref cukup didasarkan pada kolom *A *saja. Artinya, kolom
A pasti harus ada datanya.
2. Setelah didapatkan baris data di sheet database yang dibutuhkan dan
disimpan dalam variabel yang di hijau,
proses berikutnya adalah mengkalkulasi untuk menulis di sheet inputan untuk
kolom Fee,Tax, dan tgl_jt
'>> fee (offset 5 kolom) : =ABS(G2) * H2 * %feedb [G : offset 2 kolom; H :
offset 3 kolom]
.Offset(0, 5).Value = Abs(.Offset(
3).Value * dblRefFee
'>> tax (offset 6 kolom) : =ABS(G2) * H2 * %taxdb [G :
offset 2 kolom; H : offset 3 kolom]
.Offset(0, 6).Value = Abs(.Offset(
3).Value * dblRefTax
'>> tgl_jt (offset 8 kolom) :
=Workday(C2,
.Offset(0, 8).Value = _
Application.
-2).Value, lRefNDay, rngLibur)
.Offset(0, 8).NumberFormat = "YYYY-MM-DD"
>> Kalkulasi tgl_jt memanfaatkan fungsi WorkDay.
Pada proses kalkulasi tgl_jt, dibutuhkan data hari-hari libur nasional yang
sudah ada di sheet database. Maka range data ini didefinisikan dengan :
Set rngLibur= Sheet5.Range(
hari libur (1 kolom):kolom pertama
'sort hari libur agar ascending (memudahkan formula)
rngLibur.CurrentReg
Header:=xlYes
'rngllibur dibuat tanpa header
Set rngLibur= rngLibur.Offset(
>> range hari libur nasional yang dibutuhkan (rngLibur) adalah data tanggal
tanpa teks header.
>> data tanggal* diurutkan* Ascending, siapa tahu membantu mempercepat
kerja Excel dalam menentukan batas libur nasional untuk proses fungsi Workday
yang digunakan untuk menentukan tgl_jt.
3. Cell lain di sheet inputan yang bertipe text ingin dibuat seragam
menggunakan huruf kapital seluruhnya, maka ada proses :
'isi data
'>> ganti dengan hasil UCase
.Offset(0, -4).Value = sDTSek
'kol A
.Offset(0, -3).Value = sDTAcc
'kol B
.Offset(0, -1).Value = UCase$(.Offset(
'kol D
.Value = UCase$(.Value)
'kol E
.Offset(0, 1).Value = sDTKode
'kol F
4. Proses 1 sampai 3 di atas, boleh dikerjakan kalau ada data Ticker-nya.
Maka butuh kondisi yang bunyinya :
If LenB(.Value) <> 0 Then 'gak blank ?
'diisi proses 1 sampai 3 diatas
Else
'kalau ticker gak ada isinya, pengen
dikosongkan saja nilai kolom Fee,Tax, dan tgl_jt
'sehingga bisa jadi kolom cek bahwa baris itu
harus dikonfirmasi dengan pengirim data inputan
'karena isi fee,tax, dan tgl_jt nya blank
(bukan 0 atau nullstring, tapi blank)
End If
5. Pada bagian kondisi nomor 4 yang salah (kondisi Else), butuh proses yang
berbunyi :
'clear kolom fee,tax, dan tgl_jt
'pemeriksaan dan konfirmasi dapat dilakukan dengan
'mem-filter kolom fee atau tax atau tgl_jt yang kosong
.Offset(0, 5).ClearContents
.Offset(0, 6).ClearContents
.Offset(0, 8).ClearContents
6. Proses 1 sampai 5 baru berlaku untuk 1 baris data inputan. Karena data
inputan ada lebih dari 1, maka perlu proses loop terhadap setiap baris data
inputan. *Setiap proses dalam loop, akan bekerja pada sebuah baris proses*.
Bagian ini adalah :
'loop disetiap cell kolom E mulai record pertama (baris 2 = offset 1
baris)
'kolom E adalah lompat 4 kolom (offset 4 kolom)
For Each rngLoopDT In rngDT.Resize(
*With rngLoopDT* 'pada range yang sedang
diproses (di kolom E loh ya)
'isi proses 1 sampai 5 ada disini
*End With*
Next rngLoopDT
>> proses loop terhadap setiap baris data inputan adalah didasarkan pada
nilai di kolom Ticker (kolom E atau kolom ke-5 dari tabel inputan) tapi
tanpa header, karena kolom ini yang menjadi pokok data.
>> range data inputan secara keseluruhan didefinisikan dengan :
'tentukan area data inputan yang sekarang menjadi 1 area data saja
'karena sudah dihilangkan baris kosongnya
Set rngDT = shtDT.Range(
7. Ternyata, data inputan memiliki baris-baris kosong. Hal ini membuat data
inputan kurang memenuhi kaidah database. Oleh sebab itu diperlukan proses
sebelum pendefinisian setiap range yang digunakan (rngLibur, rngRef,
rngDT).
>> Untuk contoh ini, digunakan basis pemeriksaan berdasar kolom Ticker (bisa
jadi tidak berdasar kolom Ticker).
>> Artinya, jika kolom Ticker kosong, maka diasumsikan baris itu kosong
(tidak ada data sama sekali).
>> Hal ini bisa berakibat bahwa bagian ELSE dalam pengkondisian nomor 4,
tidak perlu ada.
>> Bagian ELSE tetap dibuat, karena kriteria penetapan baris kosong bisa
jadi berubah dan proses konfirmasi data akibat nilai Ticker kosong (bagian
ELSE) juga harus tetap ada.
>> Untuk menghilangkan baris kosong :
'tentukan sheet yang dikerjakan
'misal sheet tersebut sedang aktif, maka bis dengan activesheet
'bisa diganti dengan worksheets("
'atau merujuk nama object seperti Sheet4 seperti :
Set shtDT = Sheet4
'hilangkan baris kosong diantara record data
'baris kosong membuat dataset tidak berkaidah database
'asumsi : kolom yang selalu terisi adalah kolom Ticker (kolom E)
'kolom E adalah kolom ke-5 dalam dataset, karena dataset mulai dari
kolom A
With shtDT
.AutoFilterMode = False 'turn off autofilter
'pada area mulai dari a1 sampai cell terakhir data offset 1
With .Range(.Range(
.Range("a1")
.AutoFilter 5, "=" 'autofilter kolom ke-5
dalam dataset yang blank
'dari header lompat 1 ke bawah (offset 1)
'pilih yang tampak saja (hasil autofilter)
'dihapus barisnya (entirerow.delete)
.Offset(1).SpecialC
End With
.AutoFilterMode = False 'turn off autofilter
End With
Semoga uraian di atas bisa mempermudah penerlusuran jalan proses prosedur
bernama 'Proses'
Wassalam,
Kid.
2012/11/3 lkm jktind <lkmjktind@gmail.
> **
>
>
> Terima kasih atas jawabanannya.
> Pak Kid
> sudah sesuai dengan yang saya kehendaki.
>
> Tapi untuk dapat memahami cara kerja nya mungkin saya masih butuh
> semingguan.
>
> Salam
>
> Lukman
>
>
>
> 2012/11/3 Mr. Kid <mr.nmkid@gmail.
>
> **
>>
>>
>> Asumsinya, data inputan seperti dalam sheet coba_proses
>> Kemudian sheet tersebut diproses dengan menjalankan prosedur bernama
>> 'Proses'
>>
>> Bunyi prosedur Proses adalah :
>> Public Sub Proses()
>> Dim shtDT As Worksheet
>> Dim rngDT As Range, rngLoopDT As Range
>> Dim rngRef As Range, rngLoopRef As Range
>> Dim rngLibur As Range
>> Dim sDTSek As String, sDTAcc As String, sDTKode As String
>> Dim dtDTTglTr As Date
>> Dim dblRefFee As Double, dblRefTax As Double
>> Dim lRefNDay As Long
>>
>> 'tentukan sheet yang dikerjakan
>> 'misal sheet tersebut sedang aktif, maka bis dengan activesheet
>> 'bisa diganti dengan worksheets("
>> 'atau merujuk nama object seperti Sheet4 seperti :
>> Set shtDT = Sheet4
>>
>> 'hilangkan baris kosong diantara record data
>> 'baris kosong membuat dataset tidak berkaidah database
>> 'asumsi : kolom yang selalu terisi adalah kolom Ticker (kolom E)
>> 'kolom E adalah kolom ke-5 dalam dataset, karena dataset mulai dari
>> kolom A
>> With shtDT
>> .AutoFilterMode = False 'turn off autofilter
>>
>> 'pada area mulai dari a1 sampai cell terakhir data offset 1
>> With .Range(.Range(
>> .Range("a1")
>> .AutoFilter 5, "=" 'autofilter kolom
>> ke-5 dalam dataset yang blank
>> 'dari header lompat 1 ke bawah (offset 1)
>> 'pilih yang tampak saja (hasil autofilter)
>> 'dihapus barisnya (entirerow.delete)
>> .Offset(1).SpecialC
>> End With
>> .AutoFilterMode = False 'turn off autofilter
>> End With
>>
>> 'tentukan area data inputan yang sekarang menjadi 1 area data saja
>> 'karena sudah dihilangkan baris kosongnya
>> Set rngDT = shtDT.Range(
>>
>> Set rngRef = Sheet5.Range(
>> 'tentukan area referensi termasuk header
>> Set rngRef = rngRef.Offset(
>> ref tanpa header dan hanya 1 kolom
>>
>> Set rngLibur = Sheet5.Range(
>> hari libur (1 kolom):kolom pertama
>>
>> 'sort hari libur agar ascending (memudahkan formula)
>> rngLibur.CurrentReg
>> Header:=xlYes
>>
>> 'rngllibur dibuat tanpa header
>> Set rngLibur = rngLibur.Offset(
>>
>> 'loop disetiap cell kolom E mulai record pertama (baris 2 = offset 1
>> baris)
>> 'kolom E adalah lompat 4 kolom (offset 4 kolom)
>> For Each rngLoopDT In rngDT.Resize(
>> With rngLoopDT 'pada range yang sedang
>> diproses (di kolom E loh ya)
>> If LenB(.Value) <> 0 Then 'gak blank ?
>> 'ambil data DT untuk cari nilai di referensi database
>> sDTSek = UCase$(.Offset(
>> (offset -4 kolom = 4 kolom kekiri dari E)
>> sDTAcc = UCase$(.Offset(
>> sDTKode = UCase$(.Offset(
>> 1 kolom = 1 kolom kekanan dari E)
>> dtDTTglTr = .Offset(0, -2).Value
>>
>> 'cari di referensi database, untuk kondisi yang sesuai
>> data DT yang diambil
>> 'loop selalu berdasar 1 kolom, dan nilai diambil dengan
>> merujuk ke baris diproses
>> 'untuk ref, bisa berdasar rngref yang merujuk ke kolom A
>> dan sudah tanpa header
>> dblRefFee = 0
>> dblRefTax = 0
>> lRefNDay = 0
>> For Each rngLoopRef In rngRef
>> With rngLoopRef 'pada range yang diproses (kol
>> A)
>> If UCase$(.Value) = sDTSek
>> Then 'sekuritas sama ?
>> If UCase$(.Offset(
>> Then 'No Acc (offset 1 kolom) sama ?
>> If .Offset(0, 2).Value <= dtDTTglTr
>> Then 'tgltr data >= tgl berlaku mulai ?
>> If .Offset(0, 3).Value >= dtDTTglTr
>> Then 'tgltr data <= tgl berlaku sampai ?
>> If UCase$(.Offset(
>> sDTKode Then 'No Acc (offset 1 kolom) ?
>> 'ambil data referensi
>> dblRefFee = .Offset(0,
>> 5).Value
>> dblRefTax = .Offset(0,
>> 6).Value
>> lRefNDay = .Offset(0, 7).Value
>>
>> 'karena sudah dapat, maka
>> keluar dari loop ref
>> Exit For
>> End If
>> End If
>> End If
>> End If
>> End If
>> End With
>> Next rngLoopRef
>>
>> 'isi data
>> '>> ganti dengan hasil UCase
>> .Offset(0, -4).Value = sDTSek
>> 'kol A
>> .Offset(0, -3).Value = sDTAcc
>> 'kol B
>> .Offset(0, -1).Value = UCase$(.Offset(
>> 'kol D
>> .Value = UCase$(.Value)
>> 'kol E
>> .Offset(0, 1).Value = sDTKode
>> 'kol F
>>
>> '>> fee (offset 5 kolom) : =ABS(G2) * H2 * %feedb [G :
>> offset 2 kolom; H : offset 3 kolom]
>> .Offset(0, 5).Value = Abs(.Offset(
>> .Offset(0, 3).Value * dblRefFee
>>
>> '>> tax (offset 6 kolom) : =ABS(G2) * H2 * %taxdb [G :
>> offset 2 kolom; H : offset 3 kolom]
>> .Offset(0, 6).Value = Abs(.Offset(
>> .Offset(0, 3).Value * dblRefTax
>>
>> '>> tgl_jt (offset 8 kolom) :
>> =Workday(C2,
>> .Offset(0, 8).Value = _
>> Application.
>> -2).Value, lRefNDay, rngLibur)
>> .Offset(0, 8).NumberFormat = "YYYY-MM-DD"
>> Else
>> 'clear kolom fee,tax, dan tgl_jt
>> 'pemeriksaan dan konfirmasi dapat dilakukan dengan
>> 'mem-filter kolom fee atau tax atau tgl_jt yang kosong
>> .Offset(0, 5).ClearContents
>> .Offset(0, 6).ClearContents
>> .Offset(0, 8).ClearContents
>> End If
>> End With
>> Next rngLoopDT
>> End Sub
>>
>> Wassalam,
>> Kid.
>>
>>
>>
>>
>>
>>
>> 2012/11/2 lkm jktind <lkmjktind@gmail.
>>
>>> **
>>>
>>>
>>> Mohon maaf.
>>> sedang berhalangan.
>>> Baru sempat membalas email saat ini.
>>>
>>> Berikut ini : saya kirimkan . lagi contoh file . yg saya kehendaki
>>> hasil nya seperti si sheet hasil.
>>> dan mau nya diselesaikan dengan cara loopping.
>>>
>>>
>>> Sebelum nya saya ucapkan terima kasih.
>>>
>>>
>>> Salam Lukman
>>>
>>>
>>> NB : mau mengambil data berapa % fee jual/beli , berapa % Tax dan
>>> Lamanya tenggang waktu berikut jadwal hari libur .
>>> Data tersebut ada di sheet database
>>>
>>>
>>>
>>
>
>
Fri Nov 2, 2012 4:37 pm (PDT) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
*Jika workbook database-nya tidak **tergantung pada VBA*, maka workbook
bisa diset untuk share workbook. Dengan di-share, maka semua interface
(file yang dipakai user untuk meng-update workbook database) bisa membuka
bersama dan meng-update-nya. Jadi tidak ada tunggu giliran pakai.
Jika tergantung pada VBA, maka proses oleh VBA dibatasi (atau malah diblok
sama sekali ya) oleh shared workbook. Tapi, workbook yang dijadikan sebagai
basis data biasanya tidak memerlukan VBA. Kalau ada VBA-nya, malah jadi gak
biasa. Mungkin ada cara agar tidak perlu ada VBA dalam workbook databasenya.
Wassalam,
Kid.
2012/11/2 Harry <hariansyahptk@yahoo.com >
> **
>
>
> Dear BeExceller,
>
> Mencari ilmu pengetahuan tidak pernah ada batas akhirnya.
> Kali ini saya ingin menanyakan kepada rekan-rekan BeExceller sekalian
> (para pakar) mengenai cara input data menggunakan UserForm yang hasil
> inputannya masuk ke file database yang tersimpan di PC Server tanpa adanya
> prose buka-tutup database.
>
> Yang saya tahu selama ini, untuk dapat menginput data melalui UserForm
> yang dapat dilakukan oleh lebih dari 1 PC adalah dengan cara buka-tutup
> file database sebagaima rumus berikut:
> Private Sub UserForm_Initialize()
> 'deklarasi variabel workbook
> Dim wbkPROGRAM As Workbook, wbkDATABASE As Workbook
>
> 'init workbooknya
> Set wbkPROGRAM = ThisWorkbook
>
> '--- WBK READ ONLY ??? ---' >> START
> Dim lTry As Long, lJeda As Long
> Application.ScreenUpdating = False
> Application.DisplayAlerts = False
> CobaBuka:
> For lTry = 1 To 20
> Set wbkDATABASE = Workbooks.Open(wbkPROGRAM.Path &
> "\DATABASE.xls")
> If wbkDATABASE.ReadOnly Then
> wbkDATABASE.Close False
> If lTry = 20 Then
> If MsgBox("Sudah dicoba membuka " & lTry & _
> " kali, dan masih digunakan oleh instansi Excel
> yang lain" & vbCrLf & _
> "Coba lagi ?", vbExclamation + vbYesNo, "Akses ke
> DATABASE") = vbYes Then
> GoTo CobaBuka
> Else
> Application.ScreenUpdating = False
> Exit Sub
> End If
> End If
> Else
> wbkPROGRAM.Activate
> Exit For
> End If
> For lJeda = 1 To 100000000
> Next lJeda
> Next lTry
> Application.ScreenUpdating = True
> '--- WBK READ ONLY ??? ---' >> END
> End Sub
>
> Dengan rumus tersebut diatas, berarti untuk melakukan proses input,
> masing-masing PC harus bergantian untuk melakukan penginputan karena adanya
> proses buka-tutup file database.
> Jika file database aktif (standby) di PC1 berarti PC lainnya tidak bisa
> melakuakn proses input. Dan jika file database selalu aktif atau tidak
> dilakukannya proses tutup file database oleh salah satu PC, berarti PC yang
> lain selamanya tidak dapat melakukan proses penginputan data.
>
> Berdasarkan studi kasus tersebut, saya berfikir bisakah file database
> tersebut diatas disimpan pada salah satu PC server dimana file database
> tersebut selalu aktif (standby) dan siap menerima proses penginputan dari
> banyak PC sekaligus.
>
> Saya mendapat informasi dari teman bahwa selain Jaringan Internet ada yang
> dinamakan Jaringan Intranet. Jaringan Intranet hanya dapat diakses oleh
> PC yang sudah saling mengenal IP Address atau tidak sembarang PC dapat
> mengakses Jaringan Intranet.
>
> Saya kotak-katik komputer ditempat saya bekerja, saya melihat adanya
> Jaringan My Network Places sebagai berikut :
> - My Network Places
> - - Entire Network
> - Microsoft Windows Network
> - Kampus1
> + Lenovo-fe419482
> Server
> - Workgroup
> + Database
> + Lenovo-579c5dcd
> + Sa1
>
> Address Type : Manually Configured
> Ip Address : 192.168.0.130
> Subnet mask : 255.255.255.0
> Dafault Gateway :
>
> Physical Adress : 1C-6F-65-07-E7-ED
>
> Dengan adanya Jaringan My Network Places pada komputer di tempat daya
> bekerja, dapat disimpulkan bahwa Jaringan Intranet juga dapat dilakukan.
>
> Pertanyaan saya adalah:
> Mengacu pada rumus buka-tutup file database tertulis diatas dan Jaringan
> My Network Places, bagaimana caranya atau apa yang harus ditambahkan atau
> diganti atau trik apa yang bisa dilakukan jika kita ingin dapat menginput
> database ke PC Server yang dapat diakses oleh banyak PC secara bersamaan
> tanpa adanya proses buka-tutup database dan tanpa adanya bentrok
> penginputan apakah itu proses Input, Edit atau Hapus database...???
>
> Besar harapan saya kiranya hal tersebut dapat terealisasi atas bantuan dan
> masukan dari rekan-rekan BeExceller sekalian.
>
> Sebelum dan sesudahnya saya mengucapkan banyak terima kasih.
> Wassalam,
>
>
> Harry
>
>
>
>
>
>
>
bisa diset untuk share workbook. Dengan di-share, maka semua interface
(file yang dipakai user untuk meng-update workbook database) bisa membuka
bersama dan meng-update-
Jika tergantung pada VBA, maka proses oleh VBA dibatasi (atau malah diblok
sama sekali ya) oleh shared workbook. Tapi, workbook yang dijadikan sebagai
basis data biasanya tidak memerlukan VBA. Kalau ada VBA-nya, malah jadi gak
biasa. Mungkin ada cara agar tidak perlu ada VBA dalam workbook databasenya.
Wassalam,
Kid.
2012/11/2 Harry <hariansyahptk@
> **
>
>
> Dear BeExceller,
>
> Mencari ilmu pengetahuan tidak pernah ada batas akhirnya.
> Kali ini saya ingin menanyakan kepada rekan-rekan BeExceller sekalian
> (para pakar) mengenai cara input data menggunakan UserForm yang hasil
> inputannya masuk ke file database yang tersimpan di PC Server tanpa adanya
> prose buka-tutup database.
>
> Yang saya tahu selama ini, untuk dapat menginput data melalui UserForm
> yang dapat dilakukan oleh lebih dari 1 PC adalah dengan cara buka-tutup
> file database sebagaima rumus berikut:
> Private Sub UserForm_Initialize
> 'deklarasi variabel workbook
> Dim wbkPROGRAM As Workbook, wbkDATABASE As Workbook
>
> 'init workbooknya
> Set wbkPROGRAM = ThisWorkbook
>
> '--- WBK READ ONLY ??? ---' >> START
> Dim lTry As Long, lJeda As Long
> Application.
> Application.
> CobaBuka:
> For lTry = 1 To 20
> Set wbkDATABASE = Workbooks.Open(
> "\DATABASE.xls"
> If wbkDATABASE.
> wbkDATABASE.
> If lTry = 20 Then
> If MsgBox("Sudah dicoba membuka " & lTry & _
> " kali, dan masih digunakan oleh instansi Excel
> yang lain" & vbCrLf & _
> "Coba lagi ?", vbExclamation + vbYesNo, "Akses ke
> DATABASE") = vbYes Then
> GoTo CobaBuka
> Else
> Application.
> Exit Sub
> End If
> End If
> Else
> wbkPROGRAM.Activate
> Exit For
> End If
> For lJeda = 1 To 100000000
> Next lJeda
> Next lTry
> Application.
> '--- WBK READ ONLY ??? ---' >> END
> End Sub
>
> Dengan rumus tersebut diatas, berarti untuk melakukan proses input,
> masing-masing PC harus bergantian untuk melakukan penginputan karena adanya
> proses buka-tutup file database.
> Jika file database aktif (standby) di PC1 berarti PC lainnya tidak bisa
> melakuakn proses input. Dan jika file database selalu aktif atau tidak
> dilakukannya proses tutup file database oleh salah satu PC, berarti PC yang
> lain selamanya tidak dapat melakukan proses penginputan data.
>
> Berdasarkan studi kasus tersebut, saya berfikir bisakah file database
> tersebut diatas disimpan pada salah satu PC server dimana file database
> tersebut selalu aktif (standby) dan siap menerima proses penginputan dari
> banyak PC sekaligus.
>
> Saya mendapat informasi dari teman bahwa selain Jaringan Internet ada yang
> dinamakan Jaringan Intranet. Jaringan Intranet hanya dapat diakses oleh
> PC yang sudah saling mengenal IP Address atau tidak sembarang PC dapat
> mengakses Jaringan Intranet.
>
> Saya kotak-katik komputer ditempat saya bekerja, saya melihat adanya
> Jaringan My Network Places sebagai berikut :
> - My Network Places
> - - Entire Network
> - Microsoft Windows Network
> - Kampus1
> + Lenovo-fe419482
> Server
> - Workgroup
> + Database
> + Lenovo-579c5dcd
> + Sa1
>
> Address Type : Manually Configured
> Ip Address : 192.168.0.130
> Subnet mask : 255.255.255.
> Dafault Gateway :
>
> Physical Adress : 1C-6F-65-07-
>
> Dengan adanya Jaringan My Network Places pada komputer di tempat daya
> bekerja, dapat disimpulkan bahwa Jaringan Intranet juga dapat dilakukan.
>
> Pertanyaan saya adalah:
> Mengacu pada rumus buka-tutup file database tertulis diatas dan Jaringan
> My Network Places, bagaimana caranya atau apa yang harus ditambahkan atau
> diganti atau trik apa yang bisa dilakukan jika kita ingin dapat menginput
> database ke PC Server yang dapat diakses oleh banyak PC secara bersamaan
> tanpa adanya proses buka-tutup database dan tanpa adanya bentrok
> penginputan apakah itu proses Input, Edit atau Hapus database...?
>
> Besar harapan saya kiranya hal tersebut dapat terealisasi atas bantuan dan
> masukan dari rekan-rekan BeExceller sekalian.
>
> Sebelum dan sesudahnya saya mengucapkan banyak terima kasih.
> Wassalam,
>
>
> Harry
>
>
>
>
>
>
>
Fri Nov 2, 2012 4:39 pm (PDT) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
Hai Johan,
Untuk penyusunan formula output seperti sheet out_tpl_formula, tapi belum
ada VBA untuk meng-create setiap sheet untuk cabang terpilih. Biasanya
banyak BeExceller yang suka membuat formulanya dan variasi formulanya juga
cukup banyak. Untuk meng-create sheet cabang terpilih dengan VBA
memanfaatkan template yang menggunakan formula, kita tunggu saja. Sekarang
sudah cukup banyak BeExceller yang suka bermain dengan VBA.
File terlampir memanfaatkan pivot table saja, termasuk dalam meng-create
sheet cabang terpilih. Agak jarang ditemui BeExceller yang mau bermain VBA
terhadap pivot table. Semoga file terlampir bisa membantu memasyarakatkan
pivot table beserta otomasinya dengan VBA (supaya variasi ide dalam milis
semakin bertambah karena semakin banyak yang mau mempelajarinya).
Wassalam,
Kid.
2012/11/2 Johan hung <johan.hung@gmail.com >
> **
>
>
> Dear Master Excel,
>
> Mohon bantuan rekan-rekan, adakah cara untuk untuk memperbanyak worksheet /
> workbook berdasarkan validation list secara otomatis.
>
> Data contoh terlampir
>
> thanks
>
> Johan
>
> --- Mods ---
> Mohon tidak menyertakan cc atau bcc
> ------------
> _
>
>
Untuk penyusunan formula output seperti sheet out_tpl_formula, tapi belum
ada VBA untuk meng-create setiap sheet untuk cabang terpilih. Biasanya
banyak BeExceller yang suka membuat formulanya dan variasi formulanya juga
cukup banyak. Untuk meng-create sheet cabang terpilih dengan VBA
memanfaatkan template yang menggunakan formula, kita tunggu saja. Sekarang
sudah cukup banyak BeExceller yang suka bermain dengan VBA.
File terlampir memanfaatkan pivot table saja, termasuk dalam meng-create
sheet cabang terpilih. Agak jarang ditemui BeExceller yang mau bermain VBA
terhadap pivot table. Semoga file terlampir bisa membantu memasyarakatkan
pivot table beserta otomasinya dengan VBA (supaya variasi ide dalam milis
semakin bertambah karena semakin banyak yang mau mempelajarinya)
Wassalam,
Kid.
2012/11/2 Johan hung <johan.hung@gmail.
> **
>
>
> Dear Master Excel,
>
> Mohon bantuan rekan-rekan, adakah cara untuk untuk memperbanyak worksheet /
> workbook berdasarkan validation list secara otomatis.
>
> Data contoh terlampir
>
> thanks
>
> Johan
>
> --- Mods ---
> Mohon tidak menyertakan cc atau bcc
> ------------
> _
>
>
Fri Nov 2, 2012 8:00 pm (PDT) . Posted by:
"hendrik karnadi" hendrikkarnadi
Sungguh jawaban yang luar biasa.
Supaya pas dengan keinginan yang empunya soal "secara otomatis memperbanyak sheet/file sesuai dengan nama cabang yang ada di validation list"
kalau boleh usul, disisipkan satu code pada vba sheet6(myTpl) pada bagian ini:
Set shtNew = Sheets.Add(after:=Sheets(Sheets.Count))
shtNew.Name = Range("e6").Value
Set pvt = shtTpl.PivotTables(1)
Salam,
Hendrik Karnadi
----- Forwarded Message -----
From: Mr. Kid <mr.nmkid@gmail.com >
To: belajar-excel@yahoogroups.com
Sent: Saturday, 3 November 2012, 6:23
Subject: Re: [belajar-excel] perbanyak sheet berdarkan validation list
Hai Johan,
Untuk penyusunan formula output seperti sheet out_tpl_formula, tapi belum ada VBA untuk meng-create setiap sheet untuk cabang terpilih. Biasanya banyak BeExceller yang suka membuat formulanyadan variasi formulanya juga cukup banyak. Untuk meng-create sheet cabang terpilih dengan VBA memanfaatkan template yang menggunakan formula, kita tunggu saja. Sekarang sudah cukup banyak BeExceller yang suka bermain dengan VBA.
File terlampir memanfaatkan pivot table saja, termasuk dalam meng-create sheet cabang terpilih. Agak jarang ditemui BeExceller yang mau bermain VBA terhadap pivot table. Semoga file terlampir bisa membantu memasyarakatkan pivot table beserta otomasinya dengan VBA(supaya variasi ide dalam milis semakin bertambah karena semakin banyak yang mau mempelajarinya).
Wassalam,
Kid.
2012/11/2 Johan hung <johan.hung@gmail.com >
>
>Dear Master Excel,
>
>Mohon bantuan rekan-rekan, adakah cara untuk untuk memperbanyak worksheet /
>workbook berdasarkan validation list secara otomatis.
>
>Data contoh terlampir
>
>thanks
>
>Johan
>
>--- Mods ---
>Mohon tidak menyertakan cc atau bcc
>------------
>_
>
Supaya pas dengan keinginan yang empunya soal "secara otomatis memperbanyak sheet/file sesuai dengan nama cabang yang ada di validation list"
kalau boleh usul, disisipkan satu code pada vba sheet6(myTpl) pada bagian ini:
Set shtNew = Sheets.Add(after:
shtNew.Name = Range("e6").
Set pvt = shtTpl.PivotTables(
Salam,
Hendrik Karnadi
----- Forwarded Message -----
From: Mr. Kid <mr.nmkid@gmail.
To: belajar-excel@
Sent: Saturday, 3 November 2012, 6:23
Subject: Re: [belajar-excel] perbanyak sheet berdarkan validation list
Hai Johan,
Untuk penyusunan formula output seperti sheet out_tpl_formula, tapi belum ada VBA untuk meng-create setiap sheet untuk cabang terpilih. Biasanya banyak BeExceller yang suka membuat formulanyadan variasi formulanya juga cukup banyak. Untuk meng-create sheet cabang terpilih dengan VBA memanfaatkan template yang menggunakan formula, kita tunggu saja. Sekarang sudah cukup banyak BeExceller yang suka bermain dengan VBA.
File terlampir memanfaatkan pivot table saja, termasuk dalam meng-create sheet cabang terpilih. Agak jarang ditemui BeExceller yang mau bermain VBA terhadap pivot table. Semoga file terlampir bisa membantu memasyarakatkan pivot table beserta otomasinya dengan VBA(supaya variasi ide dalam milis semakin bertambah karena semakin banyak yang mau mempelajarinya)
Wassalam,
Kid.
2012/11/2 Johan hung <johan.hung@gmail.
>
>Dear Master Excel,
>
>Mohon bantuan rekan-rekan, adakah cara untuk untuk memperbanyak worksheet /
>workbook berdasarkan validation list secara otomatis.
>
>Data contoh terlampir
>
>thanks
>
>Johan
>
>--- Mods ---
>Mohon tidak menyertakan cc atau bcc
>-----------
>_
>
Sat Nov 3, 2012 2:06 am (PDT) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
Oke Pak Hendrik.
Ditambahkan pembuat nama sheet.
Prosedur event change si worksheet jadi :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim shtTpl As Worksheet, shtNew As Worksheet
Dim pvt As PivotTable
Dim lRows As Long
Dim sShtName As String
Set shtTpl = Sheet6
If Not Intersect(Target, shtTpl.Range("e6")) Is Nothing Then
sShtName = shtTpl.Range("e6").Value
On Error Resume Next
Application.DisplayAlerts = False
Sheets(sShtName).Delete
Application.DisplayAlerts = True
Set shtNew = Sheets.Add(after:=Sheets(Sheets.Count))
shtNew.Name = sShtName
Set pvt = shtTpl.PivotTables(1)
Err.Clear
On Error GoTo 0
With shtNew
'copy info output
shtTpl.Range("d3:e6").Copy
.Range("a1").PasteSpecial xlPasteValues
'copy data output
pvt.TableRange1.Copy
.Range("b6").PasteSpecial xlPasteValues
'susun nomor urut
lRows = pvt.RowRange.Rows.Count
.Range("a8").Resize(lRows, 1).Formula = "=row()-8"
.Calculate
.Range("a8").Resize(lRows, 1).Value =
.Range("a8").Resize(lRows, 1).Value
.Range("a8").Value = "NO"
'finishing
.Range("a6:a7").EntireRow.Delete 'hapus
baris column fields pivot
.Range("a6:b6").EntireColumn.AutoFit
'autofit hasil
.Range("a6").CurrentRegion.Offset(0, 2).NumberFormat =
"#,###" 'set number format
.Range("a6").CurrentRegion.Offset(0, 2).ColumnWidth = 12
End With
End If
End Sub
Yang hijau adalah tambahannya. Sheet yang sudah ada akan dihapus lebih dulu,
untuk menjaga :
1. ukuran file tetap tergantung jumlah record data dan jumlah cabangnya.
2. data yang ditampilkan adalah data terakhir diproses.
Jika akan membuat nomor indeks sheet untuk nama cabang yang sama, keluarkan
bagian mulai :
On Error Resume Next
sampai :
On Error GoTo 0
kesebuah prosedur baru yang khusus mengurusi pembuatan indeks sheet pada cabang
yang sama.
Kemudian ganti bagian yang kosong tersebut dengan perintah memanggil
prosedur baru itu.
Dengan begitu, maka prosedur baru bisa dibuat menjadi sebuah prosedur
public yang bisa dicomot dan dipakai di workbook lain dengan mudah. Jika
disatukan dalam prosedur event change, maka penggunaan pada workbook lain
akan membutuhkan penyusunan ulang untuk disesuaikan dengan kondisi workbook
setempat.
Wassalam,
Kid.
2012/11/3 hendrik karnadi <hendrikkarnadi@yahoo.com >
> **
>
>
> Sungguh jawaban yang luar biasa.
>
> Supaya pas dengan keinginan yang empunya soal "secara otomatis
> memperbanyak sheet/file sesuai dengan nama cabang yang ada di validation
> list"
> kalau boleh usul, disisipkan satu code pada vba sheet6(myTpl) pada bagian
> ini:
> Set shtNew = Sheets.Add(after:=Sheets(Sheets.Count))
> shtNew.Name = Range("e6").Value
> Set pvt = shtTpl.PivotTables(1)
>
> Salam,
> Hendrik Karnadi
>
>
> ----- Forwarded Message -----
> *From:* Mr. Kid <mr.nmkid@gmail.com >
> *To:* belajar-excel@yahoogroups.com
> *Sent:* Saturday, 3 November 2012, 6:23
> *Subject:* Re: [belajar-excel] perbanyak sheet berdarkan validation list
>
>
> Hai Johan,
>
> Untuk penyusunan formula output seperti sheet out_tpl_formula, tapi belum
> ada VBA untuk meng-create setiap sheet untuk cabang terpilih. Biasanya
> banyak BeExceller yang suka membuat formulanya dan variasi formulanya
> juga cukup banyak. Untuk meng-create sheet cabang terpilih dengan VBA
> memanfaatkan template yang menggunakan formula, kita tunggu saja.
> Sekarang sudah cukup banyak BeExceller yang suka bermain dengan VBA.
>
> File terlampir memanfaatkan pivot table saja, termasuk dalam meng-create
> sheet cabang terpilih. Agak jarang ditemui BeExceller yang mau bermain
> VBA terhadap pivot table. Semoga file terlampir bisa membantu
> memasyarakatkan pivot table beserta otomasinya dengan VBA (supaya variasi
> ide dalam milis semakin bertambah karena semakin banyak yang mau
> mempelajarinya).
>
>
> Wassalam,
> Kid.
>
>
>
> 2012/11/2 Johan hung <johan.hung@gmail.com >
>
> **
>
> Dear Master Excel,
>
> Mohon bantuan rekan-rekan, adakah cara untuk untuk memperbanyak worksheet /
> workbook berdasarkan validation list secara otomatis.
>
> Data contoh terlampir
>
> thanks
>
> Johan
>
> --- Mods ---
> Mohon tidak menyertakan cc atau bcc
> ------------
> _
>
>
>
>
>
>
Ditambahkan pembuat nama sheet.
Prosedur event change si worksheet jadi :
Private Sub Worksheet_Change(
Dim shtTpl As Worksheet, shtNew As Worksheet
Dim pvt As PivotTable
Dim lRows As Long
Dim sShtName As String
Set shtTpl = Sheet6
If Not Intersect(Target, shtTpl.Range(
sShtName = shtTpl.Range(
On Error Resume Next
Application.
Sheets(sShtName)
Application.
Set shtNew = Sheets.Add(after:
shtNew.Name = sShtName
Set pvt = shtTpl.PivotTables(
Err.Clear
On Error GoTo 0
With shtNew
'copy info output
shtTpl.Range(
.Range("a1")
'copy data output
pvt.TableRange1.
.Range("b6")
'susun nomor urut
lRows = pvt.RowRange.
.Range("a8")
.Calculate
.Range("a8")
.Range("a8")
.Range("a8")
'finishing
.Range("a6:a7"
baris column fields pivot
.Range("a6:b6"
'autofit hasil
.Range("a6")
"#,###" 'set number format
.Range("a6")
End With
End If
End Sub
Yang hijau adalah tambahannya. Sheet yang sudah ada akan dihapus lebih dulu,
untuk menjaga :
1. ukuran file tetap tergantung jumlah record data dan jumlah cabangnya.
2. data yang ditampilkan adalah data terakhir diproses.
Jika akan membuat nomor indeks sheet untuk nama cabang yang sama, keluarkan
bagian mulai :
On Error Resume Next
sampai :
On Error GoTo 0
kesebuah prosedur baru yang khusus mengurusi pembuatan indeks sheet pada cabang
yang sama.
Kemudian ganti bagian yang kosong tersebut dengan perintah memanggil
prosedur baru itu.
Dengan begitu, maka prosedur baru bisa dibuat menjadi sebuah prosedur
public yang bisa dicomot dan dipakai di workbook lain dengan mudah. Jika
disatukan dalam prosedur event change, maka penggunaan pada workbook lain
akan membutuhkan penyusunan ulang untuk disesuaikan dengan kondisi workbook
setempat.
Wassalam,
Kid.
2012/11/3 hendrik karnadi <hendrikkarnadi@
> **
>
>
> Sungguh jawaban yang luar biasa.
>
> Supaya pas dengan keinginan yang empunya soal "secara otomatis
> memperbanyak sheet/file sesuai dengan nama cabang yang ada di validation
> list"
> kalau boleh usul, disisipkan satu code pada vba sheet6(myTpl) pada bagian
> ini:
> Set shtNew = Sheets.Add(after:
> shtNew.Name = Range("e6").
> Set pvt = shtTpl.PivotTables(
>
> Salam,
> Hendrik Karnadi
>
>
> ----- Forwarded Message -----
> *From:* Mr. Kid <mr.nmkid@gmail.
> *To:* belajar-excel@
> *Sent:* Saturday, 3 November 2012, 6:23
> *Subject:* Re: [belajar-excel] perbanyak sheet berdarkan validation list
>
>
> Hai Johan,
>
> Untuk penyusunan formula output seperti sheet out_tpl_formula, tapi belum
> ada VBA untuk meng-create setiap sheet untuk cabang terpilih. Biasanya
> banyak BeExceller yang suka membuat formulanya dan variasi formulanya
> juga cukup banyak. Untuk meng-create sheet cabang terpilih dengan VBA
> memanfaatkan template yang menggunakan formula, kita tunggu saja.
> Sekarang sudah cukup banyak BeExceller yang suka bermain dengan VBA.
>
> File terlampir memanfaatkan pivot table saja, termasuk dalam meng-create
> sheet cabang terpilih. Agak jarang ditemui BeExceller yang mau bermain
> VBA terhadap pivot table. Semoga file terlampir bisa membantu
> memasyarakatkan pivot table beserta otomasinya dengan VBA (supaya variasi
> ide dalam milis semakin bertambah karena semakin banyak yang mau
> mempelajarinya)
>
>
> Wassalam,
> Kid.
>
>
>
> 2012/11/2 Johan hung <johan.hung@gmail.
>
> **
>
> Dear Master Excel,
>
> Mohon bantuan rekan-rekan, adakah cara untuk untuk memperbanyak worksheet /
> workbook berdasarkan validation list secara otomatis.
>
> Data contoh terlampir
>
> thanks
>
> Johan
>
> --- Mods ---
> Mohon tidak menyertakan cc atau bcc
> ------------
> _
>
>
>
>
>
>
Fri Nov 2, 2012 10:45 pm (PDT) . Posted by:
"Alfan Atas Pujianto" al_mito
HEADLINEORDER DI OVER TEK.WAWAN[GANGGUAN](DBS) POTS 0369968230 / MAS SEMAR /ORDER TEK DIKIN [GANGGUAN](DBS) POTS 0398960038 / SURYA PRATISTA HUTAMA keluhan terisolir(wo bonong) POTS 0388913805 / MAJUJAYA KURNIATAMA keluhan mati/ tidak ada[TROUBLE](DBS) POTS 0308076617 / BPRS JABAL NUR keluhan Tidak Bisa
Para master Ysh,
Mohon pencerahan, saya punya table seperti diatas. Yang pengen saya tanyakan : pada kolom ND itu saya butuh mengisikan kode POTS berupa angka yang berwarna merah. Kira2 pake formula apa untuk dikolom ND?
Terima kasih atas bantuannya..
@alfanatas
Para master Ysh,
Mohon pencerahan, saya punya table seperti diatas. Yang pengen saya tanyakan : pada kolom ND itu saya butuh mengisikan kode POTS berupa angka yang berwarna merah. Kira2 pake formula apa untuk dikolom ND?
Terima kasih atas bantuannya..
@alfanatas
Fri Nov 2, 2012 11:13 pm (PDT) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
Hai Alfan,
Mohon posting berikutnya memberi subject email yang mencerminkan kasus yang
diungkapkan. Hal ini akan memudahkan member lain untuk melakukan search
posting lama.
Tentang kasus :
Jika ada data Headline demikian dan akan ambil nilai POTS-nya saja di kolom
ND :
[data Headline di A6 dan ND di B6 berisi formula]
=LEFT(TRIM(MID(A6,FIND("POTS",A6)+5,99)),10)
Wassalam,
Kid.
2012/11/3 Alfan Atas Pujianto <alfanatas@yahoo.co.id >
> **
>
>
> HEADLINE
>
> ORDER DI OVER TEK.WAWAN[GANGGUAN](DBS) POTS 0369968230 / MAS SEMAR /
>
> ORDER TEK DIKIN [GANGGUAN](DBS) POTS 0398960038 / SURYA PRATISTA HUTAMA
> keluhan terisolir
>
> (wo bonong) POTS 0388913805 / MAJUJAYA KURNIATAMA keluhan mati/ tidak ada
>
> [TROUBLE](DBS) POTS 0308076617 / BPRS JABAL NUR keluhan Tidak Bisa
>
>
> Para master Ysh,
>
> Mohon pencerahan, saya punya table seperti diatas. Yang pengen saya
> tanyakan : pada kolom ND itu saya butuh mengisikan kode POTS berupa angka
> yang berwarna merah. Kira2 pake formula apa untuk dikolom ND?
>
> Terima kasih atas bantuannya..
>
> @alfanatas
>
>
>
Mohon posting berikutnya memberi subject email yang mencerminkan kasus yang
diungkapkan. Hal ini akan memudahkan member lain untuk melakukan search
posting lama.
Tentang kasus :
Jika ada data Headline demikian dan akan ambil nilai POTS-nya saja di kolom
ND :
[data Headline di A6 dan ND di B6 berisi formula]
=LEFT(TRIM(MID(
Wassalam,
Kid.
2012/11/3 Alfan Atas Pujianto <alfanatas@yahoo.
> **
>
>
> HEADLINE
>
> ORDER DI OVER TEK.WAWAN[GANGGUAN]
>
> ORDER TEK DIKIN [GANGGUAN](DBS) POTS 0398960038 / SURYA PRATISTA HUTAMA
> keluhan terisolir
>
> (wo bonong) POTS 0388913805 / MAJUJAYA KURNIATAMA keluhan mati/ tidak ada
>
> [TROUBLE](DBS) POTS 0308076617 / BPRS JABAL NUR keluhan Tidak Bisa
>
>
> Para master Ysh,
>
> Mohon pencerahan, saya punya table seperti diatas. Yang pengen saya
> tanyakan : pada kolom ND itu saya butuh mengisikan kode POTS berupa angka
> yang berwarna merah. Kira2 pake formula apa untuk dikolom ND?
>
> Terima kasih atas bantuannya..
>
> @alfanatas
>
>
>
Fri Nov 2, 2012 11:15 pm (PDT) . Posted by:
"Bagus" bagus4bls
Dear Alfan;
Mungkin begini:
=MID(A1,FIND(0,A1),10)
Bagus
----- Original Message -----
From: Alfan Atas Pujianto
To: belajar-excel@yahoogroups.com
Sent: Saturday, November 03, 2012 8:59 AM
Subject: [***SPAM***] [belajar-excel] Tanya Formula
HEADLINE
ORDER DI OVER TEK.WAWAN[GANGGUAN](DBS) POTS 0369968230 / MAS SEMAR /
ORDER TEK DIKIN [GANGGUAN](DBS) POTS 0398960038 / SURYA PRATISTA HUTAMA keluhan terisolir
(wo bonong) POTS 0388913805 / MAJUJAYA KURNIATAMA keluhan mati/ tidak ada
[TROUBLE](DBS) POTS 0308076617 / BPRS JABAL NUR keluhan Tidak Bisa
Para master Ysh,
Mohon pencerahan, saya punya table seperti diatas. Yang pengen saya tanyakan : pada kolom ND itu saya butuh mengisikan kode POTS berupa angka yang berwarna merah. Kira2 pake formula apa untuk dikolom ND?
Terima kasih atas bantuannya..
@alfanatas
Mungkin begini:
=MID(A1,FIND(
Bagus
----- Original Message -----
From: Alfan Atas Pujianto
To: belajar-excel@
Sent: Saturday, November 03, 2012 8:59 AM
Subject: [***SPAM***] [belajar-excel] Tanya Formula
HEADLINE
ORDER DI OVER TEK.WAWAN[GANGGUAN]
ORDER TEK DIKIN [GANGGUAN](DBS) POTS 0398960038 / SURYA PRATISTA HUTAMA keluhan terisolir
(wo bonong) POTS 0388913805 / MAJUJAYA KURNIATAMA keluhan mati/ tidak ada
[TROUBLE](DBS) POTS 0308076617 / BPRS JABAL NUR keluhan Tidak Bisa
Para master Ysh,
Mohon pencerahan, saya punya table seperti diatas. Yang pengen saya tanyakan : pada kolom ND itu saya butuh mengisikan kode POTS berupa angka yang berwarna merah. Kira2 pake formula apa untuk dikolom ND?
Terima kasih atas bantuannya..
@alfanatas
Fri Nov 2, 2012 11:59 pm (PDT) . Posted by:
"Agus Erwanto" erwanto_agus
Dear Pak Ghozi,
saya mengikuti milis ini,
saya sudah mencoba solusi pak ghozi, tetapi saya kurang begitu mengerti untuk formula
ROW(2:2) itu fungsinya apa ya?
regard,
Agus erw
--- Pada Sen, 29/10/12, ghozi alkatiri <ghozialkatiri@yahoo.co.id > menulis:
Dari: ghozi alkatiri <ghozialkatiri@yahoo.co.id >
Judul: Bls: [belajar-excel] tanya vlookup
Kepada: "belajar-excel@yahoogroups.com " <belajar-excel@yahoogroups.com >
Tanggal: Senin, 29 Oktober, 2012, 8:44 AM
seperti yang lainnya pengisian nama pada nama siswa menggunakan data validation.
formula pengisian nilai raport dibuat satu kali di cell G10
=VLOOKUP($C$3;Data!$B$8:$AL$55;ROW(2:2);0)
dicopy ke bawah sampai G40 .
angka nol pada nilai yang kosong dihilangkan dengan menggunakan conditional formating opsi font tanpa warna
untuk mengisi keterangan rangking ke berapa dari sekian siswa di cell B40 formulanya:
="RANGKING TINGKATAN "&G40&" DARI 48 SISWA"
wassalam
Ghozi Alkatiri.
Dari: Muhfit Komputer <muhfitkomputer@yahoo.co.id >
Kepada: "belajar-excel@yahoogroups.com " <belajar-excel@yahoogroups.com >
Dikirim: Senin, 29 Oktober 2012 10:45
Judul: [belajar-excel] tanya vlookup
dari muhfit, ini mau tanya, dan mohon bantuanya ya..
- yang say atanyakan ialah, misal mau membuat raport, dan memakai hlookup ato vlookup begitu. dan misal saya ketik angka kuncinya, lalu muncul daftar nama beserta yang lainya.terima kasih
saya mengikuti milis ini,
saya sudah mencoba solusi pak ghozi, tetapi saya kurang begitu mengerti untuk formula
ROW(2:2) itu fungsinya apa ya?
regard,
Agus erw
--- Pada Sen, 29/10/12, ghozi alkatiri <ghozialkatiri@
Dari: ghozi alkatiri <ghozialkatiri@
Judul: Bls: [belajar-excel] tanya vlookup
Kepada: "belajar-excel@
Tanggal: Senin, 29 Oktober, 2012, 8:44 AM
seperti yang lainnya pengisian nama pada nama siswa menggunakan data validation.
formula pengisian nilai raport dibuat satu kali di cell G10
=VLOOKUP($C$
dicopy ke bawah sampai G40 .
angka nol pada nilai yang kosong dihilangkan dengan menggunakan conditional formating opsi font tanpa warna
untuk mengisi keterangan rangking ke berapa dari sekian siswa di cell B40 formulanya:
="RANGKING TINGKATAN "&G40&" DARI 48 SISWA"
wassalam
Ghozi Alkatiri.
Dari: Muhfit Komputer <muhfitkomputer@
Kepada: "belajar-excel@
Dikirim: Senin, 29 Oktober 2012 10:45
Judul: [belajar-excel] tanya vlookup
dari muhfit, ini mau tanya, dan mohon bantuanya ya..
- yang say atanyakan ialah, misal mau membuat raport, dan memakai hlookup ato vlookup begitu. dan misal saya ketik angka kuncinya, lalu muncul daftar nama beserta yang lainya.terima kasih
Sat Nov 3, 2012 12:17 am (PDT) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
Ikutan ya...
Fungsi dasar VLookUp :
=VLookUp( nilai_di_lookup , tabel_di_lookup , indeks_kolom_yang_diambil ,
cara_melookup )
=VLOOKUP( $C$3 ; Data!$B$8:$AL$55 ; ROW(2:2)
; 0
)
Jadi Row(2:2) adalah suatu upaya untuk memenuhi nilai
indeks_kolom_yang_diambil (pasti udah tahu tentang hal ini ...)
Hasil dari Row(A2) atau Row(2:2) adalah suatu nilai bilangan bulat nomor
baris excel bernilai 2.
Jadi Row(2:2) adalah *sebuah cara untuk men**dapat nilai 2* dan* bukan
merujuk ke seluruh cell di baris 2*
Row(2:2) ini bisa diganti langsung dengan 2
Atau merujuk ke suatu cell yang isinya angka 2, misal cell Z10 berisi angka
2, maka Row(2:2) bisa diganti dengan Z10
Cara ini umumnya digunakan untuk suatu proses kalkulasi yang pasti
berurutan.
Pada kasus terkait, fungsi Row() digunakan untuk menentukan indeks kolom
nilai yang akan diambil.
Hal ini *diasumsikan *bahwa *
*1. seluruh nilai yang ada di tabel data nilai pasti diambil semua dan
2. susunannya di sheet output pasti berurutan.
Untuk susunan kolom-kolom data nilai di sheet data yang tidak berurutan dengan
tata urutan penempatan di sheet output, maka penggunaan Row(2:2) perlu
diwaspadai proses copy formulanya.
Wassalam,
Kid.
2012/11/3 Agus Erwanto <erwanto_agus@yahoo.co.id >
> **
>
>
> Dear Pak Ghozi,
>
> saya mengikuti milis ini,
> saya sudah mencoba solusi pak ghozi, tetapi saya kurang begitu mengerti
> untuk formula
> ROW(2:2) itu fungsinya apa ya?
>
> regard,
>
> Agus erw
> --- Pada *Sen, 29/10/12, ghozi alkatiri <ghozialkatiri@yahoo.co.id >*menulis:
>
>
> Dari: ghozi alkatiri <ghozialkatiri@yahoo.co.id >
> Judul: Bls: [belajar-excel] tanya vlookup
> Kepada: "belajar-excel@yahoogroups.com " <belajar-excel@yahoogroups.com >
> Tanggal: Senin, 29 Oktober, 2012, 8:44 AM
>
>
>
> seperti yang lainnya pengisian nama pada nama siswa menggunakan data
> validation.
> formula pengisian nilai raport dibuat satu kali di cell G10
> =VLOOKUP($C$3;Data!$B$8:$AL$55;ROW(2:2);0)
> dicopy ke bawah sampai G40 .
> angka nol pada nilai yang kosong dihilangkan dengan menggunakan
> conditional formating opsi font tanpa warna
>
> untuk mengisi keterangan rangking ke berapa dari sekian siswa di cell B40
> formulanya:
> ="RANGKING TINGKATAN "&G40&" DARI 48 SISWA"
>
> wassalam
>
> Ghozi Alkatiri.
>
>
> ------------------------------
> *Dari:* Muhfit Komputer <muhfitkomputer@yahoo.co.id >
> *Kepada:* "belajar-excel@yahoogroups.com " <belajar-excel@yahoogroups.com >
> *Dikirim:* Senin, 29 Oktober 2012 10:45
> *Judul:* [belajar-excel] tanya vlookup
>
>
>
> dari muhfit, ini mau tanya, dan mohon bantuanya ya..
> - yang say atanyakan ialah, misal mau membuat raport, dan memakai hlookup
> ato vlookup begitu. dan misal saya ketik angka kuncinya, lalu muncul daftar
> nama beserta yang lainya.terima kasih
>
>
>
>
Fungsi dasar VLookUp :
=VLookUp( nilai_di_lookup , tabel_di_lookup , indeks_kolom_
cara_melookup )
=VLOOKUP( $C$3 ; Data!$B$8:$AL$
; 0
)
Jadi Row(2:2) adalah suatu upaya untuk memenuhi nilai
indeks_kolom_
Hasil dari Row(A2) atau Row(2:2) adalah suatu nilai bilangan bulat nomor
baris excel bernilai 2.
Jadi Row(2:2) adalah *sebuah cara untuk men**dapat nilai 2* dan* bukan
merujuk ke seluruh cell di baris 2*
Row(2:2) ini bisa diganti langsung dengan 2
Atau merujuk ke suatu cell yang isinya angka 2, misal cell Z10 berisi angka
2, maka Row(2:2) bisa diganti dengan Z10
Cara ini umumnya digunakan untuk suatu proses kalkulasi yang pasti
berurutan.
Pada kasus terkait, fungsi Row() digunakan untuk menentukan indeks kolom
nilai yang akan diambil.
Hal ini *diasumsikan *bahwa *
*1. seluruh nilai yang ada di tabel data nilai pasti diambil semua dan
2. susunannya di sheet output pasti berurutan.
Untuk susunan kolom-kolom data nilai di sheet data yang tidak berurutan dengan
tata urutan penempatan di sheet output, maka penggunaan Row(2:2) perlu
diwaspadai proses copy formulanya.
Wassalam,
Kid.
2012/11/3 Agus Erwanto <erwanto_agus@
> **
>
>
> Dear Pak Ghozi,
>
> saya mengikuti milis ini,
> saya sudah mencoba solusi pak ghozi, tetapi saya kurang begitu mengerti
> untuk formula
> ROW(2:2) itu fungsinya apa ya?
>
> regard,
>
> Agus erw
> --- Pada *Sen, 29/10/12, ghozi alkatiri <ghozialkatiri@
>
>
> Dari: ghozi alkatiri <ghozialkatiri@
> Judul: Bls: [belajar-excel] tanya vlookup
> Kepada: "belajar-excel@
> Tanggal: Senin, 29 Oktober, 2012, 8:44 AM
>
>
>
> seperti yang lainnya pengisian nama pada nama siswa menggunakan data
> validation.
> formula pengisian nilai raport dibuat satu kali di cell G10
> =VLOOKUP($C$
> dicopy ke bawah sampai G40 .
> angka nol pada nilai yang kosong dihilangkan dengan menggunakan
> conditional formating opsi font tanpa warna
>
> untuk mengisi keterangan rangking ke berapa dari sekian siswa di cell B40
> formulanya:
> ="RANGKING TINGKATAN "&G40&" DARI 48 SISWA"
>
> wassalam
>
> Ghozi Alkatiri.
>
>
> ------------
> *Dari:* Muhfit Komputer <muhfitkomputer@
> *Kepada:* "belajar-excel@
> *Dikirim:* Senin, 29 Oktober 2012 10:45
> *Judul:* [belajar-excel] tanya vlookup
>
>
>
> dari muhfit, ini mau tanya, dan mohon bantuanya ya..
> - yang say atanyakan ialah, misal mau membuat raport, dan memakai hlookup
> ato vlookup begitu. dan misal saya ketik angka kuncinya, lalu muncul daftar
> nama beserta yang lainya.terima kasih
>
>
>
>
Sat Nov 3, 2012 1:35 am (PDT) . Posted by:
"Hadi Sukisno" hadi_sukisno@ymail.com
Kepada para pakar excel
Mohon pencerahanya untuk masalah sebagai berikut :
Kondisi
Bahwa ketika tombol print diklik, maka sheet "DO" dan sheet "Rekening" dicetak.
Yang diinginkan
Dengan kondisi tertentu ketika tombol print diklik maka yang dicetak hanya sheet "DO" saja, sheet "Rekening" tidak perlu dicetak.
Cell yang tidak perlu agar tidak bisa diklik dan tidak bisa diaktifkan.
Berikut saya lampirkan file yang isinya mewakili apa yang menjadi permasalahan.
Matur nuwun
Sukisno Hadi
Sat Nov 3, 2012 1:48 am (PDT) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
Pak Hadi,
Tentang :
1. Apabila cell K4 berisikan "Tunai" maka sheet "Rekening" tidak ikut
dicetak, dengan kata lain sheet "Rekening" dicetak ketika cell K4 berisikan
"Giro"
>> Prosedur Printing diisi dengan kondisi berdasar nilai K4
if range("k4").value="Giro" then
sheets("rekening").printout
endif
sheets("do").printout
2. Pembatasan select cell
>> sheet 'DO' hanya bisa select B2:I14
>> sheet 'Rekening' hanya bisa select B2:F14
Untuk DO (terapkan untuk rekening)
1. aktifkan sheet DO
2. blok range yang boleh di-select (misal B2:i14)
3. klik kanan range yang di-blok
4. pilih Format Cells -> tab Protection -> hilangkan centang dari opsi
Locked -> OK
5. lakukan proteksi sheet :
(xl2007) : ke ribbon Review -> group Changes -> Protect Sheet -> hilangkan
centang dari Select Locked Cells -> beri password bila perlu -> OK
6. simpan workbook
Wassalam,
Kid.
2012/11/3 Hadi Sukisno <hadi_sukisno@ymail.com >
> **
>
>
>
> Kepada para pakar excel
>
> Mohon pencerahanya untuk masalah sebagai berikut :
>
> Kondisi
> Bahwa ketika tombol print diklik, maka sheet "DO" dan sheet "Rekening"
> dicetak.
>
> Yang diinginkan
> Dengan kondisi tertentu ketika tombol print diklik maka yang dicetak hanya
> sheet "DO" saja, sheet "Rekening" tidak perlu dicetak.
> Cell yang tidak perlu agar tidak bisa diklik dan tidak bisa diaktifkan.
>
> Berikut saya lampirkan file yang isinya mewakili apa yang menjadi
> permasalahan.
>
> Matur nuwun
>
> Sukisno Hadi
>
>
>
>
Tentang :
1. Apabila cell K4 berisikan "Tunai" maka sheet "Rekening" tidak ikut
dicetak, dengan kata lain sheet "Rekening" dicetak ketika cell K4 berisikan
"Giro"
>> Prosedur Printing diisi dengan kondisi berdasar nilai K4
if range("k4").
sheets("rekening"
endif
sheets("do")
2. Pembatasan select cell
>> sheet 'DO' hanya bisa select B2:I14
>> sheet 'Rekening' hanya bisa select B2:F14
Untuk DO (terapkan untuk rekening)
1. aktifkan sheet DO
2. blok range yang boleh di-select (misal B2:i14)
3. klik kanan range yang di-blok
4. pilih Format Cells -> tab Protection -> hilangkan centang dari opsi
Locked -> OK
5. lakukan proteksi sheet :
(xl2007) : ke ribbon Review -> group Changes -> Protect Sheet -> hilangkan
centang dari Select Locked Cells -> beri password bila perlu -> OK
6. simpan workbook
Wassalam,
Kid.
2012/11/3 Hadi Sukisno <hadi_sukisno@
> **
>
>
>
> Kepada para pakar excel
>
> Mohon pencerahanya untuk masalah sebagai berikut :
>
> Kondisi
> Bahwa ketika tombol print diklik, maka sheet "DO" dan sheet "Rekening"
> dicetak.
>
> Yang diinginkan
> Dengan kondisi tertentu ketika tombol print diklik maka yang dicetak hanya
> sheet "DO" saja, sheet "Rekening" tidak perlu dicetak.
> Cell yang tidak perlu agar tidak bisa diklik dan tidak bisa diaktifkan.
>
> Berikut saya lampirkan file yang isinya mewakili apa yang menjadi
> permasalahan.
>
> Matur nuwun
>
> Sukisno Hadi
>
>
>
>
Sat Nov 3, 2012 2:06 am (PDT) . Posted by:
"Hadi Sukisno" hadi_sukisno@ymail.com
Kepada Bapak Mr. Kid
Sudah saya aplikasikan ke workbook aktual dan semuanya terlihat lancar-lancar saja
Terima kasih atas bantuan Bapak Mr. Kid
Sukisno Hadi
________________________________
Dari: Mr. Kid <mr.nmkid@gmail.com >
Kepada: belajar-excel@yahoogroups.com
Dikirim: Sabtu, 3 November 2012 15:48
Judul: Re: [belajar-excel] Rekapitulasi Penjualan
Pak Hadi,
Tentang :
1. Apabila cell K4 berisikan "Tunai" maka sheet "Rekening" tidak ikut dicetak, dengan kata lain sheet "Rekening" dicetak ketika cell K4 berisikan "Giro"
>> Prosedur Printing diisi dengan kondisi berdasar nilai K4
if range("k4").value="Giro" then
sheets("rekening").printout
endif
sheets("do").printout
2. Pembatasan select cell
>> sheet 'DO' hanya bisa select B2:I14
>> sheet 'Rekening' hanya bisa select B2:F14
Untuk DO (terapkan untuk rekening)
1. aktifkan sheet DO
2. blok range yang boleh di-select (misal B2:i14)
3. klik kanan range yang di-blok
4. pilih Format Cells -> tab Protection -> hilangkan centang dari opsi Locked -> OK
5. lakukan proteksi sheet :
(xl2007) : ke ribbon Review -> group Changes -> Protect Sheet -> hilangkan centang dari Select Locked Cells -> beri password bila perlu -> OK
6. simpan workbook
Wassalam,
Kid.
2012/11/3 Hadi Sukisno <hadi_sukisno@ymail.com >
>
>
>
>Kepada para pakar excel
>
>
>Mohon pencerahanya untuk masalah sebagai berikut :
>
>
>Kondisi
>Bahwa ketika tombol print diklik, maka sheet "DO" dan sheet "Rekening" dicetak.
>
>
>Yang diinginkan
>Dengan kondisi tertentu ketika tombol print diklik maka yang dicetak hanya sheet "DO" saja, sheet "Rekening" tidak perlu dicetak.
>Cell yang tidak perlu agar tidak bisa diklik dan tidak bisa diaktifkan.
>
>
>
>Berikut saya lampirkan file yang isinya mewakili apa yang menjadi permasalahan.
>
>
>Matur nuwun
>
>
>Sukisno Hadi
>
>
Sudah saya aplikasikan ke workbook aktual dan semuanya terlihat lancar-lancar saja
Terima kasih atas bantuan Bapak Mr. Kid
Sukisno Hadi
____________
Dari: Mr. Kid <mr.nmkid@gmail.
Kepada: belajar-excel@
Dikirim: Sabtu, 3 November 2012 15:48
Judul: Re: [belajar-excel] Rekapitulasi Penjualan
Pak Hadi,
Tentang :
1. Apabila cell K4 berisikan "Tunai" maka sheet "Rekening" tidak ikut dicetak, dengan kata lain sheet "Rekening" dicetak ketika cell K4 berisikan "Giro"
>> Prosedur Printing diisi dengan kondisi berdasar nilai K4
if range("k4").
sheets("rekening"
endif
sheets("do")
2. Pembatasan select cell
>> sheet 'DO' hanya bisa select B2:I14
>> sheet 'Rekening' hanya bisa select B2:F14
Untuk DO (terapkan untuk rekening)
1. aktifkan sheet DO
2. blok range yang boleh di-select (misal B2:i14)
3. klik kanan range yang di-blok
4. pilih Format Cells -> tab Protection -> hilangkan centang dari opsi Locked -> OK
5. lakukan proteksi sheet :
(xl2007) : ke ribbon Review -> group Changes -> Protect Sheet -> hilangkan centang dari Select Locked Cells -> beri password bila perlu -> OK
6. simpan workbook
Wassalam,
Kid.
2012/11/3 Hadi Sukisno <hadi_sukisno@
>
>
>
>Kepada para pakar excel
>
>
>Mohon pencerahanya untuk masalah sebagai berikut :
>
>
>Kondisi
>Bahwa ketika tombol print diklik, maka sheet "DO" dan sheet "Rekening" dicetak.
>
>
>Yang diinginkan
>Dengan kondisi tertentu ketika tombol print diklik maka yang dicetak hanya sheet "DO" saja, sheet "Rekening" tidak perlu dicetak.
>Cell yang tidak perlu agar tidak bisa diklik dan tidak bisa diaktifkan.
>
>
>
>Berikut saya lampirkan file yang isinya mewakili apa yang menjadi permasalahan.
>
>
>Matur nuwun
>
>
>Sukisno Hadi
>
>
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
---------------------------------------------------------------------
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