Kamis, 29 September 2011

[belajar-excel] Digest Number 1340

Messages In This Digest (25 Messages)

1a.
Re: Update Tabel dari sheet lain... From: zainul ulum <>
1b.
Re: Update Tabel dari sheet lain... From: Haps
1c.
Re: Update Tabel dari sheet lain... From: Kid Mr.
1d.
Re: Update Tabel dari sheet lain... From: zainul ulum <>
1e.
Re: Update Tabel dari sheet lain... From: Kid Mr.
1f.
Re: Update Tabel dari sheet lain... From: zainul ulum <>
1g.
Re: Update Tabel dari sheet lain... From: jkssxls Sudarsono
1h.
Re: Update Tabel dari sheet lain... From: jkssxls Sudarsono
1i.
Re: Update Tabel dari sheet lain... From: jkssxls Sudarsono
1j.
Re: Update Tabel dari sheet lain... From: Haps
1k.
Re: Update Tabel dari sheet lain... From: jkssxls Sudarsono
1l.
Re: Update Tabel dari sheet lain... From: Kid Mr.
1m.
Re: Update Tabel dari sheet lain... From: jkssxls Sudarsono
1n.
Re: Update Tabel dari sheet lain... From: jkssxls Sudarsono
1o.
Re: Update Tabel dari sheet lain... From: Kid Mr.
2a.
Form untuk input data From: Senja Laura
2b.
Re: Form untuk input data From: Kid Mr.
2c.
Re: Form untuk input data From: Senja Laura
3a.
Menjumlahkan yang berisi angka saja From: Senja Laura
3b.
Re: Menjumlahkan yang berisi angka saja From: Franciscus SOG
3c.
Re: Menjumlahkan yang berisi angka saja From: Senja Laura
4.
Membuat Rekap Data From: Cang Ato
5a.
Isi sel jadi isi tabel From: sarma diaz
5b.
Re: Isi sel jadi isi tabel From: Kid Mr.
6.
saldo akhir pindah ke saldo awal From: Darto Chandra

Messages

1a.

Re: Update Tabel dari sheet lain...

Posted by: "zainul ulum <>" zainul_ulum@yahoo.com   zainul_ulum

Wed Sep 28, 2011 9:46 am (PDT)



Mbak Siti dan pak Hendrik,

Menambah wawasan saya.

Sebelumnya code yang aku buat alurnya adalah:

1. cari id di [sheet1] yang mempunyai id nya sama dengan [sheet2]

2. jika ditemukan id tersebut, row di [sheet1] dihapus

3. copy data [sheet2] ke [sheet1]

Procedure yang aku buat untuk mencari id dan menghapus record adalah:

Public Sub DeleteRecordInDatabaseWhichHasSame(findWhat As String, _

atColumn As Integer, onSheet As Worksheet)

Dim c As Range

With onSheet.UsedRange.Columns(atColumn)

Set c = .Find(findWhat, LookIn:=xlValues, SearchOrder:=xlByColumns)

If Not c Is Nothing Then

c.EntireRow.Delete shift:=xlUp

Exit Sub

End If

End With

End Sub

Sedangkan untuk copy data menggunakan method range.copy destination seperti di code pak Hendrik.

Terimakasih banyak atas masukannya.

-zainul-

From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com] On Behalf Of hendrik karnadi
Sent: Wednesday, September 28, 2011 10:39 PM
To: belajar-excel@yahoogroups.com
Subject: Re: [belajar-excel] Update Tabel dari sheet lain...

Pak Zainal,

Ada sedikit kesalahan teknis dalam No ID pada Sheet Update, tertulis 1 untuk C seharusnya 3

Berikut adalah lampiran file sebelum dan sesudah Update.

Salam,

Hendrik Karnadi

_____

From: "zainul ulum <<yahoo>>" <zainul_ulum@yahoo.com>
To: belajar-excel@yahoogroups.com
Sent: Wednesday, 28 September 2011 9:53 AM
Subject: [belajar-excel] Update Tabel dari sheet lain...

Be-exceler,
Misalnya saya mempunyai table di [sheet 1] dan [Sheet 2].
Table di [sheet 1] akan diupdate berdasarkan record dari [Sheet 2].

Bagaimanakah codenya (macro) agar record di [sheet 1] bisa terupdate
berdasarkan perubahan di [Sheet 2]?

Terimakasih,
-zainul-

1b.

Re: Update Tabel dari sheet lain...

Posted by: "Haps" hapsari.stlizbeth@gmail.com   liz_hap

Wed Sep 28, 2011 2:30 pm (PDT)



Fungsi JOIN telah dimodifikasi (lihat module), agar dapat menampung tabel 2
dimensi) 3 kolom
Kemudian Fungsi tsb *dimanfaatkan untuk mengUpdate tabel* data dengan
prosedur Sub.

Sudah dicoba sepertinya berhasil, hanya saja listing vba-code nya jadi
kepanjangan...

Sub UpdateTable()
' Haps // 28 sept 2011
'---------------------
Dim DatRng As Range, NewRng As Range, ArNew, r As Long

' init: Tabel Data (tanpa headernya)
Set DatRng = Sheets("Data").Cells(1).CurrentRegion.Offset(1, 0)
Set DatRng = DatRng.Resize(DatRng.Rows.Count - 1, DatRng.Columns.Count)

' init: Tabel pengUpdate (tanpa header)
Set NewRng = Sheets("Update").Cells(1).CurrentRegion.Offset(1, 0)
Set NewRng = NewRng.Resize(NewRng.Rows.Count - 1, NewRng.Columns.Count)

' -- membuat Array (3 kolom * n Baris) dibantu fungsi JOIN
ArNew = *JOIN(DatRng, NewRng)*

' -- hapus isi tabel data
DatRng.ClearContents

' -- tabel data (yg baru dikosongkan) diupdate dgn data dari Array
For r = 1 To UBound(ArNew, 2)
DatRng(r, 1) = ArNew(1, r)
DatRng(r, 2) = ArNew(2, r)
DatRng(r, 3) = ArNew(3, r)
Next r

DatRng.Parent.Activate
MsgBox "Selesai", vbInformation, ThisWorkbook.Name

End Sub

cmiiw
w

2011/9/28 Haps <hapsari.stlizbeth@gmail.com>

> dulu, sudah lupa bulan / tahunnya, mba siti pernah membuat UDF Join
>
> dua list jika di JOIN, berarti dua lis akan digabung, tetapi data kembar
> hanya dimunculkan 1 kali
> jika perlu hasil JOIN bisa diurutkan (sorted)
>
> sementara belum sempat membuat /memodifikasi makro menjadi khusus untuk
> keperluan
> "sambil JOIN (kolom 1) juga sambil SUMIF (kolom 2)"
>
> saya yakin mas zainul ulum bisa memodifikasi makro tsb agar
> dapat mengerjakan keperluan
> yg diajukan tsb, mungkin berupa prosedur Sub bukan FUnction lebih
> cuocokk....
>
> ini sudah seijin mbak siti contoh UDF JOINT dilampirkan di sini
>
> '---text / VBA codeing UDF Join
>
> Function JOIN(List1 As Range, List2 As Range, Optional N As Long = 0, _
> Optional Urutkan As Boolean = False)
> '-----
> End Function
>
>

>
> 2011/9/28 zainul ulum <<yahoo>> <zainul_ulum@yahoo.com>
>
>> Be-exceler,
>> Misalnya saya mempunyai table di [sheet 1] dan [Sheet 2].
>> Table di [sheet 1] akan diupdate berdasarkan record dari [Sheet 2].
>>
>> Bagaimanakah codenya (macro) agar record di [sheet 1] bisa terupdate
>> berdasarkan perubahan di [Sheet 2]?
>>
>> Terimakasih,
>> -zainul-
>>
>>
1c.

Re: Update Tabel dari sheet lain...

Posted by: "Kid Mr." mr.nmkid@gmail.com   nmkid.family@ymail.com

Wed Sep 28, 2011 5:28 pm (PDT)



Mas Zain,

File terlampir mencoba memanfaatkan fitur remove duplicate.
Karakteristik remove duplicate adalah mempertahankan data pertama yang
ditemukan.
Jadi prosesnya didahului dengan copas seluruh data peng-update ke sheet data
di awal record sheet data (insert copied cells)

Bunyinya si prosedur begini :

Public Sub UpdateData()
Dim rngInput As Range, rngData As Range
Dim lRowsInput As Long

'init
Set rngData = Sheets("data").Range("a1")
Set rngInput = Sheets("update").Range("a1").CurrentRegion
lRowsInput = rngInput.Rows.Count - 1

'error trap :: no data
If lRowsInput = 0 Then
MsgBox "Tidak ada data."
Exit Sub
End If

'proses update
rngData.Offset(1).Resize(lRowsInput).EntireRow.Insert
'siapkan baris paste
rngInput.Offset(1).Resize(lRowsInput).Copy rngData.Offset(1)
'copas
rngData.CurrentRegion.RemoveDuplicates Array(1, 2), xlYes
'remove duplicate
rngData.CurrentRegion.Sort rngData, xlAscending, Header:=xlYes
'sort (bila perlu)
End Sub

Wassalam.
Kid.

2011/9/28 zainul ulum <<yahoo>> <zainul_ulum@yahoo.com>

> **
>
>
> Be-exceler,
> Misalnya saya mempunyai table di [sheet 1] dan [Sheet 2].
> Table di [sheet 1] akan diupdate berdasarkan record dari [Sheet 2].
>
> Bagaimanakah codenya (macro) agar record di [sheet 1] bisa terupdate
> berdasarkan perubahan di [Sheet 2]?
>
> Terimakasih,
> -zainul-
>
>
>
>
1d.

Re: Update Tabel dari sheet lain...

Posted by: "zainul ulum <>" zainul_ulum@yahoo.com   zainul_ulum

Wed Sep 28, 2011 7:15 pm (PDT)



Makasih mas Kid,

RemoveDuplicates apakah ada di excel 2003?

Salam

-zainul-

From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com]
On Behalf Of Kid Mr.
Sent: Thursday, September 29, 2011 7:28 AM
To: belajar-excel@yahoogroups.com
Subject: Re: [belajar-excel] Update Tabel dari sheet lain...

Mas Zain,

File terlampir mencoba memanfaatkan fitur remove duplicate.
Karakteristik remove duplicate adalah mempertahankan data pertama yang
ditemukan.
Jadi prosesnya didahului dengan copas seluruh data peng-update ke sheet data
di awal record sheet data (insert copied cells)

Bunyinya si prosedur begini :

Public Sub UpdateData()
Dim rngInput As Range, rngData As Range
Dim lRowsInput As Long

'init
Set rngData = Sheets("data").Range("a1")
Set rngInput = Sheets("update").Range("a1").CurrentRegion
lRowsInput = rngInput.Rows.Count - 1

'error trap :: no data
If lRowsInput = 0 Then
MsgBox "Tidak ada data."
Exit Sub
End If

'proses update
rngData.Offset(1).Resize(lRowsInput).EntireRow.Insert
'siapkan baris paste
rngInput.Offset(1).Resize(lRowsInput).Copy rngData.Offset(1)
'copas
rngData.CurrentRegion.RemoveDuplicates Array(1, 2), xlYes
'remove duplicate
rngData.CurrentRegion.Sort rngData, xlAscending, Header:=xlYes
'sort (bila perlu)
End Sub

Wassalam.
Kid.

2011/9/28 zainul ulum <<yahoo>> <zainul_ulum@yahoo.com>

Be-exceler,
Misalnya saya mempunyai table di [sheet 1] dan [Sheet 2].
Table di [sheet 1] akan diupdate berdasarkan record dari [Sheet 2].

Bagaimanakah codenya (macro) agar record di [sheet 1] bisa terupdate
berdasarkan perubahan di [Sheet 2]?

Terimakasih,
-zainul-

1e.

Re: Update Tabel dari sheet lain...

Posted by: "Kid Mr." mr.nmkid@gmail.com   nmkid.family@ymail.com

Wed Sep 28, 2011 8:43 pm (PDT)



Pada xl2003 tidak ada remove duplicate.
Jadi perlu kolom bantu (temporary) yang di-create dengan vba, sebagai flag
record yang akan di delete.
Proses delete dibantu dengan autofilter lebih dulu.
Memang tidak secepat menggunakan remove duplicate, tetapi sepertinya untuk
data updater yang banyak, cukup cepat juga (ya cepat karena dengan i5,
gimana jika P4 ya).

Dengan konsep penggunaan kolom bantu seperti ini, maka dimungkinkan juga
untuk update data dengan banyak kriteria, seperti kemampuan remove
duplicate.
Kelebihan konsep ini dibanding fitur remove duplicate adalah bisa diterapkan
pada data yang membolehkan adanya key fields yang duplicate.

Konsep ini membutuhkan formula yang sederhana (jika mungkin, tanpa array
formula). Seperti countif untuk 1 kriteria dan Match untuk multi kriteria.
Agar match tidak membutuhkan array formula, maka digunakan named range yang
menjadi array_lookup, yang disusun dengan VBA

Biasanya, sebuah prosedur yang melibatkan formula dalam jumlah banyak,
kalkulasi excel di-manual-kan untuk meningkatkan kecepatan proses. Justru
pada konsep penggunaan kolom bantu seperti ini, malah harus automatic untuk
mendapatkan kecepatan proses yang baik.

Ketika workbook telah berisi banyak formula yang bersifat volatile, maka
memanualkan setting kalkulasi excel tetap lebih baik dibanding tetap bekerja
pada setting automatic.

Wassalamualaikum Wr. Wb.
Kid.

2011/9/29 zainul ulum <<yahoo>> <zainul_ulum@yahoo.com>

> **
>
>
> Makasih mas Kid,****
>
> ** **
>
> RemoveDuplicates apakah ada di excel 2003?****
>
> Salam****
>
> -zainul-****
>
> *From:* belajar-excel@yahoogroups.com [mailto:
> belajar-excel@yahoogroups.com] *On Behalf Of *Kid Mr.
> *Sent:* Thursday, September 29, 2011 7:28 AM
>
> *To:* belajar-excel@yahoogroups.com
> *Subject:* Re: [belajar-excel] Update Tabel dari sheet lain...****
>
> ** **
>
> ****
>
> Mas Zain,
>
>
> File terlampir mencoba memanfaatkan fitur remove duplicate.
> Karakteristik remove duplicate adalah mempertahankan data pertama yang
> ditemukan.
> Jadi prosesnya didahului dengan copas seluruh data peng-update ke sheet
> data di awal record sheet data (insert copied cells)
>
> Bunyinya si prosedur begini :
>
> Public Sub UpdateData()
> Dim rngInput As Range, rngData As Range
> Dim lRowsInput As Long
>
> 'init
> Set rngData = Sheets("data").Range("a1")
> Set rngInput = Sheets("update").Range("a1").CurrentRegion
> lRowsInput = rngInput.Rows.Count - 1
>
> 'error trap :: no data
> If lRowsInput = 0 Then
> MsgBox "Tidak ada data."
> Exit Sub
> End If
>
> 'proses update
> rngData.Offset(1).Resize(lRowsInput).EntireRow.Insert
> 'siapkan baris paste
> rngInput.Offset(1).Resize(lRowsInput).Copy rngData.Offset(1)
> 'copas
> rngData.CurrentRegion.RemoveDuplicates Array(1, 2), xlYes
> 'remove duplicate
> rngData.CurrentRegion.Sort rngData, xlAscending, Header:=xlYes
> 'sort (bila perlu)
> End Sub
>
> Wassalam.
> Kid.
>
> 2011/9/28 zainul ulum <<yahoo>> <zainul_ulum@yahoo.com>****
>
> ****
>
> Be-exceler,
> Misalnya saya mempunyai table di [sheet 1] dan [Sheet 2].
> Table di [sheet 1] akan diupdate berdasarkan record dari [Sheet 2].
>
> Bagaimanakah codenya (macro) agar record di [sheet 1] bisa terupdate
> berdasarkan perubahan di [Sheet 2]?
>
> Terimakasih,
> -zainul-****
>
> ** **
>
> ** **
>
> ****
>
>
>
>
1f.

Re: Update Tabel dari sheet lain...

Posted by: "zainul ulum <>" zainul_ulum@yahoo.com   zainul_ulum

Wed Sep 28, 2011 9:08 pm (PDT)



Ok mas,
Ijin untuk dipelajari lebih dahulu..

Wassalam
-zainul-

From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com]
On Behalf Of Kid Mr.
Sent: Thursday, September 29, 2011 10:43 AM
To: belajar-excel@yahoogroups.com
Subject: Re: [belajar-excel] Update Tabel dari sheet lain...

 
Pada xl2003 tidak ada remove duplicate.
Jadi perlu kolom bantu (temporary) yang di-create dengan vba, sebagai flag
record yang akan di delete.
Proses delete dibantu dengan autofilter lebih dulu.
Memang tidak secepat menggunakan remove duplicate, tetapi sepertinya untuk
data updater yang banyak, cukup cepat juga (ya cepat karena dengan i5,
gimana jika P4 ya).

Dengan konsep penggunaan kolom bantu seperti ini, maka dimungkinkan juga
untuk update data dengan banyak kriteria, seperti kemampuan remove
duplicate.
Kelebihan konsep ini dibanding fitur remove duplicate adalah bisa diterapkan
pada data yang membolehkan adanya key fields yang duplicate.

Konsep ini membutuhkan formula yang sederhana (jika mungkin, tanpa array
formula). Seperti countif untuk 1 kriteria dan Match untuk multi kriteria.
Agar match tidak membutuhkan array formula, maka digunakan named range yang
menjadi array_lookup, yang disusun dengan VBA

Biasanya, sebuah prosedur yang melibatkan formula dalam jumlah banyak,
kalkulasi excel di-manual-kan untuk meningkatkan kecepatan proses. Justru
pada konsep penggunaan kolom bantu seperti ini, malah harus automatic untuk
mendapatkan kecepatan proses yang baik.

Ketika workbook telah berisi banyak formula yang bersifat volatile, maka
memanualkan setting kalkulasi excel tetap lebih baik dibanding tetap bekerja
pada setting automatic.

Wassalamualaikum Wr. Wb.
Kid.
2011/9/29 zainul ulum <<yahoo>> <zainul_ulum@yahoo.com>
 
Makasih mas Kid,
 
RemoveDuplicates apakah ada di excel 2003?
Salam
-zainul-
From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com]
On Behalf Of Kid Mr.
Sent: Thursday, September 29, 2011 7:28 AM

To: belajar-excel@yahoogroups.com
Subject: Re: [belajar-excel] Update Tabel dari sheet lain...
 
 
Mas Zain,

File terlampir mencoba memanfaatkan fitur remove duplicate.
Karakteristik remove duplicate adalah mempertahankan data pertama yang
ditemukan.
Jadi prosesnya didahului dengan copas seluruh data peng-update ke sheet data
di awal record sheet data (insert copied cells)

Bunyinya si prosedur begini :

Public Sub UpdateData()
    Dim rngInput As Range, rngData As Range
    Dim lRowsInput As Long
   
    'init
    Set rngData = Sheets("data").Range("a1")
    Set rngInput = Sheets("update").Range("a1").CurrentRegion
    lRowsInput = rngInput.Rows.Count - 1
   
    'error trap :: no data
    If lRowsInput = 0 Then
        MsgBox "Tidak ada data."
        Exit Sub
    End If
   
    'proses update
    rngData.Offset(1).Resize(lRowsInput).EntireRow.Insert              
'siapkan baris paste
    rngInput.Offset(1).Resize(lRowsInput).Copy rngData.Offset(1)       
'copas
    rngData.CurrentRegion.RemoveDuplicates Array(1, 2), xlYes          
'remove duplicate
    rngData.CurrentRegion.Sort rngData, xlAscending, Header:=xlYes     
'sort (bila perlu)
End Sub

Wassalam.
Kid.

2011/9/28 zainul ulum <<yahoo>> <zainul_ulum@yahoo.com>
 
Be-exceler,
Misalnya saya mempunyai table di [sheet 1] dan [Sheet 2].
Table di [sheet 1] akan diupdate berdasarkan record dari [Sheet 2].

Bagaimanakah codenya (macro) agar record di [sheet 1] bisa terupdate
berdasarkan perubahan di [Sheet 2]?

Terimakasih,
-zainul-
 
 

1g.

Re: Update Tabel dari sheet lain...

Posted by: "jkssxls Sudarsono" jkssxls@hotmail.com   jkssbma

Wed Sep 28, 2011 9:44 pm (PDT)




Mbak Haps , saya sudah coba , ada sedikit yang saya koreksi pada fungsi join : j = UBound(ArUp) akan selalu menghasilkan 3 di koreksi menjadi
j = UBound(ArUp, 2) akan menghasilkan banyaknya data di range "data" ( worksheet "data" ) Tetapi saya berterima kasih atas fungsi Updatable dan join hasil modif nya

To: belajar-excel@yahoogroups.com
From: hapsari.stlizbeth@gmail.com
Date: Thu, 29 Sep 2011 04:30:15 +0700
Subject: Re: [belajar-excel] Update Tabel dari sheet lain...

Fungsi JOIN telah dimodifikasi (lihat module), agar dapat menampung tabel 2 dimensi) 3 kolomKemudian Fungsi tsb dimanfaatkan untuk mengUpdate tabel data dengan prosedur Sub.

Sudah dicoba sepertinya berhasil, hanya saja listing vba-code nya jadi kepanjangan...

Sub UpdateTable()
' Haps // 28 sept 2011 '---------------------
Dim DatRng As Range, NewRng As Range, ArNew, r As Long

' init: Tabel Data (tanpa headernya)

Set DatRng = Sheets("Data").Cells(1).CurrentRegion.Offset(1, 0) Set DatRng = DatRng.Resize(DatRng.Rows.Count - 1, DatRng.Columns.Count)

' init: Tabel pengUpdate (tanpa header)

Set NewRng = Sheets("Update").Cells(1).CurrentRegion.Offset(1, 0) Set NewRng = NewRng.Resize(NewRng.Rows.Count - 1, NewRng.Columns.Count)

' -- membuat Array (3 kolom * n Baris) dibantu fungsi JOIN

ArNew = JOIN(DatRng, NewRng)
' -- hapus isi tabel data

DatRng.ClearContents
' -- tabel data (yg baru dikosongkan) diupdate dgn data dari Array

For r = 1 To UBound(ArNew, 2) DatRng(r, 1) = ArNew(1, r)

DatRng(r, 2) = ArNew(2, r) DatRng(r, 3) = ArNew(3, r)

Next r
DatRng.Parent.Activate MsgBox "Selesai", vbInformation, ThisWorkbook.Name

End Sub

cmiiww

2011/9/28 Haps <hapsari.stlizbeth@gmail.com>

dulu, sudah lupa bulan / tahunnya, mba siti pernah membuat UDF Join

dua list jika di JOIN, berarti dua lis akan digabung, tetapi data kembar hanya dimunculkan 1 kali

jika perlu hasil JOIN bisa diurutkan (sorted)

sementara belum sempat membuat /memodifikasi makro menjadi khusus untuk keperluan

"sambil JOIN (kolom 1) juga sambil SUMIF (kolom 2)"
saya yakin mas zainul ulum bisa memodifikasi makro tsb agar dapat mengerjakan keperluan

yg diajukan tsb, mungkin berupa prosedur Sub bukan FUnction lebih cuocokk....
ini sudah seijin mbak siti contoh UDF JOINT dilampirkan di sini

'---text / VBA codeing UDF Join

Function JOIN(List1 As Range, List2 As Range, Optional N As Long = 0, _

Optional Urutkan As Boolean = False)
'----- End Function

2011/9/28 zainul ulum <<yahoo>> <zainul_ulum@yahoo.com>

Be-exceler,

Misalnya saya mempunyai table di [sheet 1] dan [Sheet 2].

Table di [sheet 1] akan diupdate berdasarkan record dari [Sheet 2].

Bagaimanakah codenya (macro) agar record di [sheet 1] bisa terupdate

berdasarkan perubahan di [Sheet 2]?

Terimakasih,

-zainul-

1h.

Re: Update Tabel dari sheet lain...

Posted by: "jkssxls Sudarsono" jkssxls@hotmail.com   jkssbma

Wed Sep 28, 2011 10:17 pm (PDT)




data utama

ID
H1
H2


1
A
100


2
B
125


3
C
10


4
D
5


data updater

ID
H1
H2


1
C
200


2
B
0


5
E
15


data hasil update :

ID
H1
H2


1
A
200


2
B
0


3
C
10


4
D
5


5
E
15


seharusnya :

ID
H1
H2


1
A
100


2
B
0


3
C
200


4
D
5


5
E
15


hal ini karena yg menjadi pembanding adalah index ke -1 ( kolom Id ) , sebaiknya index -2 ( kolom H1 ).Maaf sedikit mengoreksi .. tak apa -apa , kan....To: belajar-excel@yahoogroups.com
From: jkssxls@hotmail.com
Date: Thu, 29 Sep 2011 04:42:28 +0000
Subject: RE: [belajar-excel] Update Tabel dari sheet lain...

Mbak Haps , saya sudah coba , ada sedikit yang saya koreksi pada fungsi join :
j = UBound(ArUp) akan selalu menghasilkan 3
di koreksi menjadi
j = UBound(ArUp, 2) akan menghasilkan banyaknya data di range "data" ( worksheet "data" )

Tetapi saya berterima kasih atas fungsi Updatable dan join hasil modif nya

To: belajar-excel@yahoogroups.com
From: hapsari.stlizbeth@gmail.com
Date: Thu, 29 Sep 2011 04:30:15 +0700
Subject: Re: [belajar-excel] Update Tabel dari sheet lain...

Fungsi JOIN telah dimodifikasi (lihat module), agar dapat menampung tabel 2 dimensi) 3 kolomKemudian Fungsi tsb dimanfaatkan untuk mengUpdate tabel data dengan prosedur Sub.

Sudah dicoba sepertinya berhasil, hanya saja listing vba-code nya jadi kepanjangan...

Sub UpdateTable()
' Haps // 28 sept 2011 '---------------------
Dim DatRng As Range, NewRng As Range, ArNew, r As Long

' init: Tabel Data (tanpa headernya)

Set DatRng = Sheets("Data").Cells(1).CurrentRegion.Offset(1, 0) Set DatRng = DatRng.Resize(DatRng.Rows.Count - 1, DatRng.Columns.Count)

' init: Tabel pengUpdate (tanpa header)

Set NewRng = Sheets("Update").Cells(1).CurrentRegion.Offset(1, 0) Set NewRng = NewRng.Resize(NewRng.Rows.Count - 1, NewRng.Columns.Count)

' -- membuat Array (3 kolom * n Baris) dibantu fungsi JOIN

ArNew = JOIN(DatRng, NewRng)
' -- hapus isi tabel data

DatRng.ClearContents
' -- tabel data (yg baru dikosongkan) diupdate dgn data dari Array

For r = 1 To UBound(ArNew, 2) DatRng(r, 1) = ArNew(1, r)

DatRng(r, 2) = ArNew(2, r) DatRng(r, 3) = ArNew(3, r)

Next r
DatRng.Parent.Activate MsgBox "Selesai", vbInformation, ThisWorkbook.Name

End Sub

cmiiww

2011/9/28 Haps <hapsari.stlizbeth@gmail.com>

dulu, sudah lupa bulan / tahunnya, mba siti pernah membuat UDF Join

dua list jika di JOIN, berarti dua lis akan digabung, tetapi data kembar hanya dimunculkan 1 kali

jika perlu hasil JOIN bisa diurutkan (sorted)

sementara belum sempat membuat /memodifikasi makro menjadi khusus untuk keperluan

"sambil JOIN (kolom 1) juga sambil SUMIF (kolom 2)"
saya yakin mas zainul ulum bisa memodifikasi makro tsb agar dapat mengerjakan keperluan

yg diajukan tsb, mungkin berupa prosedur Sub bukan FUnction lebih cuocokk....
ini sudah seijin mbak siti contoh UDF JOINT dilampirkan di sini

'---text / VBA codeing UDF Join

Function JOIN(List1 As Range, List2 As Range, Optional N As Long = 0, _

Optional Urutkan As Boolean = False)
'----- End Function

2011/9/28 zainul ulum <<yahoo>> <zainul_ulum@yahoo.com>

Be-exceler,

Misalnya saya mempunyai table di [sheet 1] dan [Sheet 2].

Table di [sheet 1] akan diupdate berdasarkan record dari [Sheet 2].

Bagaimanakah codenya (macro) agar record di [sheet 1] bisa terupdate

berdasarkan perubahan di [Sheet 2]?

Terimakasih,

-zainul-



1i.

Re: Update Tabel dari sheet lain...

Posted by: "jkssxls Sudarsono" jkssxls@hotmail.com   jkssbma

Wed Sep 28, 2011 10:24 pm (PDT)




saya modif fungsi join menjadi join_mPrivate Function JOIN_m(L01 As Range, L02 As Range)
'=== siti Vi : Fungsi JOIN : menggabung dua List
' modified by Haps: 29 sep 2011
' tiap list berisi 3 kolom, Uniq pada Kolom 1 (ID)
'=================================================
Dim ArS As String, ArUp(), Tmp
Dim i As Long, j As Long, p As Long, u As Long
Dim kolomkey As Integer
kolomkey = 2
' menyusun 3 array ex tabel data
ArS = "|"
ReDim Preserve ArUp(1 To 3, 1 To L01.Rows.Count)
For i = 1 To L01.Rows.Count
'isi string dari kolom H1 ( berisi A,B,C,D )
ArS = ArS & L01(i, kolomkey) & "|"
ArUp(1, i) = L01(i, 1)
ArUp(2, i) = L01(i, 2)
ArUp(3, i) = L01(i, 3)
Next i
' array tabel diperbesar dengan data di L02 (update)' j = UBound(ArUp)
' ambil banyaknya data di dimensi ke-2 : A B C D
j = UBound(ArUp, 2)
For i = 1 To L02.Rows.Count
' jika ID di L02 belum ada di L01.. maka..
If InStr(1, ArS, "|" & L02(i, kolomkey) & "|") = 0 Then
' jika data di L02 tak ada di ArS
ArS = ArS & L02(i, kolomkey) & "|"
j = j + 1: ReDim Preserve ArUp(1 To 3, 1 To j)
ArUp(1, j) = L02(i, 1)
ArUp(2, j) = L02(i, 2)
ArUp(3, j) = L02(i, 3)
Else ' jika ID di list L02 sudah ada di L01 (kembar)
' Nilainya H2-nya diambilkan dari L02 (data pengUpdate)
For p = 1 To j
If L02(i, kolomkey) = ArUp(kolomkey, p) Then
' ganti data pada ArUp dgn data di L02 hanya index ke-3
ArUp(3, p) = L02(i, 3)
Exit For
End If
Next p
End If
Next i
' bubble sort, mengurutkan hasil Array (sort by ID)
For i = LBound(ArUp) To UBound(ArUp) - 1
For u = LBound(ArUp) To UBound(ArUp) - 1
If ArUp(kolomkey, u) > ArUp(kolomkey, u + 1) Then
Tmp = ArUp(1, u): ArUp(1, u) = ArUp(1, u + 1): ArUp(1, u + 1) = Tmp
Tmp = ArUp(2, u): ArUp(2, u) = ArUp(2, u + 1): ArUp(2, u + 1) = Tmp
Tmp = ArUp(3, u): ArUp(3, u) = ArUp(3, u + 1): ArUp(3, u + 1) = Tmp
End If
Next u
Next i
' variable Join di-isi array ArUp (2 dimensi (3 kol * n row)
JOIN_m = ArUp
End Function

To: belajar-excel@yahoogroups.com
From: jkssxls@hotmail.com
Date: Thu, 29 Sep 2011 05:13:38 +0000
Subject: RE: [belajar-excel] Update Tabel dari sheet lain...

data utama

ID
H1
H2


1
A
100


2
B
125


3
C
10


4
D
5


data updater

ID
H1
H2


1
C
200


2
B
0


5
E
15


data hasil update :

ID
H1
H2


1
A
200


2
B
0


3
C
10


4
D
5


5
E
15


seharusnya :

ID
H1
H2


1
A
100


2
B
0


3
C
200


4
D
5


5
E
15


hal ini karena yg menjadi pembanding adalah index ke -1 ( kolom Id ) , sebaiknya index -2 ( kolom H1 ).
Maaf sedikit mengoreksi .. tak apa -apa , kan....
To: belajar-excel@yahoogroups.com
From: jkssxls@hotmail.com
Date: Thu, 29 Sep 2011 04:42:28 +0000
Subject: RE: [belajar-excel] Update Tabel dari sheet lain...

Mbak Haps , saya sudah coba , ada sedikit yang saya koreksi pada fungsi join :
j = UBound(ArUp) akan selalu menghasilkan 3
di koreksi menjadi
j = UBound(ArUp, 2) akan menghasilkan banyaknya data di range "data" ( worksheet "data" )

Tetapi saya berterima kasih atas fungsi Updatable dan join hasil modif nya

To: belajar-excel@yahoogroups.com
From: hapsari.stlizbeth@gmail.com
Date: Thu, 29 Sep 2011 04:30:15 +0700
Subject: Re: [belajar-excel] Update Tabel dari sheet lain...

Fungsi JOIN telah dimodifikasi (lihat module), agar dapat menampung tabel 2 dimensi) 3 kolomKemudian Fungsi tsb dimanfaatkan untuk mengUpdate tabel data dengan prosedur Sub.

Sudah dicoba sepertinya berhasil, hanya saja listing vba-code nya jadi kepanjangan...

Sub UpdateTable()
' Haps // 28 sept 2011 '---------------------
Dim DatRng As Range, NewRng As Range, ArNew, r As Long

' init: Tabel Data (tanpa headernya)

Set DatRng = Sheets("Data").Cells(1).CurrentRegion.Offset(1, 0) Set DatRng = DatRng.Resize(DatRng.Rows.Count - 1, DatRng.Columns.Count)

' init: Tabel pengUpdate (tanpa header)

Set NewRng = Sheets("Update").Cells(1).CurrentRegion.Offset(1, 0) Set NewRng = NewRng.Resize(NewRng.Rows.Count - 1, NewRng.Columns.Count)

' -- membuat Array (3 kolom * n Baris) dibantu fungsi JOIN

ArNew = JOIN(DatRng, NewRng)
' -- hapus isi tabel data

DatRng.ClearContents
' -- tabel data (yg baru dikosongkan) diupdate dgn data dari Array

For r = 1 To UBound(ArNew, 2) DatRng(r, 1) = ArNew(1, r)

DatRng(r, 2) = ArNew(2, r) DatRng(r, 3) = ArNew(3, r)

Next r
DatRng.Parent.Activate MsgBox "Selesai", vbInformation, ThisWorkbook.Name

End Sub

cmiiww

2011/9/28 Haps <hapsari.stlizbeth@gmail.com>

dulu, sudah lupa bulan / tahunnya, mba siti pernah membuat UDF Join

dua list jika di JOIN, berarti dua lis akan digabung, tetapi data kembar hanya dimunculkan 1 kali

jika perlu hasil JOIN bisa diurutkan (sorted)

sementara belum sempat membuat /memodifikasi makro menjadi khusus untuk keperluan

"sambil JOIN (kolom 1) juga sambil SUMIF (kolom 2)"
saya yakin mas zainul ulum bisa memodifikasi makro tsb agar dapat mengerjakan keperluan

yg diajukan tsb, mungkin berupa prosedur Sub bukan FUnction lebih cuocokk....
ini sudah seijin mbak siti contoh UDF JOINT dilampirkan di sini

'---text / VBA codeing UDF Join

Function JOIN(List1 As Range, List2 As Range, Optional N As Long = 0, _

Optional Urutkan As Boolean = False)
'----- End Function

2011/9/28 zainul ulum <<yahoo>> <zainul_ulum@yahoo.com>

Be-exceler,

Misalnya saya mempunyai table di [sheet 1] dan [Sheet 2].

Table di [sheet 1] akan diupdate berdasarkan record dari [Sheet 2].

Bagaimanakah codenya (macro) agar record di [sheet 1] bisa terupdate

berdasarkan perubahan di [Sheet 2]?

Terimakasih,

-zainul-





1j.

Re: Update Tabel dari sheet lain...

Posted by: "Haps" hapsari.stlizbeth@gmail.com   liz_hap

Wed Sep 28, 2011 10:42 pm (PDT)



ysh Bp Sudarsono,
waduh maaf baru terbaca hari ini

betul pak, saya salah, ada parameter untuk Ubound yg tidak tertuliskan
*(sebelumnya ArUp adalah array 1 dimensi, ketika diubah menjadi 2 dimensi*
*banyak pneggunaan variable ArUp yg belum di sesuaikan)*

terimakasih koreksi nya ...

selain itu pada bagian bubble sort juga kurang baik
karena pengulangannya (N-1) * (N-1) yg seharusnya tidak perlu
sekarang sudah diperbaiki

koreksinya tetap saya kirimkan lagi kemilis,
kalau tidak dikirimkan koreksinya, nanti barangkali ada member yg mencontoh
bubble sort tsb, mereka akan mendapat contoh yg kurang baik.

sekali lagi terima kasih
sambil tetap menunggu jika masih ada coding yg kurang benar...

-haps-

Private Function JOIN(L01 As Range, L02 As Range)
'=== siti Vi : Fungsi JOIN : menggabung dua List
' modified by Haps: 29 sep 2011
' tiap list berisi 3 kolom, Uniq pada Kolom 1 (ID)
'=================================================

Dim ArS As String, ArUp(), Tmp
Dim i As Long, j As Long, p As Long, a As Long, b As Long

' menyusun array ex (2 dimensi) based on tabel data (L01)
ArS = "|"
ReDim Preserve ArUp(1 To 3, 1 To L01.Rows.Count)
For i = 1 To L01.Rows.Count
ArS = ArS & L01(i, 1) & "|"
ArUp(1, i) = L01(i, 1)
ArUp(2, i) = L01(i, 2)
ArUp(3, i) = L01(i, 3)
Next i

' array tabel diperbesar dengan data di L02 (update)

j = UBound(ArUp, 2)

For i = 1 To L02.Rows.Count
' jika ID di L02 belum ada di L01.. maka..
If InStr(1, ArS, "|" & L02(i, 1) & "|") = 0 Then
ArS = ArS & L02(i, 1) & "|"
j = j + 1: ReDim Preserve ArUp(1 To 3, 1 To j)
ArUp(1, j) = L02(i, 1)
ArUp(2, j) = L02(i, 2)
ArUp(3, j) = L02(i, 3)
Else ' jika ID di list L02 sudah ada di L01 (kembar)
' Nilai H2-nya diambilkan dari L02 (data pengUpdate)
For p = 1 To j
If L02(i, 1) = ArUp(1, p) Then
ArUp(3, p) = L02(i, 3)
Exit For
End If
Next p
End If
Next i

' bubble sort, mengurutkan hasil Array (sort by ID)
For i = LBound(ArUp, 2) To UBound(ArUp, 2) - 1
For a = UBound(ArUp, 2) To i + 1 Step -1
b = a - 1
If ArUp(1, a) < ArUp(1, b) Then
Tmp = ArUp(1, a): ArUp(1, a) = ArUp(1, b): ArUp(1, b) = Tmp
Tmp = ArUp(2, a): ArUp(2, a) = ArUp(2, b): ArUp(2, b) = Tmp
Tmp = ArUp(3, a): ArUp(3, a) = ArUp(3, b): ArUp(3, b) = Tmp
End If
Next a
Next i

' variable Join di-isi array ArUp (2 dimensi (3 kol * n row)
JOIN = ArUp
End Function

2011/9/29 jkssxls Sudarsono <jkssxls@hotmail.com>

> **
>
>
> Mbak Haps , saya sudah coba , ada sedikit yang saya koreksi pada fungsi
> join :
> * j = UBound(ArUp) akan selalu menghasilkan 3 *
> di koreksi menjadi
> * j = UBound(ArUp, 2)* akan menghasilkan banyaknya data di range "data"
> ( worksheet "data" )
>
> Tetapi saya berterima kasih atas fungsi Updatable dan join hasil modif nya
>
>
> ------------------------------
> To: belajar-excel@yahoogroups.com
> From: hapsari.stlizbeth@gmail.com
> Date: Thu, 29 Sep 2011 04:30:15 +0700
>
> Subject: Re: [belajar-excel] Update Tabel dari sheet lain...
>
>
> Fungsi JOIN telah dimodifikasi (lihat module), agar dapat menampung tabel
> 2 dimensi) 3 kolom
> Kemudian Fungsi tsb *dimanfaatkan untuk mengUpdate tabel* data dengan
> prosedur Sub.
>
> Sudah dicoba sepertinya berhasil, hanya saja listing vba-code nya jadi
> kepanjangan...
>
1k.

Re: Update Tabel dari sheet lain...

Posted by: "jkssxls Sudarsono" jkssxls@hotmail.com   jkssbma

Thu Sep 29, 2011 12:24 am (PDT)




ini cuplikan bubble -sort hasil perbaikan Mbak Haps : For i = LBound(ArUp, 2) To UBound(ArUp, 2) - 1 For a = UBound(ArUp, 2) To i + 1 Step -1 b = a - 1 If ArUp(1, a) < ArUp(1, b) Then Tmp = ArUp(1, a): ArUp(1, a) = ArUp(1, b): ArUp(1, b) = Tmp Tmp = ArUp(2, a): ArUp(2, a) = ArUp(2, b): ArUp(2, b) = Tmp Tmp = ArUp(3, a): ArUp(3, a) = ArUp(3, b): ArUp(3, b) = Tmp End If Next a Next idan ini contoh simulasinya :

i
b



1
2
3
4
5







2
3
5
1
4


1
5
5
4

2
3
5
1
4




4
1









4
4
1

2
3
5
1
4




3
5









3
3
1

2
3
1
5
4




2
3









2
2
1

2
1
3
5
4




1
2








2
5
5
4

1
2
3
5
4




4
5









4
4
4

1
2
3
4
5




3
3









3
3
3

1
2
3
4
5




2
2








3
5
5
5

1
2
3
4
5




4
4









4
4
4

1
2
3
4
5




3
3








4
5
5
5

1
2
3
4
5




4
4













1
2
3
4
5


To: belajar-excel@yahoogroups.com
From: jkssxls@hotmail.com
Date: Thu, 29 Sep 2011 05:24:02 +0000
Subject: RE: [belajar-excel] Update Tabel dari sheet lain...

saya modif fungsi join menjadi join_m
Private Function JOIN_m(L01 As Range, L02 As Range)
'=== siti Vi : Fungsi JOIN : menggabung dua List
' modified by Haps: 29 sep 2011
' tiap list berisi 3 kolom, Uniq pada Kolom 1 (ID)
'=================================================
Dim ArS As String, ArUp(), Tmp
Dim i As Long, j As Long, p As Long, u As Long
Dim kolomkey As Integer
kolomkey = 2
' menyusun 3 array ex tabel data
ArS = "|"
ReDim Preserve ArUp(1 To 3, 1 To L01.Rows.Count)
For i = 1 To L01.Rows.Count
'isi string dari kolom H1 ( berisi A,B,C,D )
ArS = ArS & L01(i, kolomkey) & "|"
ArUp(1, i) = L01(i, 1)
ArUp(2, i) = L01(i, 2)
ArUp(3, i) = L01(i, 3)
Next i
' array tabel diperbesar dengan data di L02 (update)
' j = UBound(ArUp)
' ambil banyaknya data di dimensi ke-2 : A B C D
j = UBound(ArUp, 2)
For i = 1 To L02.Rows.Count
' jika ID di L02 belum ada di L01.. maka..
If InStr(1, ArS, "|" & L02(i, kolomkey) & "|") = 0 Then
' jika data di L02 tak ada di ArS
ArS = ArS & L02(i, kolomkey) & "|"
j = j + 1: ReDim Preserve ArUp(1 To 3, 1 To j)
ArUp(1, j) = L02(i, 1)
ArUp(2, j) = L02(i, 2)
ArUp(3, j) = L02(i, 3)
Else ' jika ID di list L02 sudah ada di L01 (kembar)
' Nilainya H2-nya diambilkan dari L02 (data pengUpdate)
For p = 1 To j
If L02(i, kolomkey) = ArUp(kolomkey, p) Then
' ganti data pada ArUp dgn data di L02 hanya index ke-3
ArUp(3, p) = L02(i, 3)
Exit For
End If
Next p
End If
Next i
' bubble sort, mengurutkan hasil Array (sort by ID)
For i = LBound(ArUp) To UBound(ArUp) - 1
For u = LBound(ArUp) To UBound(ArUp) - 1
If ArUp(kolomkey, u) > ArUp(kolomkey, u + 1) Then
Tmp = ArUp(1, u): ArUp(1, u) = ArUp(1, u + 1): ArUp(1, u + 1) = Tmp
Tmp = ArUp(2, u): ArUp(2, u) = ArUp(2, u + 1): ArUp(2, u + 1) = Tmp
Tmp = ArUp(3, u): ArUp(3, u) = ArUp(3, u + 1): ArUp(3, u + 1) = Tmp
End If
Next u
Next i
' variable Join di-isi array ArUp (2 dimensi (3 kol * n row)
JOIN_m = ArUp
End Function

To: belajar-excel@yahoogroups.com
From: jkssxls@hotmail.com
Date: Thu, 29 Sep 2011 05:13:38 +0000
Subject: RE: [belajar-excel] Update Tabel dari sheet lain...

data utama

ID
H1
H2


1
A
100


2
B
125


3
C
10


4
D
5


data updater

ID
H1
H2


1
C
200


2
B
0


5
E
15


data hasil update :

ID
H1
H2


1
A
200


2
B
0


3
C
10


4
D
5


5
E
15


seharusnya :

ID
H1
H2


1
A
100


2
B
0


3
C
200


4
D
5


5
E
15


hal ini karena yg menjadi pembanding adalah index ke -1 ( kolom Id ) , sebaiknya index -2 ( kolom H1 ).
Maaf sedikit mengoreksi .. tak apa -apa , kan....
To: belajar-excel@yahoogroups.com
From: jkssxls@hotmail.com
Date: Thu, 29 Sep 2011 04:42:28 +0000
Subject: RE: [belajar-excel] Update Tabel dari sheet lain...

Mbak Haps , saya sudah coba , ada sedikit yang saya koreksi pada fungsi join :
j = UBound(ArUp) akan selalu menghasilkan 3
di koreksi menjadi
j = UBound(ArUp, 2) akan menghasilkan banyaknya data di range "data" ( worksheet "data" )

Tetapi saya berterima kasih atas fungsi Updatable dan join hasil modif nya

To: belajar-excel@yahoogroups.com
From: hapsari.stlizbeth@gmail.com
Date: Thu, 29 Sep 2011 04:30:15 +0700
Subject: Re: [belajar-excel] Update Tabel dari sheet lain...

Fungsi JOIN telah dimodifikasi (lihat module), agar dapat menampung tabel 2 dimensi) 3 kolomKemudian Fungsi tsb dimanfaatkan untuk mengUpdate tabel data dengan prosedur Sub.

Sudah dicoba sepertinya berhasil, hanya saja listing vba-code nya jadi kepanjangan...

Sub UpdateTable()
' Haps // 28 sept 2011 '---------------------
Dim DatRng As Range, NewRng As Range, ArNew, r As Long

' init: Tabel Data (tanpa headernya)

Set DatRng = Sheets("Data").Cells(1).CurrentRegion.Offset(1, 0) Set DatRng = DatRng.Resize(DatRng.Rows.Count - 1, DatRng.Columns.Count)

' init: Tabel pengUpdate (tanpa header)

Set NewRng = Sheets("Update").Cells(1).CurrentRegion.Offset(1, 0) Set NewRng = NewRng.Resize(NewRng.Rows.Count - 1, NewRng.Columns.Count)

' -- membuat Array (3 kolom * n Baris) dibantu fungsi JOIN

ArNew = JOIN(DatRng, NewRng)
' -- hapus isi tabel data

DatRng.ClearContents
' -- tabel data (yg baru dikosongkan) diupdate dgn data dari Array

For r = 1 To UBound(ArNew, 2) DatRng(r, 1) = ArNew(1, r)

DatRng(r, 2) = ArNew(2, r) DatRng(r, 3) = ArNew(3, r)

Next r
DatRng.Parent.Activate MsgBox "Selesai", vbInformation, ThisWorkbook.Name

End Sub

cmiiww

2011/9/28 Haps <hapsari.stlizbeth@gmail.com>

dulu, sudah lupa bulan / tahunnya, mba siti pernah membuat UDF Join

dua list jika di JOIN, berarti dua lis akan digabung, tetapi data kembar hanya dimunculkan 1 kali

jika perlu hasil JOIN bisa diurutkan (sorted)

sementara belum sempat membuat /memodifikasi makro menjadi khusus untuk keperluan

"sambil JOIN (kolom 1) juga sambil SUMIF (kolom 2)"
saya yakin mas zainul ulum bisa memodifikasi makro tsb agar dapat mengerjakan keperluan

yg diajukan tsb, mungkin berupa prosedur Sub bukan FUnction lebih cuocokk....
ini sudah seijin mbak siti contoh UDF JOINT dilampirkan di sini

'---text / VBA codeing UDF Join

Function JOIN(List1 As Range, List2 As Range, Optional N As Long = 0, _

Optional Urutkan As Boolean = False)
'----- End Function

2011/9/28 zainul ulum <<yahoo>> <zainul_ulum@yahoo.com>

Be-exceler,

Misalnya saya mempunyai table di [sheet 1] dan [Sheet 2].

Table di [sheet 1] akan diupdate berdasarkan record dari [Sheet 2].

Bagaimanakah codenya (macro) agar record di [sheet 1] bisa terupdate

berdasarkan perubahan di [Sheet 2]?

Terimakasih,

-zainul-







1l.

Re: Update Tabel dari sheet lain...

Posted by: "Kid Mr." mr.nmkid@gmail.com   nmkid.family@ymail.com

Thu Sep 29, 2011 12:44 am (PDT)



Coba juga menggunakan object collection untuk join table

Public Function JoinPakeKoleksi(rngUpdateKolomPertama As Range,
rngDataLamaKolomPertama As Range) As Variant
Dim col As Collection 'selalu base 1
Dim rng As Range
Dim lRecs As Long
Dim sItem() As String 'vb6 menggunakan default base 0
Dim vRes As Variant

On Error Resume Next
Set col = New Collection
'mulai dari updater
For Each rng In rngUpdateKolomPertama
If LenB(rng.Value) <> 0 Then
col.Add rng.Value & "|" & rng.Offset(, 1).Value & "|" &
rng.Offset(, 2).Value, _
rng.Value & "|" & rng.Offset(, 1).Value
End If
Next rng

'ikuti dengan data lama
For Each rng In rngDataLamaKolomPertama
If LenB(rng.Value) <> 0 Then
col.Add rng.Value & "|" & rng.Offset(, 1).Value & "|" &
rng.Offset(, 2).Value, _
rng.Value & "|" & rng.Offset(, 1).Value
End If
Next rng
lRecs = col.Count
ReDim vRes(1 To lRecs, 1 To 3) As Variant
For lRecs = 1 To col.Count
sItem = Split(col(lRecs), "|")
vRes(lRecs, 1) = sItem(0)
vRes(lRecs, 2) = sItem(1)
vRes(lRecs, 3) = sItem(2)
Next lRecs

JoinPakeKoleksi = vRes
End Function
'Mungkin perlu dicoba untuk record update yang banyak *dan* record data yang
juga banyak.

Ingin di-sort ?
buat fungsi sorting yang inputnya berupa array, agar hasil fungsi di atas
bisa menjadi input parameter untuk fungsi sorting tersebut.

Regards.
Kid.

2011/9/29 jkssxls Sudarsono <jkssxls@hotmail.com>

> **
>
>
> saya modif fungsi join menjadi join_m
> Private Function JOIN_m(L01 As Range, L02 As Range)
>
> '=== siti Vi : Fungsi JOIN : menggabung dua List
> ' modified by Haps: 29 sep 2011
> ' tiap list berisi 3 kolom, Uniq pada Kolom 1 (ID)
> '=================================================
> Dim ArS As String, ArUp(), Tmp
> Dim i As Long, j As Long, p As Long, u As Long
> Dim kolomkey As Integer
> kolomkey = 2
> ' menyusun 3 array ex tabel data
> ArS = "|"
> ReDim Preserve ArUp(1 To 3, 1 To L01.Rows.Count)
> For i = 1 To L01.Rows.Count
> 'isi string dari kolom H1 ( berisi A,B,C,D )
> ArS = ArS & L01(i, kolomkey) & "|"
> ArUp(1, i) = L01(i, 1)
> ArUp(2, i) = L01(i, 2)
> ArUp(3, i) = L01(i, 3)
> Next i
> ' array tabel diperbesar dengan data di L02 (update)
> ' j = UBound(ArUp)
> ' ambil banyaknya data di dimensi ke-2 : A B C D
> j = UBound(ArUp, 2)
> For i = 1 To L02.Rows.Count
> ' jika ID di L02 belum ada di L01.. maka..
> If InStr(1, ArS, "|" & L02(i, kolomkey) & "|") = 0 Then
> ' jika data di L02 tak ada di ArS
> ArS = ArS & L02(i, kolomkey) & "|"
> j = j + 1: ReDim Preserve ArUp(1 To 3, 1 To j)
> ArUp(1, j) = L02(i, 1)
> ArUp(2, j) = L02(i, 2)
> ArUp(3, j) = L02(i, 3)
> Else ' jika ID di list L02 sudah ada di L01 (kembar)
> ' Nilainya H2-nya diambilkan dari L02 (data pengUpdate)
> For p = 1 To j
> If L02(i, kolomkey) = ArUp(kolomkey, p) Then
> ' ganti data pada ArUp dgn data di L02 hanya index ke-3
> ArUp(3, p) = L02(i, 3)
> Exit For
> End If
> Next p
> End If
> Next i
> ' bubble sort, mengurutkan hasil Array (sort by ID)
> For i = LBound(ArUp) To UBound(ArUp) - 1
> For u = LBound(ArUp) To UBound(ArUp) - 1
> If ArUp(kolomkey, u) > ArUp(kolomkey, u + 1) Then
> Tmp = ArUp(1, u): ArUp(1, u) = ArUp(1, u + 1): ArUp(1, u + 1) =
> Tmp
> Tmp = ArUp(2, u): ArUp(2, u) = ArUp(2, u + 1): ArUp(2, u + 1) =
> Tmp
> Tmp = ArUp(3, u): ArUp(3, u) = ArUp(3, u + 1): ArUp(3, u + 1) =
> Tmp
> End If
> Next u
> Next i
> ' variable Join di-isi array ArUp (2 dimensi (3 kol * n row)
> JOIN_m = ArUp
> End Function
>
>
> ------------------------------
> To: belajar-excel@yahoogroups.com
> From: jkssxls@hotmail.com
> Date: Thu, 29 Sep 2011 05:13:38 +0000
>
> Subject: RE: [belajar-excel] Update Tabel dari sheet lain...
>
>
> data utama
> ID H1 H2 1 A 100 2 B 125 3 C 10 4 D 5 data updater
> ID H1 H2 1 C 200 2 B 0 5 E 15 data hasil update :
> ID H1 H2 1 A 200 2 B 0 3 C 10 4 D 5 5 E 15 seharusnya :
> ID H1 H2 1 A 100 2 B 0 3 C 200 4 D 5 5 E 15
> hal ini karena yg menjadi pembanding adalah index ke -1 ( kolom Id ) ,
> sebaiknya index -2 ( kolom H1 ).
> Maaf sedikit mengoreksi .. tak apa -apa , kan....
> ------------------------------
> To: belajar-excel@yahoogroups.com
> From: jkssxls@hotmail.com
> Date: Thu, 29 Sep 2011 04:42:28 +0000
> Subject: RE: [belajar-excel] Update Tabel dari sheet lain...
>
>
> Mbak Haps , saya sudah coba , ada sedikit yang saya koreksi pada fungsi
> join :
> j = UBound(ArUp) akan selalu menghasilkan 3
> di koreksi menjadi
> j = UBound(ArUp, 2) akan menghasilkan banyaknya data di range "data" (
> worksheet "data" )
>
> Tetapi saya berterima kasih atas fungsi Updatable dan join hasil modif nya
>
>
> ------------------------------
> To: belajar-excel@yahoogroups.com
> From: hapsari.stlizbeth@gmail.com
> Date: Thu, 29 Sep 2011 04:30:15 +0700
> Subject: Re: [belajar-excel] Update Tabel dari sheet lain...
>
>
> Fungsi JOIN telah dimodifikasi (lihat module), agar dapat menampung tabel
> 2 dimensi) 3 kolom
> Kemudian Fungsi tsb *dimanfaatkan untuk mengUpdate tabel* data dengan
> prosedur Sub.
>
> Sudah dicoba sepertinya berhasil, hanya saja listing vba-code nya jadi
> kepanjangan...
>
> Sub UpdateTable()
> ' Haps // 28 sept 2011
> '---------------------
> Dim DatRng As Range, NewRng As Range, ArNew, r As Long
>
> ' init: Tabel Data (tanpa headernya)
> Set DatRng = Sheets("Data").Cells(1).CurrentRegion.Offset(1, 0)
> Set DatRng = DatRng.Resize(DatRng.Rows.Count - 1, DatRng.Columns.Count)
>
> ' init: Tabel pengUpdate (tanpa header)
> Set NewRng = Sheets("Update").Cells(1).CurrentRegion.Offset(1, 0)
> Set NewRng = NewRng.Resize(NewRng.Rows.Count - 1, NewRng.Columns.Count)
>
> ' -- membuat Array (3 kolom * n Baris) dibantu fungsi JOIN
> ArNew = *JOIN(DatRng, NewRng)*
>
> ' -- hapus isi tabel data
> DatRng.ClearContents
>
> ' -- tabel data (yg baru dikosongkan) diupdate dgn data dari Array
> For r = 1 To UBound(ArNew, 2)
> DatRng(r, 1) = ArNew(1, r)
> DatRng(r, 2) = ArNew(2, r)
> DatRng(r, 3) = ArNew(3, r)
> Next r
>
> DatRng.Parent.Activate
> MsgBox "Selesai", vbInformation, ThisWorkbook.Name
>
> End Sub
>
>
> cmiiw
> w
>
>
> 2011/9/28 Haps <hapsari.stlizbeth@gmail.com>
>
> dulu, sudah lupa bulan / tahunnya, mba siti pernah membuat UDF Join
>
> dua list jika di JOIN, berarti dua lis akan digabung, tetapi data kembar
> hanya dimunculkan 1 kali
> jika perlu hasil JOIN bisa diurutkan (sorted)
>
> sementara belum sempat membuat /memodifikasi makro menjadi khusus untuk
> keperluan
> "sambil JOIN (kolom 1) juga sambil SUMIF (kolom 2)"
>
> saya yakin mas zainul ulum bisa memodifikasi makro tsb agar
> dapat mengerjakan keperluan
> yg diajukan tsb, mungkin berupa prosedur Sub bukan FUnction lebih
> cuocokk....
>
> ini sudah seijin mbak siti contoh UDF JOINT dilampirkan di sini
>
> '---text / VBA codeing UDF Join
>
> Function JOIN(List1 As Range, List2 As Range, Optional N As Long = 0, _
> Optional Urutkan As Boolean = False)
> '-----
> End Function
>
>
>
>
> 2011/9/28 zainul ulum <<yahoo>> <zainul_ulum@yahoo.com>
>
> Be-exceler,
> Misalnya saya mempunyai table di [sheet 1] dan [Sheet 2].
> Table di [sheet 1] akan diupdate berdasarkan record dari [Sheet 2].
>
> Bagaimanakah codenya (macro) agar record di [sheet 1] bisa terupdate
> berdasarkan perubahan di [Sheet 2]?
>
> Terimakasih,
> -zainul-
>
>
>
>
>
>
>
>
>
>
1m.

Re: Update Tabel dari sheet lain...

Posted by: "jkssxls Sudarsono" jkssxls@hotmail.com   jkssbma

Thu Sep 29, 2011 2:01 am (PDT)




Koreksi lagi :ArUp(1, a) < ArUp(1, b) menjadi ArUp(2, a) < ArUp(2, b)atau dgn rumus join_m menjadi :For i = LBound(ArUp, 2) To UBound(ArUp, 2) - 1
For a = UBound(ArUp, 2) To i + 1 Step -1 b = a - 1 If ArUp(kolomkey, a) < ArUp(kolomkey, b) Then Tmp = ArUp(1, a): ArUp(1, a) = ArUp(1, b): ArUp(1, b) = Tmp Tmp = ArUp(2, a): ArUp(2, a) = ArUp(2, b): ArUp(2, b) = Tmp Tmp = ArUp(3, a): ArUp(3, a) = ArUp(3, b): ArUp(3, b) = Tmp End If Next a Next iini cuplikan bubble -sort hasil perbaikan Mbak Haps :
For i = LBound(ArUp, 2) To UBound(ArUp, 2) - 1
For a = UBound(ArUp, 2) To i + 1 Step -1 b = a - 1 If ArUp(1, a) < ArUp(1, b) Then Tmp = ArUp(1, a): ArUp(1, a) = ArUp(1, b): ArUp(1, b) = Tmp Tmp = ArUp(2, a): ArUp(2, a) = ArUp(2, b): ArUp(2, b) = Tmp Tmp = ArUp(3, a): ArUp(3, a) = ArUp(3, b): ArUp(3, b) = Tmp End If Next a Next idan ini contoh simulasinya :

i
a



1
2
3
4
5







2
3
5
1
4


1
5
5
4

2
3
5
1
4




4
1









4
4
1

2
3
5
1
4




3
5









3
3
1

2
3
1
5
4




2
3









2
2
1

2
1
3
5
4




1
2








2
5
5
4

1
2
3
5
4




4
5









4
4
4

1
2
3
4
5




3
3









3
3
3

1
2
3
4
5




2
2








3
5
5
5

1
2
3
4
5




4
4









4
4
4

1
2
3
4
5




3
3








4
5
5
5

1
2
3
4
5




4
4













1
2
3
4
5


To: belajar-excel@yahoogroups.com
From: jkssxls@hotmail.com
Date: Thu, 29 Sep 2011 05:24:02 +0000
Subject: RE: [belajar-excel] Update Tabel dari sheet lain...

saya modif fungsi join menjadi join_m
Private Function JOIN_m(L01 As Range, L02 As Range)
'=== siti Vi : Fungsi JOIN : menggabung dua List
' modified by Haps: 29 sep 2011
' tiap list berisi 3 kolom, Uniq pada Kolom 1 (ID)
'=================================================
Dim ArS As String, ArUp(), Tmp
Dim i As Long, j As Long, p As Long, u As Long
Dim kolomkey As Integer
kolomkey = 2
' menyusun 3 array ex tabel data
ArS = "|"
ReDim Preserve ArUp(1 To 3, 1 To L01.Rows.Count)
For i = 1 To L01.Rows.Count
'isi string dari kolom H1 ( berisi A,B,C,D )
ArS = ArS & L01(i, kolomkey) & "|"
ArUp(1, i) = L01(i, 1)
ArUp(2, i) = L01(i, 2)
ArUp(3, i) = L01(i, 3)
Next i
' array tabel diperbesar dengan data di L02 (update)
' j = UBound(ArUp)
' ambil banyaknya data di dimensi ke-2 : A B C D
j = UBound(ArUp, 2)
For i = 1 To L02.Rows.Count
' jika ID di L02 belum ada di L01.. maka..
If InStr(1, ArS, "|" & L02(i, kolomkey) & "|") = 0 Then
' jika data di L02 tak ada di ArS
ArS = ArS & L02(i, kolomkey) & "|"
j = j + 1: ReDim Preserve ArUp(1 To 3, 1 To j)
ArUp(1, j) = L02(i, 1)
ArUp(2, j) = L02(i, 2)
ArUp(3, j) = L02(i, 3)
Else ' jika ID di list L02 sudah ada di L01 (kembar)
' Nilainya H2-nya diambilkan dari L02 (data pengUpdate)
For p = 1 To j
If L02(i, kolomkey) = ArUp(kolomkey, p) Then
' ganti data pada ArUp dgn data di L02 hanya index ke-3
ArUp(3, p) = L02(i, 3)
Exit For
End If
Next p
End If
Next i
' bubble sort, mengurutkan hasil Array (sort by ID)
For i = LBound(ArUp) To UBound(ArUp) - 1
For u = LBound(ArUp) To UBound(ArUp) - 1
If ArUp(kolomkey, u) > ArUp(kolomkey, u + 1) Then
Tmp = ArUp(1, u): ArUp(1, u) = ArUp(1, u + 1): ArUp(1, u + 1) = Tmp
Tmp = ArUp(2, u): ArUp(2, u) = ArUp(2, u + 1): ArUp(2, u + 1) = Tmp
Tmp = ArUp(3, u): ArUp(3, u) = ArUp(3, u + 1): ArUp(3, u + 1) = Tmp
End If
Next u
Next i
' variable Join di-isi array ArUp (2 dimensi (3 kol * n row)
JOIN_m = ArUp
End Function

To: belajar-excel@yahoogroups.com
From: jkssxls@hotmail.com
Date: Thu, 29 Sep 2011 05:13:38 +0000
Subject: RE: [belajar-excel] Update Tabel dari sheet lain...

data utama

ID
H1
H2


1
A
100


2
B
125


3
C
10


4
D
5


data updater

ID
H1
H2


1
C
200


2
B
0


5
E
15


data hasil update :

ID
H1
H2


1
A
200


2
B
0


3
C
10


4
D
5


5
E
15


seharusnya :

ID
H1
H2


1
A
100


2
B
0


3
C
200


4
D
5


5
E
15


hal ini karena yg menjadi pembanding adalah index ke -1 ( kolom Id ) , sebaiknya index -2 ( kolom H1 ).
Maaf sedikit mengoreksi .. tak apa -apa , kan....
To: belajar-excel@yahoogroups.com
From: jkssxls@hotmail.com
Date: Thu, 29 Sep 2011 04:42:28 +0000
Subject: RE: [belajar-excel] Update Tabel dari sheet lain...

Mbak Haps , saya sudah coba , ada sedikit yang saya koreksi pada fungsi join :
j = UBound(ArUp) akan selalu menghasilkan 3
di koreksi menjadi
j = UBound(ArUp, 2) akan menghasilkan banyaknya data di range "data" ( worksheet "data" )

Tetapi saya berterima kasih atas fungsi Updatable dan join hasil modif nya

To: belajar-excel@yahoogroups.com
From: hapsari.stlizbeth@gmail.com
Date: Thu, 29 Sep 2011 04:30:15 +0700
Subject: Re: [belajar-excel] Update Tabel dari sheet lain...

Fungsi JOIN telah dimodifikasi (lihat module), agar dapat menampung tabel 2 dimensi) 3 kolomKemudian Fungsi tsb dimanfaatkan untuk mengUpdate tabel data dengan prosedur Sub.

Sudah dicoba sepertinya berhasil, hanya saja listing vba-code nya jadi kepanjangan...

Sub UpdateTable()
' Haps // 28 sept 2011 '---------------------
Dim DatRng As Range, NewRng As Range, ArNew, r As Long

' init: Tabel Data (tanpa headernya)

Set DatRng = Sheets("Data").Cells(1).CurrentRegion.Offset(1, 0) Set DatRng = DatRng.Resize(DatRng.Rows.Count - 1, DatRng.Columns.Count)

' init: Tabel pengUpdate (tanpa header)

Set NewRng = Sheets("Update").Cells(1).CurrentRegion.Offset(1, 0) Set NewRng = NewRng.Resize(NewRng.Rows.Count - 1, NewRng.Columns.Count)

' -- membuat Array (3 kolom * n Baris) dibantu fungsi JOIN

ArNew = JOIN(DatRng, NewRng)
' -- hapus isi tabel data

DatRng.ClearContents
' -- tabel data (yg baru dikosongkan) diupdate dgn data dari Array

For r = 1 To UBound(ArNew, 2) DatRng(r, 1) = ArNew(1, r)

DatRng(r, 2) = ArNew(2, r) DatRng(r, 3) = ArNew(3, r)

Next r
DatRng.Parent.Activate MsgBox "Selesai", vbInformation, ThisWorkbook.Name

End Sub

cmiiww

2011/9/28 Haps <hapsari.stlizbeth@gmail.com>

dulu, sudah lupa bulan / tahunnya, mba siti pernah membuat UDF Join

dua list jika di JOIN, berarti dua lis akan digabung, tetapi data kembar hanya dimunculkan 1 kali

jika perlu hasil JOIN bisa diurutkan (sorted)

sementara belum sempat membuat /memodifikasi makro menjadi khusus untuk keperluan

"sambil JOIN (kolom 1) juga sambil SUMIF (kolom 2)"
saya yakin mas zainul ulum bisa memodifikasi makro tsb agar dapat mengerjakan keperluan

yg diajukan tsb, mungkin berupa prosedur Sub bukan FUnction lebih cuocokk....
ini sudah seijin mbak siti contoh UDF JOINT dilampirkan di sini

'---text / VBA codeing UDF Join

Function JOIN(List1 As Range, List2 As Range, Optional N As Long = 0, _

Optional Urutkan As Boolean = False)
'----- End Function

2011/9/28 zainul ulum <<yahoo>> <zainul_ulum@yahoo.com>

Be-exceler,

Misalnya saya mempunyai table di [sheet 1] dan [Sheet 2].

Table di [sheet 1] akan diupdate berdasarkan record dari [Sheet 2].

Bagaimanakah codenya (macro) agar record di [sheet 1] bisa terupdate

berdasarkan perubahan di [Sheet 2]?

Terimakasih,

-zainul-









1n.

Re: Update Tabel dari sheet lain...

Posted by: "jkssxls Sudarsono" jkssxls@hotmail.com   jkssbma

Thu Sep 29, 2011 2:28 am (PDT)




saya koreksi ya Mr Kids :col.Add rng.Value & "|" & rng.Offset(, 1).Value & "|" & rng.Offset(, 2).Value, rng.Value & "|" & rng.Offset(, 1).Value
menjadi :col.Add rng.Value & "|" & rng.Offset(, 1).Value & "|" & rng.Offset(, 2).Value, rng.Offset(, 1).Value
dimana key menggunakan kolom yang berisi A,B,C,D,E ( kolom ke-2 atau relatif satu kolom kekanan )sehingga lengkapnya : Public Function JoinPakeKoleksi(rngUpdateKolomPertama As Range, rngDataLamaKolomPertama As Range) As Variant
Dim col As Collection 'selalu base 1
Dim rng As Range
Dim lRecs As Long
Dim sItem() As String 'vb6 menggunakan default base 0
Dim vRes As Variant

On Error Resume Next
Set col = New Collection
'mulai dari updater
For Each rng In rngUpdateKolomPertama
If LenB(rng.Value) <> 0 Then
col.Add Item:=rng.Value & "|" & rng.Offset(, 1).Value & "|" & rng.Offset(, 2).Value, _
Key:=rng.Offset(, 1).Value
End If
Next rng

'ikuti dengan data lama
For Each rng In rngDataLamaKolomPertama
If LenB(rng.Value) <> 0 Then
col.Add Item:=rng.Value & "|" & rng.Offset(, 1).Value & "|" & rng.Offset(, 2).Value, _
Key:=rng.Offset(, 1).Value
End If
Next rng
lRecs = col.Count
ReDim vRes(1 To lRecs, 1 To 3) As Variant
For lRecs = 1 To col.Count
MsgBox col(lRecs)
sItem = Split(col(lRecs), "|")
vRes(lRecs, 1) = sItem(0)
vRes(lRecs, 2) = sItem(1)
vRes(lRecs, 3) = sItem(2)
Next lRecs

JoinPakeKoleksi = vRes
End Function

To: belajar-excel@yahoogroups.com
From: mr.nmkid@gmail.com
Date: Thu, 29 Sep 2011 14:44:37 +0700
Subject: Re: [belajar-excel] Update Tabel dari sheet lain...

Coba juga menggunakan object collection untuk join table

Public Function JoinPakeKoleksi(rngUpdateKolomPertama As Range, rngDataLamaKolomPertama As Range) As Variant
Dim col As Collection 'selalu base 1

Dim rng As Range
Dim lRecs As Long
Dim sItem() As String 'vb6 menggunakan default base 0
Dim vRes As Variant

On Error Resume Next
Set col = New Collection
'mulai dari updater

For Each rng In rngUpdateKolomPertama
If LenB(rng.Value) <> 0 Then
col.Add rng.Value & "|" & rng.Offset(, 1).Value & "|" & rng.Offset(, 2).Value, _

rng.Value & "|" & rng.Offset(, 1).Value
End If
Next rng

'ikuti dengan data lama
For Each rng In rngDataLamaKolomPertama
If LenB(rng.Value) <> 0 Then

col.Add rng.Value & "|" & rng.Offset(, 1).Value & "|" & rng.Offset(, 2).Value, _
rng.Value & "|" & rng.Offset(, 1).Value
End If

Next rng
lRecs = col.Count
ReDim vRes(1 To lRecs, 1 To 3) As Variant
For lRecs = 1 To col.Count
sItem = Split(col(lRecs), "|")
vRes(lRecs, 1) = sItem(0)
vRes(lRecs, 2) = sItem(1)

vRes(lRecs, 3) = sItem(2)
Next lRecs

JoinPakeKoleksi = vRes
End Function
'Mungkin perlu dicoba untuk record update yang banyak dan record data yang juga banyak.

Ingin di-sort ?

buat fungsi sorting yang inputnya berupa array, agar hasil fungsi di atas bisa menjadi input parameter untuk fungsi sorting tersebut.

Regards.
Kid.

2011/9/29 jkssxls Sudarsono <jkssxls@hotmail.com>

saya modif fungsi join menjadi join_m
Private Function JOIN_m(L01 As Range, L02 As Range)
'=== siti Vi : Fungsi JOIN : menggabung dua List
' modified by Haps: 29 sep 2011
' tiap list berisi 3 kolom, Uniq pada Kolom 1 (ID)

'=================================================
Dim ArS As String, ArUp(), Tmp
Dim i As Long, j As Long, p As Long, u As Long
Dim kolomkey As Integer
kolomkey = 2
' menyusun 3 array ex tabel data

ArS = "|"
ReDim Preserve ArUp(1 To 3, 1 To L01.Rows.Count)
For i = 1 To L01.Rows.Count
'isi string dari kolom H1 ( berisi A,B,C,D )
ArS = ArS & L01(i, kolomkey) & "|"

ArUp(1, i) = L01(i, 1)
ArUp(2, i) = L01(i, 2)
ArUp(3, i) = L01(i, 3)
Next i
' array tabel diperbesar dengan data di L02 (update)
' j = UBound(ArUp)
' ambil banyaknya data di dimensi ke-2 : A B C D

j = UBound(ArUp, 2)
For i = 1 To L02.Rows.Count
' jika ID di L02 belum ada di L01.. maka..
If InStr(1, ArS, "|" & L02(i, kolomkey) & "|") = 0 Then
' jika data di L02 tak ada di ArS

ArS = ArS & L02(i, kolomkey) & "|"
j = j + 1: ReDim Preserve ArUp(1 To 3, 1 To j)
ArUp(1, j) = L02(i, 1)
ArUp(2, j) = L02(i, 2)
ArUp(3, j) = L02(i, 3)

Else ' jika ID di list L02 sudah ada di L01 (kembar)
' Nilainya H2-nya diambilkan dari L02 (data pengUpdate)
For p = 1 To j
If L02(i, kolomkey) = ArUp(kolomkey, p) Then

' ganti data pada ArUp dgn data di L02 hanya index ke-3
ArUp(3, p) = L02(i, 3)
Exit For
End If
Next p
End If
Next i
' bubble sort, mengurutkan hasil Array (sort by ID)

For i = LBound(ArUp) To UBound(ArUp) - 1
For u = LBound(ArUp) To UBound(ArUp) - 1
If ArUp(kolomkey, u) > ArUp(kolomkey, u + 1) Then
Tmp = ArUp(1, u): ArUp(1, u) = ArUp(1, u + 1): ArUp(1, u + 1) = Tmp

Tmp = ArUp(2, u): ArUp(2, u) = ArUp(2, u + 1): ArUp(2, u + 1) = Tmp
Tmp = ArUp(3, u): ArUp(3, u) = ArUp(3, u + 1): ArUp(3, u + 1) = Tmp
End If
Next u
Next i
' variable Join di-isi array ArUp (2 dimensi (3 kol * n row)

JOIN_m = ArUp
End Function

To: belajar-excel@yahoogroups.com
From: jkssxls@hotmail.com

Date: Thu, 29 Sep 2011 05:13:38 +0000
Subject: RE: [belajar-excel] Update Tabel dari sheet lain...

data utama

ID
H1
H2


1
A
100


2
B
125


3
C
10


4
D
5


data updater

ID
H1
H2


1
C
200


2
B
0


5
E
15


data hasil update :

ID
H1
H2


1
A
200


2
B
0


3
C
10


4
D
5


5
E
15


seharusnya :

ID
H1
H2


1
A
100


2
B
0


3
C
200


4
D
5


5
E
15


hal ini karena yg menjadi pembanding adalah index ke -1 ( kolom Id ) , sebaiknya index -2 ( kolom H1 ).
Maaf sedikit mengoreksi .. tak apa -apa , kan....
To: belajar-excel@yahoogroups.com

From: jkssxls@hotmail.com
Date: Thu, 29 Sep 2011 04:42:28 +0000
Subject: RE: [belajar-excel] Update Tabel dari sheet lain...

Mbak Haps , saya sudah coba , ada sedikit yang saya koreksi pada fungsi join :
j = UBound(ArUp) akan selalu menghasilkan 3
di koreksi menjadi
j = UBound(ArUp, 2) akan menghasilkan banyaknya data di range "data" ( worksheet "data" )

Tetapi saya berterima kasih atas fungsi Updatable dan join hasil modif nya

To: belajar-excel@yahoogroups.com
From: hapsari.stlizbeth@gmail.com

Date: Thu, 29 Sep 2011 04:30:15 +0700
Subject: Re: [belajar-excel] Update Tabel dari sheet lain...

Fungsi JOIN telah dimodifikasi (lihat module), agar dapat menampung tabel 2 dimensi) 3 kolomKemudian Fungsi tsb dimanfaatkan untuk mengUpdate tabel data dengan prosedur Sub.

Sudah dicoba sepertinya berhasil, hanya saja listing vba-code nya jadi kepanjangan...

Sub UpdateTable()
' Haps // 28 sept 2011 '---------------------
Dim DatRng As Range, NewRng As Range, ArNew, r As Long

' init: Tabel Data (tanpa headernya)

Set DatRng = Sheets("Data").Cells(1).CurrentRegion.Offset(1, 0) Set DatRng = DatRng.Resize(DatRng.Rows.Count - 1, DatRng.Columns.Count)

' init: Tabel pengUpdate (tanpa header)

Set NewRng = Sheets("Update").Cells(1).CurrentRegion.Offset(1, 0) Set NewRng = NewRng.Resize(NewRng.Rows.Count - 1, NewRng.Columns.Count)

' -- membuat Array (3 kolom * n Baris) dibantu fungsi JOIN

ArNew = JOIN(DatRng, NewRng)
' -- hapus isi tabel data

DatRng.ClearContents
' -- tabel data (yg baru dikosongkan) diupdate dgn data dari Array

For r = 1 To UBound(ArNew, 2) DatRng(r, 1) = ArNew(1, r)

DatRng(r, 2) = ArNew(2, r) DatRng(r, 3) = ArNew(3, r)

Next r
DatRng.Parent.Activate MsgBox "Selesai", vbInformation, ThisWorkbook.Name

End Sub

cmiiww

2011/9/28 Haps <hapsari.stlizbeth@gmail.com>

dulu, sudah lupa bulan / tahunnya, mba siti pernah membuat UDF Join

dua list jika di JOIN, berarti dua lis akan digabung, tetapi data kembar hanya dimunculkan 1 kali

jika perlu hasil JOIN bisa diurutkan (sorted)

sementara belum sempat membuat /memodifikasi makro menjadi khusus untuk keperluan

"sambil JOIN (kolom 1) juga sambil SUMIF (kolom 2)"
saya yakin mas zainul ulum bisa memodifikasi makro tsb agar dapat mengerjakan keperluan

yg diajukan tsb, mungkin berupa prosedur Sub bukan FUnction lebih cuocokk....
ini sudah seijin mbak siti contoh UDF JOINT dilampirkan di sini

'---text / VBA codeing UDF Join

Function JOIN(List1 As Range, List2 As Range, Optional N As Long = 0, _

Optional Urutkan As Boolean = False)
'----- End Function

2011/9/28 zainul ulum <<yahoo>> <zainul_ulum@yahoo.com>

Be-exceler,

Misalnya saya mempunyai table di [sheet 1] dan [Sheet 2].

Table di [sheet 1] akan diupdate berdasarkan record dari [Sheet 2].

Bagaimanakah codenya (macro) agar record di [sheet 1] bisa terupdate

berdasarkan perubahan di [Sheet 2]?

Terimakasih,

-zainul-







1o.

Re: Update Tabel dari sheet lain...

Posted by: "Kid Mr." mr.nmkid@gmail.com   nmkid.family@ymail.com

Thu Sep 29, 2011 2:39 am (PDT)



Oke. Bebas deh mau diapakan saja.

Yang jelas :
Object collection bisa mengurangi beban cek item apakah sudah ada atau belum
yang biasanya di loop sendiri dengan for next atau do loop.
Object ini cocok untuk data yang unique komposit key nya.
Pada proses update data, dahulukan sisi data updater, baru diikuti dengan
data lama yang ada di database.
Inti dari proses update data adalah pada bagian :
col.Add *rng.Value & "|" & rng.Offset(, 1).Value & "|" & rng.Offset(,
2).Value* , *rng.Value & "|" & rng.Offset(, 1).Value*
Yang *biru *adalah gabungan nilai data seluruh kolom
Yang *hijau *adalah komposit key, jadi bebas tergantung kebutuhan, keynya
mau pake yang mana saja dan berapa saja.
Jika komposit key telah terdaftar dalam koleksi, maka akan muncul error
value. Itu sebabnya ada baris error trap dengan on error resume next di atas
sana.

Karakter | digunakan dengan asumsi tidak pernah digunakan sebagai isi dari
nilai-nilai disetiap kolom. Jika ternyata dipakai, maka gunakan karakter
lain yang tidak dipakai di semua kolom.
Untuk penerapan di selain di Excel, waspadai datatype. Karena hasil Split
adalah string. Di Excel, ada fasilitas konversi oleh excelnya sendiri ketika
string angka masuk ke cell.

Kid.

2011/9/29 jkssxls Sudarsono <jkssxls@hotmail.com>

> **
>
>
> saya koreksi ya Mr Kids :
> col.Add rng.Value & "|" & rng.Offset(, 1).Value & "|" & rng.Offset(,
> 2).Value, rng.Value & "|" & rng.Offset(, 1).Value
> menjadi :
> col.Add rng.Value & "|" & rng.Offset(, 1).Value & "|" & rng.Offset(,
> 2).Value, rng.Offset(, 1).Value
>
> dimana key menggunakan kolom yang berisi A,B,C,D,E ( kolom ke-2 atau
> relatif satu kolom kekanan )
> sehingga lengkapnya :
>
> Public Function JoinPakeKoleksi(rngUpdateKolomPertama As Range,
> rngDataLamaKolomPertama As Range) As Variant
> Dim col As Collection 'selalu base 1
> Dim rng As Range
> Dim lRecs As Long
> Dim sItem() As String 'vb6 menggunakan default base 0
> Dim vRes As Variant
>
> On Error Resume Next
> Set col = New Collection
> 'mulai dari updater
> For Each rng In rngUpdateKolomPertama
> If LenB(rng.Value) <> 0 Then
> col.Add Item:=rng.Value & "|" & rng.Offset(, 1).Value & "|" &
> rng.Offset(, 2).Value, _
> Key:=rng.Offset(, 1).Value
>
> End If
> Next rng
>
> 'ikuti dengan data lama
> For Each rng In rngDataLamaKolomPertama
> If LenB(rng.Value) <> 0 Then
> col.Add Item:=rng.Value & "|" & rng.Offset(, 1).Value & "|" &
> rng.Offset(, 2).Value, _
> Key:=rng.Offset(, 1).Value
>
> End If
> Next rng
> lRecs = col.Count
> ReDim vRes(1 To lRecs, 1 To 3) As Variant
> For lRecs = 1 To col.Count
> MsgBox col(lRecs)
>
> sItem = Split(col(lRecs), "|")
> vRes(lRecs, 1) = sItem(0)
> vRes(lRecs, 2) = sItem(1)
> vRes(lRecs, 3) = sItem(2)
> Next lRecs
>
> JoinPakeKoleksi = vRes
> End Function
>
>
> ------------------------------
> To: belajar-excel@yahoogroups.com
> From: mr.nmkid@gmail.com
> Date: Thu, 29 Sep 2011 14:44:37 +0700
>
> Subject: Re: [belajar-excel] Update Tabel dari sheet lain...
>
>
> Coba juga menggunakan object collection untuk join table
>
> Public Function JoinPakeKoleksi(rngUpdateKolomPertama As Range,
> rngDataLamaKolomPertama As Range) As Variant
> Dim col As Collection 'selalu base 1
> Dim rng As Range
> Dim lRecs As Long
> Dim sItem() As String 'vb6 menggunakan default base 0
> Dim vRes As Variant
>
> On Error Resume Next
> Set col = New Collection
> 'mulai dari updater
> For Each rng In rngUpdateKolomPertama
> If LenB(rng.Value) <> 0 Then
> col.Add rng.Value & "|" & rng.Offset(, 1).Value & "|" &
> rng.Offset(, 2).Value, _
> rng.Value & "|" & rng.Offset(, 1).Value
> End If
> Next rng
>
> 'ikuti dengan data lama
> For Each rng In rngDataLamaKolomPertama
> If LenB(rng.Value) <> 0 Then
> col.Add rng.Value & "|" & rng.Offset(, 1).Value & "|" &
> rng.Offset(, 2).Value, _
> rng.Value & "|" & rng.Offset(, 1).Value
> End If
> Next rng
> lRecs = col.Count
> ReDim vRes(1 To lRecs, 1 To 3) As Variant
> For lRecs = 1 To col.Count
> sItem = Split(col(lRecs), "|")
> vRes(lRecs, 1) = sItem(0)
> vRes(lRecs, 2) = sItem(1)
> vRes(lRecs, 3) = sItem(2)
> Next lRecs
>
> JoinPakeKoleksi = vRes
> End Function
> 'Mungkin perlu dicoba untuk record update yang banyak *dan* record data
> yang juga banyak.
>
> Ingin di-sort ?
> buat fungsi sorting yang inputnya berupa array, agar hasil fungsi di atas
> bisa menjadi input parameter untuk fungsi sorting tersebut.
>
> Regards.
> Kid.
>
> 2011/9/29 jkssxls Sudarsono <jkssxls@hotmail.com>
>
> **
>
>
>
> saya modif fungsi join menjadi join_m
> Private Function JOIN_m(L01 As Range, L02 As Range)
>
> '=== siti Vi : Fungsi JOIN : menggabung dua List
> ' modified by Haps: 29 sep 2011
> ' tiap list berisi 3 kolom, Uniq pada Kolom 1 (ID)
> '=================================================
> Dim ArS As String, ArUp(), Tmp
> Dim i As Long, j As Long, p As Long, u As Long
> Dim kolomkey As Integer
> kolomkey = 2
> ' menyusun 3 array ex tabel data
> ArS = "|"
> ReDim Preserve ArUp(1 To 3, 1 To L01.Rows.Count)
> For i = 1 To L01.Rows.Count
> 'isi string dari kolom H1 ( berisi A,B,C,D )
> ArS = ArS & L01(i, kolomkey) & "|"
> ArUp(1, i) = L01(i, 1)
> ArUp(2, i) = L01(i, 2)
> ArUp(3, i) = L01(i, 3)
> Next i
> ' array tabel diperbesar dengan data di L02 (update)
> ' j = UBound(ArUp)
> ' ambil banyaknya data di dimensi ke-2 : A B C D
> j = UBound(ArUp, 2)
> For i = 1 To L02.Rows.Count
> ' jika ID di L02 belum ada di L01.. maka..
> If InStr(1, ArS, "|" & L02(i, kolomkey) & "|") = 0 Then
> ' jika data di L02 tak ada di ArS
> ArS = ArS & L02(i, kolomkey) & "|"
> j = j + 1: ReDim Preserve ArUp(1 To 3, 1 To j)
> ArUp(1, j) = L02(i, 1)
> ArUp(2, j) = L02(i, 2)
> ArUp(3, j) = L02(i, 3)
> Else ' jika ID di list L02 sudah ada di L01 (kembar)
> ' Nilainya H2-nya diambilkan dari L02 (data pengUpdate)
> For p = 1 To j
> If L02(i, kolomkey) = ArUp(kolomkey, p) Then
> ' ganti data pada ArUp dgn data di L02 hanya index ke-3
> ArUp(3, p) = L02(i, 3)
> Exit For
> End If
> Next p
> End If
> Next i
> ' bubble sort, mengurutkan hasil Array (sort by ID)
> For i = LBound(ArUp) To UBound(ArUp) - 1
> For u = LBound(ArUp) To UBound(ArUp) - 1
> If ArUp(kolomkey, u) > ArUp(kolomkey, u + 1) Then
> Tmp = ArUp(1, u): ArUp(1, u) = ArUp(1, u + 1): ArUp(1, u + 1) =
> Tmp
> Tmp = ArUp(2, u): ArUp(2, u) = ArUp(2, u + 1): ArUp(2, u + 1) =
> Tmp
> Tmp = ArUp(3, u): ArUp(3, u) = ArUp(3, u + 1): ArUp(3, u + 1) =
> Tmp
> End If
> Next u
> Next i
> ' variable Join di-isi array ArUp (2 dimensi (3 kol * n row)
> JOIN_m = ArUp
> End Function
>
>
> ------------------------------
> To: belajar-excel@yahoogroups.com
> From: jkssxls@hotmail.com
> Date: Thu, 29 Sep 2011 05:13:38 +0000
>
> Subject: RE: [belajar-excel] Update Tabel dari sheet lain...
>
>
> data utama
> ID H1 H2 1 A 100 2 B 125 3 C 10 4 D 5 data updater
> ID H1 H2 1 C 200 2 B 0 5 E 15 data hasil update :
> ID H1 H2 1 A 200 2 B 0 3 C 10 4 D 5 5 E 15 seharusnya :
> ID H1 H2 1 A 100 2 B 0 3 C 200 4 D 5 5 E 15
> hal ini karena yg menjadi pembanding adalah index ke -1 ( kolom Id ) ,
> sebaiknya index -2 ( kolom H1 ).
> Maaf sedikit mengoreksi .. tak apa -apa , kan....
> ------------------------------
> To: belajar-excel@yahoogroups.com
> From: jkssxls@hotmail.com
> Date: Thu, 29 Sep 2011 04:42:28 +0000
> Subject: RE: [belajar-excel] Update Tabel dari sheet lain...
>
>
> Mbak Haps , saya sudah coba , ada sedikit yang saya koreksi pada fungsi
> join :
> j = UBound(ArUp) akan selalu menghasilkan 3
> di koreksi menjadi
> j = UBound(ArUp, 2) akan menghasilkan banyaknya data di range "data" (
> worksheet "data" )
>
> Tetapi saya berterima kasih atas fungsi Updatable dan join hasil modif nya
>
>
> ------------------------------
> To: belajar-excel@yahoogroups.com
> From: hapsari.stlizbeth@gmail.com
> Date: Thu, 29 Sep 2011 04:30:15 +0700
> Subject: Re: [belajar-excel] Update Tabel dari sheet lain...
>
>
> Fungsi JOIN telah dimodifikasi (lihat module), agar dapat menampung tabel
> 2 dimensi) 3 kolom
> Kemudian Fungsi tsb *dimanfaatkan untuk mengUpdate tabel* data dengan
> prosedur Sub.
>
> Sudah dicoba sepertinya berhasil, hanya saja listing vba-code nya jadi
> kepanjangan...
>
> Sub UpdateTable()
> ' Haps // 28 sept 2011
> '---------------------
> Dim DatRng As Range, NewRng As Range, ArNew, r As Long
>
> ' init: Tabel Data (tanpa headernya)
> Set DatRng = Sheets("Data").Cells(1).CurrentRegion.Offset(1, 0)
> Set DatRng = DatRng.Resize(DatRng.Rows.Count - 1, DatRng.Columns.Count)
>
> ' init: Tabel pengUpdate (tanpa header)
> Set NewRng = Sheets("Update").Cells(1).CurrentRegion.Offset(1, 0)
> Set NewRng = NewRng.Resize(NewRng.Rows.Count - 1, NewRng.Columns.Count)
>
> ' -- membuat Array (3 kolom * n Baris) dibantu fungsi JOIN
> ArNew = *JOIN(DatRng, NewRng)*
>
> ' -- hapus isi tabel data
> DatRng.ClearContents
>
> ' -- tabel data (yg baru dikosongkan) diupdate dgn data dari Array
> For r = 1 To UBound(ArNew, 2)
> DatRng(r, 1) = ArNew(1, r)
> DatRng(r, 2) = ArNew(2, r)
> DatRng(r, 3) = ArNew(3, r)
> Next r
>
> DatRng.Parent.Activate
> MsgBox "Selesai", vbInformation, ThisWorkbook.Name
>
> End Sub
>
>
> cmiiw
> w
>
>
> 2011/9/28 Haps <hapsari.stlizbeth@gmail.com>
>
> dulu, sudah lupa bulan / tahunnya, mba siti pernah membuat UDF Join
>
> dua list jika di JOIN, berarti dua lis akan digabung, tetapi data kembar
> hanya dimunculkan 1 kali
> jika perlu hasil JOIN bisa diurutkan (sorted)
>
> sementara belum sempat membuat /memodifikasi makro menjadi khusus untuk
> keperluan
> "sambil JOIN (kolom 1) juga sambil SUMIF (kolom 2)"
>
> saya yakin mas zainul ulum bisa memodifikasi makro tsb agar
> dapat mengerjakan keperluan
> yg diajukan tsb, mungkin berupa prosedur Sub bukan FUnction lebih
> cuocokk....
>
> ini sudah seijin mbak siti contoh UDF JOINT dilampirkan di sini
>
> '---text / VBA codeing UDF Join
>
> Function JOIN(List1 As Range, List2 As Range, Optional N As Long = 0, _
> Optional Urutkan As Boolean = False)
> '-----
> End Function
>
>
>
>
> 2011/9/28 zainul ulum <<yahoo>> <zainul_ulum@yahoo.com>
>
> Be-exceler,
> Misalnya saya mempunyai table di [sheet 1] dan [Sheet 2].
> Table di [sheet 1] akan diupdate berdasarkan record dari [Sheet 2].
>
> Bagaimanakah codenya (macro) agar record di [sheet 1] bisa terupdate
> berdasarkan perubahan di [Sheet 2]?
>
> Terimakasih,
> -zainul-
>
>
>
>
>
>
>
>
>
>
>
>
>
>
2a.

Form untuk input data

Posted by: "Senja Laura" 4r54ur4@gmail.com

Wed Sep 28, 2011 10:08 pm (PDT)



Selamat siang semua

Saya punya data seperti terlampir di sheet 1 dan mau bikin form seperti di
SHEET 2,
kira-kira bagaimana macronya ya? dengan ketentuan jika kolom sebelumnya
telah terisi maka input akan pindah ke kolom berikutnya

terima kasih
Laura
2b.

Re: Form untuk input data

Posted by: "Kid Mr." mr.nmkid@gmail.com   nmkid.family@ymail.com

Wed Sep 28, 2011 10:23 pm (PDT)



Untuk membuat pengisian agar usai enter isian di kolom B maka cell aktif
pindah ke kolom C, bisa dengan setting di option excel.
[image: xl007_gen12_xl2007_options_adv_enter_to_right.gif]

Gak menyelesaikan ya.. Siapa tahu ada mangpaatnya.

Kid.

2011/9/29 Senja Laura <4r54ur4@gmail.com>

> **
>
>
> Selamat siang semua
>
> Saya punya data seperti terlampir di sheet 1 dan mau bikin form seperti di
> SHEET 2,
> kira-kira bagaimana macronya ya? dengan ketentuan jika kolom sebelumnya
> telah terisi maka input akan pindah ke kolom berikutnya
>
> terima kasih
> Laura
>
>
>
2c.

Re: Form untuk input data

Posted by: "Senja Laura" 4r54ur4@gmail.com

Wed Sep 28, 2011 10:30 pm (PDT)



Belum menyelesaikan Pak Dhe!!saya butuh macro untuk menjalankan form di
sheet 2, tapi info nya bermanfaat!!thanks

2011/9/29 Kid Mr. <mr.nmkid@gmail.com>

> **
>
>
> Untuk membuat pengisian agar usai enter isian di kolom B maka cell aktif
> pindah ke kolom C, bisa dengan setting di option excel.
> [image: xl007_gen12_xl2007_options_adv_enter_to_right.gif]
>
> Gak menyelesaikan ya.. Siapa tahu ada mangpaatnya.
>
> Kid.
>
>
>
> 2011/9/29 Senja Laura <4r54ur4@gmail.com>
>
>> **
>>
>>
>> Selamat siang semua
>>
>> Saya punya data seperti terlampir di sheet 1 dan mau bikin form seperti di
>> SHEET 2,
>> kira-kira bagaimana macronya ya? dengan ketentuan jika kolom sebelumnya
>> telah terisi maka input akan pindah ke kolom berikutnya
>>
>> terima kasih
>> Laura
>>
>>
>
>
3a.

Menjumlahkan yang berisi angka saja

Posted by: "Senja Laura" 4r54ur4@gmail.com

Wed Sep 28, 2011 11:30 pm (PDT)



Soal kedua saya hari ini mudah-mudahan ada yang menjawab[?]
Seperti file terlampir
1.bagaimana rumusnya untuk penjumlahan pada deret baris di atas (yang ada
angkanya saja,tanggal dan tempat tidak ikut)
2. bisa ngga misal jika saya tekan CTRL+F dan memasukkan kata `Memo10`
misalnya
hanya sepanjang baris tersebut yang tersorot (yang warna kuning)dan bisa di
isi data sehingga kemungkinan salah input di kolom lain menjadi tidak ada
3b.

Re: Menjumlahkan yang berisi angka saja

Posted by: "Franciscus SOG" jclugbu@gmail.com   elijah_spirit

Thu Sep 29, 2011 12:13 am (PDT)



Dear Laura,

Kalo begitu pake UDF angkasaja.
Untuk Find, tidak melalui DialogBox Find tapi melalui macro.

Public Function angkasaja(data As Range) As Double
Dim sData As Range

For Each sData In data
If IsNumeric(sData.Value) Then
angkasaja = angkasaja + sData.Value
End If
Next
End Function

Sub cari()
Dim sKunci, sLokasi As String
On Error GoTo CommandErr
sKunci = InputBox("Masukkan kata kunci", "Input kata kunci", "")
If sKunci <> vbNullString Then
sLokasi = WorksheetFunction.Match(sKunci, Sheet1.Columns("D:D"), 0)
Rows(sLokasi & ":" & sLokasi).Select
End If
CommandErr:
MsgBox "Kata kunci tidak ada", vbCritical, "Search"
Exit Sub
End Sub

Semoga bermanfaat.

Blessings,

Fran'z

On 9/29/11, Senja Laura <4r54ur4@gmail.com> wrote:
> Soal kedua saya hari ini mudah-mudahan ada yang menjawab[?]
> Seperti file terlampir
> 1.bagaimana rumusnya untuk penjumlahan pada deret baris di atas (yang ada
> angkanya saja,tanggal dan tempat tidak ikut)
> 2. bisa ngga misal jika saya tekan CTRL+F dan memasukkan kata `Memo10`
> misalnya
> hanya sepanjang baris tersebut yang tersorot (yang warna kuning)dan bisa di
> isi data sehingga kemungkinan salah input di kolom lain menjadi tidak ada
>
>
3c.

Re: Menjumlahkan yang berisi angka saja

Posted by: "Senja Laura" 4r54ur4@gmail.com

Thu Sep 29, 2011 12:29 am (PDT)



Dear Pak Franz
terima kasih UDFnya
tapi findnya belum bisa berfungsi saya masukkan memo10 kok ngga match ya!!!

2011/9/29 Franciscus SOG <jclugbu@gmail.com>

> **
>
>
> Dear Laura,
>
> Kalo begitu pake UDF angkasaja.
> Untuk Find, tidak melalui DialogBox Find tapi melalui macro.
>
> Public Function angkasaja(data As Range) As Double
> Dim sData As Range
>
> For Each sData In data
> If IsNumeric(sData.Value) Then
> angkasaja = angkasaja + sData.Value
> End If
> Next
> End Function
>
> Sub cari()
> Dim sKunci, sLokasi As String
> On Error GoTo CommandErr
> sKunci = InputBox("Masukkan kata kunci", "Input kata kunci", "")
> If sKunci <> vbNullString Then
> sLokasi = WorksheetFunction.Match(sKunci, Sheet1.Columns("D:D"), 0)
> Rows(sLokasi & ":" & sLokasi).Select
> End If
> CommandErr:
> MsgBox "Kata kunci tidak ada", vbCritical, "Search"
> Exit Sub
> End Sub
>
> Semoga bermanfaat.
>
> Blessings,
>
> Fran'z
>
> On 9/29/11, Senja Laura <4r54ur4@gmail.com> wrote:
> > Soal kedua saya hari ini mudah-mudahan ada yang menjawab[?]
>
> > Seperti file terlampir
> > 1.bagaimana rumusnya untuk penjumlahan pada deret baris di atas (yang ada
> > angkanya saja,tanggal dan tempat tidak ikut)
> > 2. bisa ngga misal jika saya tekan CTRL+F dan memasukkan kata `Memo10`
> > misalnya
> > hanya sepanjang baris tersebut yang tersorot (yang warna kuning)dan bisa
> di
> > isi data sehingga kemungkinan salah input di kolom lain menjadi tidak ada
> >
> >
>
>
>
4.

Membuat Rekap Data

Posted by: "Cang Ato" cangato1@gmail.com   yangato45

Thu Sep 29, 2011 12:52 am (PDT)



Dear Para Master....

Pertama-tama Salam kenal dulu dari Neubie... :D
Panggil Saya ATO saja :D

mo Bantuannya untuk mempermudah kerjaan di kantor ni...

Saya punya Format Voucher yang saya ketik secara manual di Excel,
kendala yang saya hadapi, setelah membuat Voucher, maka saya haru melakukan
rekap pengeluaran voucher2 secara manual.

Pertanyaan : apakah dari Voucher yang saya buat bisa dilakukan rekap secara
langsung ??

Berikut Format Voucher n Format Rekap Terlampir.

Trims,
ATO
5a.

Isi sel jadi isi tabel

Posted by: "sarma diaz" sh.ronald@yahoo.co.id   sh.ronald

Thu Sep 29, 2011 3:32 am (PDT)



Sore rekan belajar excel. Mohon dibantu tentang, bagaimana memecah isi sel menjadi isi tabel kolom.
Saya lampirkan file berikut ini. 
Terima kasih atas bantuannya.

Ronald
5b.

Re: Isi sel jadi isi tabel

Posted by: "Kid Mr." mr.nmkid@gmail.com   nmkid.family@ymail.com

Thu Sep 29, 2011 3:46 am (PDT)



Pada data terstruktur dengan delimiter, biasanya menggunakan formula berusi
fungsi Trim, Mid dan Substitute. Karena ada delimiter newline, maka
dibutuhkan sebuah proses susbtitusi karakter newline (char 10) menjadi
karakter delimiter data (pada kasus ini adalah karakter titik dua ':')

=TRIM(MID(SUBSTITUTE(SUBSTITUTE($F2,CHAR(10),":"),":",REPT("
",99)),(2*COLUMNS($J$1:J$1)-1)*99,99))

Angsuran sebaiknya tetap disimpan angkanya saja, dengan datatype numerik.
Format cell number custom dapat tetap membuat nilai tampak seperti memiliki
teks 'Angsuran' didalam cell.
=--MID(F2,FIND(UPPER($N$1),F2)+LEN($N$1),9)

Thank You and Regards.
Kid.

2011/9/29 sarma diaz <sh.ronald@yahoo.co.id>

> **
>
>
> Sore rekan belajar excel. Mohon dibantu tentang, bagaimana memecah isi sel
> menjadi isi tabel kolom.
> Saya lampirkan file berikut ini.
> Terima kasih atas bantuannya.
>
> Ronald
>
>
>
6.

saldo akhir pindah ke saldo awal

Posted by: "Darto Chandra" d_c@gmx.com

Thu Sep 29, 2011 3:32 am (PDT)



terlampir file kerjaan saya. Pada sheet menu periode january terdapat command button menu. didalamnya terdapat tombol tutup bulan.mohon bantuannya untuk menulis makro di tombol tersebut. Pengennya kalo tombol tersebut di pencet data yang ada di sheet data1 dengan cell tally, T,L,P,Grade,SAK[PCS] akan berpindah ke sheet data2 dan menempati cell tally,T,L,P,SAW[PCS] dengan catatan SAK[PCS} di Data1 bukan nol.
Terima kasih.

Darto Chandra
085881648818

-- Mods --
File lampiran melebihi batas.
File lampiran akan disusulkan oleh Pak Darto Chandra setelah ukuran file memenuhi peraturan milis (<250KB).
----------

Recent Activity
Visit Your Group
Find helpful tips

for Moderators

on the Yahoo!

Groups team blog.

Yahoo! Groups

Parenting Zone

Family and home

Tips for mom

Yahoo! Finance

It's Now Personal

Guides, news,

advice & more.

Need to Reply?

Click one of the "Reply" links to respond to a specific message in the Daily Digest.

Create New Topic | Visit Your Group on the Web
---------------------------------------------------------------------
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
---------------------------------------------------------------------
MARKETPLACE

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


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

Tidak ada komentar:

Posting Komentar