Bagaimana Menggunakan Objek Kamus Di VBA Untuk Mengubah Struktur Meja Excel

[ad_1]

Sering kali Anda akan dihadapkan pada tabel di mana struktur datanya menyulitkan untuk memfilter informasi yang Anda butuhkan. Ini tidak berarti meja tidak diatur dengan benar, hanya saja analisis Anda tidak diantisipasi.

Objek kamus VBA adalah alat yang ideal untuk merestrukturisasi tabel sehingga akan lebih berguna. Mari kita lihat contoh nilai ujian siswa, tetapi itu juga bisa menjadi daftar pembelian pelanggan:

Skor Tes Nama

john Test1 10

andrew Test1 22

john Test2 12

andrew Test2 25

Meskipun tabel ini mungkin berguna, mungkin Anda perlu memetakan skor komparatif dan format ini mungkin lebih disukai:

Nama Test1 Test2

john 10 12

andrew 22 25

Menggunakan Objek Kamus VBA

Objek kamus mirip dengan larik atau koleksi tetapi dengan lebih banyak fungsi dan lebih mudah dimengerti. Setelah Anda membuat kamus, sintaks dasar untuk menambahkan item adalah seperti ini:

tombol dict1.add, item

Itu kunci properti adalah nilai unik untuk item yang Anda simpan ke kamus. Jadi jika Anda menambahkan nama siswa, kode mungkin seperti berikut:

dict1.add "john", testcores

Kami akan melakukan dua hal untuk mengubah tabel nilai ujian kami:

  1. Buat kamus nama-nama siswa yang unik
  2. Kaitkan nilai tes dengan nama siswa

Mengidentifikasi Nilai-Nilai Unik Dengan Objek Kamus

Kami akan mengambil keuntungan dari fakta itu kunci nilai harus unik dengan membuat daftar nama siswa dan kemudian menambahkan skor tes ke nama. Tujuan dari kode ini adalah untuk membuat array nama siswa dan nilai tes, ditambah larik nama tes.

Pertama, kita akan membuat instance kamus, pilih rentang dan buat variabel untuk menahan nama tes.

Set dict1 = Kamus Baru

dict1.CompareMode = BinaryCompare

Lembar (1) .Aktifkan

Range ("a1"). CurrentRegion.Columns (1). Pilih

tes = ""

Sekarang kita dapat mengulang melalui tabel dan menetapkan nilai untuk nama, nama pengujian, dan skor.

Untuk x = 2 Ke Seleksi.Nomor

myName = Pemilihan (x) .Teks

myTest = Pemilihan (x) .Oset (0, 1) .Teks

myScore = Seleksi (x) .Offset (0, 2) .Nilai

'tambahkan nama tes untuk tes jika belum ditambahkan

Jika InStr (tes, myTest) = 0 Kemudian tes = tes & myTest & "|"

Kami akan menggunakan kasus tertentu untuk menentukan apakah nama siswa telah ditambahkan, dan jika tidak, kami akan menambahkan nama dan skor tes pertama ke item kamus untuk siswa.

Kemudian, yang terpenting, jika nama siswa ada dalam kamus, kami hanya akan menambahkan skor ke teks yang dikaitkan dengan nama siswa.

Pilih Case dict1.Exists (myName)

Case False

dict1.Add myName, myName & "|" & myScore

Kasus Benar

dict1 (myName) = dict1 (myName) & "|" & myScore

Akhiri Pilih

Berikutnya

Kami sekarang punya serangkaian pipa "|" string teks yang dibatasi untuk dikonversi menjadi tabel baru, yang dapat Anda lakukan dengan berbagai cara, misalnya dalam lembaran baru:

ActiveCell.Value = "Nama |" & tes

Untuk Setiap c Dalam dict1

ActiveCell.Offset (1, 0) .Aktifkan

ActiveCell.Value = dict1 (c)

Berikutnya

Kemudian kita dapat menggunakan teks Excel untuk alat kolom atau beberapa kode VBA untuk mengonversi data baru ke tabel.

Ringkasan

Objek kamus VBA adalah alat yang kuat dan fleksibel untuk memproses data. Beberapa pengkodean yang kreatif dan dirancang dengan baik dapat menghemat banyak jam frustrasi dan menambah produktivitas Anda.

[ad_2]

Leave a Reply

Your email address will not be published. Required fields are marked *