Senin, 11 Juni 2012

Macro Excel: Memisahkan Nama Depan dan Belakang


Sebagai admin Moodle di fakultas kami, salah satu pekerjaan saya adalah memasukkan data mahasiswa baru, sehingga mereka dapat login secara otomatis (tidak perlu daftar lagi). Dalam sistem ideal, hal ini dapat dilakukan secara otomatis kalau saja saya mempunyai koneksi dengan data mahasiswa dari pusat. Sayangnya yang saya dapat adalah data Excel.

Moodle menyediakan fasilitas pendaftaran secara batch melalui file teks. Data minimal yang harus ada adalah: username, firstname, lastname, password, email. Masalahnya data Excel yang saya terima menggunakan full name, jadi harus dipisahkan dulu. Biasanya saya pindahkan ke file teks lalu diproses dengan PHP, tapi sekarang saya mau mencoba dengan macro Excel. Perlu diingat bahwa beberapa mahasiswa memiliki satu nama saja.

Setelah mencoba, entah kenapa fungsi split tidak dapat digunakan, error terus. Akhirnya manual saja, dengan mencari spasi terdekat. Berikut codenya: 

01
Public Sub splitName()
02


03
    colIdxSource = 2 'kolom yang akan diproses
04
    colIdxDest = 3   'kolom tempat meletakan hasil

05
    RCount = 156    'jumlah baris yang akan diproses
06


07
    Dim i As Integer
08
    Dim fullName As String

09

10
    For i = 1 To RCount

11
        fullName = Trim(Cells(i, colIdxSource).Value)
12
        lName = Len(fullName)

13

14
        j = 1

15
        found = False
16
        While (j <= lName And Not (found))

17
              If Mid(fullName, j, 1) = " " Then
18
                  found = True

19
              Else
20
                  j = j + 1

21
              End If
22
        Wend

23

24
        If found Then 'split

25
           firstName = Mid(fullName, 1, j - 1)
26
           lastName = Mid(fullName, j + 1, lName - j)

27
        Else 'kasus cuma satu nama
28
           firstName = fullName

29
           lastName = "-"
30
        End If

31
        Cells(i, colIdxDest).Value = firstName
32
        Cells(i, colIdxDest + 1).Value = lastName

33
    Next i
34
End Sub

Tidak ada komentar:

Posting Komentar