Ambil data beda workbooks berdasarkan 1 kolom

  1. 5 tahun lalu

    mau tanya gan jika mau ambil data dengan beda workbooks berdasarkan hanya pada 1 kolom kalau menggunakan vba gimana ya
    file terlampir

  2. up agan-agan

  3. Caton

    9 Agu 2019 Terverifikasi Indonesia + 20.101 Poin
    Di sunting 5 tahun lalu oleh Caton

    @ddtopgun ...

    Saya masih kurang paham dengan pertanyaan Anda. Berdasarkan kolom mana yang akan dijadikan acuan pencarian data? Kolom A (STATUS) atau kolom B (BERAT)? Kemudian, pada Workbook FILE1.XLS, sheet mana yang akan dijadikan sumber data?

    Jika melihat contoh data yang ada pada Workbook FILE2.XLS, sepertinya akan sulit mengambil data yang tepat jika hanya berdasarkan 1 kolom saja, karena ada duplikasi data pada masing-masing kolom. Menurut saya, acuan pengambilan data sebaiknya berdasarkan data di kedua kolom (kolom A dan kolom B). Dengan demikian, nilai yang dicari dapat lebih unik...

    Saya kasih contoh dengan asumsi data akan dicari berdasarkan nilai dari kedua kolom pada Workbook FILE2.XLS. Pada Workbook FILE1.XLS, Worksheet yang dijadikan sumber data adalah sheet PT. Bila ingin Worksheet berbeda yang dijadikan sumber data, ubah saja pada deklarasi definisi konstanta berikut menjadi nama sheet yang diinginkan:

    Private Const DATA_SHEET As String = "PT"

    Atau, jika ingin lebih dinamis, bisa saja dibuatkan sheet khusus untuk meletakkan definisi atau konstanta data yang diperlukan. Pada file terlampir saya berikan juga contoh dengan menggunakan formula, memanfaatkan Named Range.

    Catatan: Jika versi Excel yang digunakan adalah versi di bawah versi 2007, mungkin akan ada masalah dengan formulanya karena saya menggunakan fungsi IFERROR yang hanya tersedia mulai versi Excel 2007. Jika versi Excel yang digunakan di atas versi 2003, sebaiknya simpan Workbook dalam format XML (XLSX, XLSM dan lainnya) saja untuk menghindari masalah kompatibiltas.

    Demikian, semoga sesuai dan selamat mencoba.

  4. Di sunting 5 tahun lalu oleh ddtopgun

    terima kasih om @caton

    tambahan om bagaiman jika pada file utama ada pencarian lagi tapi ada baris kosong misal setelah data terakhir ada baris 4 baris kosong lalu ada data lagi dengan data yg seperti di atasnya..

  5. Caton

    12 Agu 2019 Terverifikasi Indonesia + 20.101 Poin
    Di sunting 5 tahun lalu oleh Caton

    @ddtopgun ...

    Terlampir contoh revisi untuk file UTAMA.XLSX...

  6. @Caton @ddtopgun ...

    Terlampir contoh revisi untuk file UTAMA.XLSX...

    kalau begini om pencarian hanya berdasar pada 1 kolom dan tidak ada yg sama pd kolom tersebut..dan sy coba ubah sceiptnya pd xcell in xlsource agar di mulai pd baris ke 8 g bisa malah ganjil trs row nya gmn y om..mf bnyk tanya..

  7. Caton

    12 Agu 2019 Terverifikasi Indonesia + 20.101 Poin

    @ddtopgun ...

    Kenapa gak dilampirkan saja contoh file terkait? Saya kasih petunjuk saja untuk pertanyaan pertama. Lakukan perubahan script pada blok IF berikut:

    ...
    If lRows Then
    ...
    End If
    ...

    menjadi seperti berikut:

    ...
    If lRows Then
        Set xlData = xlWSData.Range("A2:E" & lRows + 1)
        xDataArr = xlWSF.Transpose(xlData.Columns(1))
        
        On Error Resume Next
        
        With Sheet1
            For Each xlCell In xlSource
                If Len(xlCell) Then
                    '+-- Nilai yang akan dicari secara unik.
                    sValue = .Cells(xlCell.Row, "A")
                    '+-- Cari menggunakan fungsi MATCH.
                    lRows = xlWSF.Match(sValue, xDataArr, 0)
                    If Err = 0 Then
                        .Cells(xlCell.Row, "B") = xlData.Cells(lRows, "D")
                        .Cells(xlCell.Row, "C") = xlData.Cells(lRows, "B")
                        .Cells(xlCell.Row, "D") = xlData.Cells(lRows, "C")
                        .Cells(xlCell.Row, "E") = xlData.Cells(lRows, "E")
                    Else
                        Err.Clear
                    End If
                End If
            Next
            Err.Clear: On Error GoTo 0
        End With
    End If
    ...

    Contoh tabel yang saya gunakan seperti berikut:

    tabel01.png

    Kemudian, untuk pertanyaan kedua, jika maksudnya adalah baris data pada file UTAMA.XLSX, maka coba lakukan penyesuaian pada baris script (bentuk tabel seperti gambar tabel di atas):

    '+-- Keluar jika tidak ada data.
    If lRows = 0 Then
        Exit Sub
    Else
        '+-- Tetapkan range data yang akan dicari.
        lRows = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
        Sheet1.Range("B2:E" & lRows + 1).ClearContents
        Set xlSource = Sheet1.Range("A2:A" & lRows + 1)
    End If

    menjadi:

    '+-- Keluar jika tidak ada data.
    If lRows = 0 Then
        Exit Sub
    Else
        '+-- Tetapkan range data yang akan dicari.
        lRows = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
        '+-- Range dimana data yang akan dicari diambil!
        Sheet1.Range("B8:E" & lRows + 1).ClearContents
        Set xlSource = Sheet1.Range("A8:A" & lRows + 1)
    End If

    Demikian, selamat mencoba.

 

atau Mendaftar untuk ikut berdiskusi!