Pada artikel ini, kita akan melihat cara menyinkronkan data antara dua sel/rentang/kolom atau baris menggunakan VBA. Tentu saja, Anda dapat menggunakan referensi sel untuk melakukan hal yang sama, tetapi jika Anda perlu menggunakan VBA, Anda dapat merujuk ke contoh berikut
Dalam setiap contoh di bawah ini, kami akan menggunakan subrutin "Worksheet_Change". Subrutin ini dijalankan setiap kali ada perubahan nilai dalam lembar kerja. Parameter untuk subrutin ini adalah Target (bertipe Rentang) yang mewakili rentang di mana perubahan dibuat. Kode harus ditulis dalam modul kode lembar tempat perubahan perlu disinkronkan
Isi
Contoh 1. Sinkronisasi data antara dua sel
Katakanlah, Anda memiliki dua dasbor di mana jika Anda memasukkan tanggal di dasbor pertama, tanggal tersebut secara otomatis akan tercermin di dasbor kedua. Dalam contoh kami di bawah ini, kami akan menyinkronkan sel A1 di Sheet1 secara otomatis ke sel A1 yang sama di Sheet2. Seperti disebutkan di atas, perlu diketahui bahwa kode harus ditulis dalam modul kode Sheet1. Ini kodenya
Private Sub Worksheet_Change(ByVal Target As Range) Dim sourceSheet As Worksheet, targetSheet As Worksheet Dim syncCell As String 'Set the source and target sheets here Set sourceSheet = Sheet1 Set targetSheet = Sheet2 'This will be the cell that needs to be synced syncCell = "A1" 'Check whether the cell that was changed in Sheet1 is A1 If Target.Address = Range(syncCell).Address Then 'If so, copy the value to Sheet2, cell A1 targetSheet.Range(Target.Address) = sourceSheet.Range(Target.Address) End If End SubKami menggunakan Target. Alamat untuk menemukan sel tempat perubahan dibuat. Ini akan mengembalikan alamat dalam format "$A$1"
Jadi, setiap kali Anda membuat perubahan di Sheet1 sel A1, nilainya akan disalin secara otomatis ke sel yang sesuai di Sheet2. Jika Anda menghapus sel, maka sel di Sheet2 juga akan dihapus. Perhatikan bahwa, hanya nilai yang akan disalin, bukan rumus atau pemformatannya. Jika Anda perlu menyalin penggunaan pemformatan
If Target.Address = Range(syncCell).Address Then sourceSheet.Range(Target.Address).Copy targetSheet.Range(Target.Address).PasteSpecial xlPasteAll End If _Dan pada baris yang sama, gunakan rumus untuk menyalin
Dalam hal ini, jika Anda memasukkan nilai, nilai tersebut akan disinkronkan dan jika Anda memasukkan rumus, rumus tersebut akan disinkronkan
Contoh 2. Sinkronkan data antara dua baris
Sekarang, mari kita lihat cara menyinkronkan seluruh baris di antara dua sheet. Untuk contoh ini, kami akan menyinkronkan baris 1 di Sheet1 ke baris yang sesuai di Sheet2
Private Sub Worksheet_Change(ByVal Target As Range) Dim sourceSheet As Worksheet, targetSheet As Worksheet Dim syncRow As Long 'Set the source and target sheets here Set sourceSheet = Sheet1 Set targetSheet = Sheet2 'This will be the row that needs to be synced syncRow = 1 'Check whether the cell that was changed in Sheet1 lies in Row 1 If Target.Row = syncRow Then 'If so, get the address of the cell that changed 'And make the same change in corresponding cell in Sheet2 targetSheet.Range(Target.Address) = sourceSheet.Range(Target.Address) End If End SubDi sini kami menggunakan Target. Properti baris untuk mendapatkan nomor baris sel yang diubah. Jadi, jika Anda mengubah sel apa pun di baris 1, nilainya akan disalin ke sel yang sama di baris 2
Contoh 3. Sinkronisasi data antara dua kolom
Sinkronisasi dua kolom sangat mirip dengan sinkronisasi dua baris. Ini kode untuk menyinkronkan kolom 1
Contoh 4. Sinkronkan data antara dua rentang
Mari kita lihat cara menyinkronkan dua rentang dalam contoh ini. Kami akan menggunakan Aplikasi. Metode berpotongan untuk menentukan apakah sel yang diubah berada dalam rentang yang akan disinkronkan. Ini mengembalikan rentang berpotongan dari rentang yang ditentukan. Dan jika tidak ada persimpangan (mis. e sel tidak termasuk dalam rentang), nilai yang dikembalikan kosong. Jadi, kami menyamakannya dengan Tidak ada dalam kondisi kami jika
Private Sub Worksheet_Change(ByVal Target As Range) Dim sourceSheet As Worksheet, targetSheet As Worksheet Dim syncRange As String Dim isInRange 'Set the source and target sheets here Set sourceSheet = Sheet1 Set targetSheet = Sheet2 'This will be the column that needs to be synced syncRange = "A1:C5" 'Check if the modified cell lies within the range to be synced Set isInRange = Application.Intersect(Target, Range(syncRange)) If isInRange Is Nothing Then 'Do nothing if the cell falls outside the range Else 'Else sync the cell contents targetSheet.Range(Target.Address) = sourceSheet.Range(Target.Address) End If End SubJadi, kami telah melihat cara menyinkronkan data antara 2 lembar di Excel. Sepanjang artikel kami berasumsi bahwa data sumber perlu disinkronkan pada sel yang sesuai di lembar target. Namun, jika Anda ingin menyinkronkan, katakanlah, sel A1 di sumber ke sel B2 di target, Anda dapat dengan mudah mengubah kode menjadi seperti ini
targetSheet.Range("B2") = sourceSheet.Range("A1") _Kedua, sumber dan lembar target bisa sama, seperti yang terlihat di bawah ini
sourceSheet.Range("B2") = sourceSheet.Range("A1")Untuk bacaan lebih lanjut tentang apa itu range. sel, merujuk ke artikel. Apa itu Rentang VBA. Sel dan Bagaimana Anda Menggunakannya?