Daftar Isi:
Video: Cara Mengunci Posisi Kolom dan Baris 2024
Rumus Array adalah salah satu fitur Excel yang paling kuat. Jika Anda terbiasa dengan formula array, Anda akan senang mengetahui bahwa Anda dapat menciptakan fungsi VBA yang mengembalikan array.
Mengembalikan sebuah array nama bulan
Mari kita mulai dengan sebuah contoh sederhana. Fungsi MonthNames mengembalikan array 12 elemen - Anda bisa menebaknya - nama bulan.
Function MonthNames () MonthNames = Array ("Januari", "Februari", "Maret", _ "April", "Mei", "Juni", "Juli", "Agustus", _ "September", " Oktober "," November "," Desember ") End Function
Untuk menggunakan fungsi MonthNames dalam lembar kerja, Anda harus memasukkannya sebagai formula selembar 12 sel. Misalnya, pilih range A2: L2 dan masukkan = MonthNames () . Kemudian tekan Ctrl + Shift + Enter untuk masuk ke formula array di semua 12 sel yang dipilih. Simak hasilnya.
Jika Anda ingin nama bulan ditampilkan dalam kolom, pilih 12 sel di kolom dan gunakan rumus array ini. (Jangan lupa memasukkannya dengan menekan Ctrl + Shift + Enter.)
= TRANSPOSE (MonthNames ())
Anda juga bisa memilih satu bulan dari array. Berikut adalah rumus (bukan formula array) yang menampilkan elemen keempat dari array: April.
= INDEX (MonthNames (), 4)
Mengembalikan daftar yang diurutkan
Misalkan Anda memiliki daftar nama yang ingin Anda tampilkan dalam urutan yang diurutkan di kisaran sel yang lain. Bukankah lebih baik jika ada fungsi lembar kerja untuk Anda?
Fungsi khusus ini tidak hanya itu: Membutuhkan rangkaian sela kolom tunggal sebagai argumennya dan kemudian mengembalikan array dari sel yang disortir. Rentang A2: A13 berisi beberapa nama. Rentang C2: C13 berisi formula array multisel ini. (Ingat bahwa Anda harus memasukkan rumus dengan menekan Ctrl + Shift + Enter.)
= Sorted (A2: A13)
Berikut kode untuk fungsi Sorted:
Function Sorted (Rng As Range) Dim SortedData () Sebagai Variant Dim Cell As Range Dim Temp Sebagai Variant, i As Long, j Sebagai Long Dim NonEmpty As Long 'Transfer data ke SortedData Untuk Setiap Sel Dalam Rng Jika Tidak IsEmpty (Sel) Kemudian NonEmpty = NonEmpty + 1 Presentasi ReDim SortedData (1 To NonEmpty) SortedData (NonEmpty) = Sel. Value End If Next Cell 'Sortir array Untuk i = 1 ke NonEmpty Untuk j = i + 1 ke NonEmpty Jika SortedData (i)> SortedData (j) Then Temp = SortedData (j) SortedData (j) = SortedData (i) SortedData (i) = Temp End If Next j Next i 'Transpose array dan kembalikan itu Sorted = Application.Transpose (SortedData) End Function
Fungsi Sorted dimulai dengan membuat array bernama SortedData. Array ini berisi semua nilai nonblank dalam rentang argumen. Selanjutnya, array SortedData diurutkan, menggunakan algoritma bubble-sort. Karena array adalah array horizontal, ia harus dipindahkan sebelum dikembalikan oleh fungsinya.
Fungsi Sorted bekerja dengan berbagai ukuran, asalkan ada dalam satu kolom atau baris. Jika data unsorted berturut-turut, formula Anda perlu menggunakan fungsi TRANSPOSE Excel untuk menampilkan data yang diurutkan secara horisontal. Misalnya:
= TRANSPOSE (Sorted (A16: L16))