Copi data berdasarkan jml nya

  1. 3 minggu lalu

    Maaf pak belum membuat file nya, namun adakah contoh rumus macro yg mengkopi data berdasarkan banyaknya barang,,, contoh nama barang nya jeruk harganya 10 ribu dgn jml 4 unit,,, ketika klik kirim maka jeruk dgn harganya otomatis dicopy ke sheet sebelahnya sebanyak 4 x ,,, demikian terimakasih atas perhatiannya

    Mas @bandikukar ...

    Ubah scripnya menjadi sebagai berikut:

    Sub KirimData()
        Dim lCount As Long, lIdx As Long
        Dim lR As Long, lC As Long
    
        If IsNumeric(Sheet3.Range("C4").Value2) Then
            lR = 3: lC = 2
            lCount = Sheet3.Range("C4").Value2
            For lIdx = 1 To lCount
                lR = IIf(lIdx Mod 2, lR + 2, lR + 0)
                lC = IIf(lIdx Mod 2, 2, 5)
                Sheet4.Cells(lR, lC).Value2 = Sheet3.Range("B4").Value2
                Sheet4.Cells(lR, lC + 1).Value2 = Sheet3.Range("D4").Value2
            Next
        End If
    End Sub

    Demikian.

  2. Caton

    Nov 16 Terverifikasi Indonesia + 17.741 Poin

    Mas @bandikukar ...

    Di forum ini, sepertinya ada banyak contoh script VBA untuk menyalin data secara berulang ke sheet berbeda. Untuk kasus yang Anda tanyakan, misalkan saja bentuk tabel asalnya seperti berikut:

    image_2021-11-16_030108.png

    maka, secara sederhana dapat disusun script VBA seperti berikut ini:

    Sub KirimData()
       Dim lQty As Long, lIdx As Long
    
       If IsNumeric(Sheet1.Range("C4").Value2) Then
          lQty = Sheet1.Range("C4").Value2
          For lIdx = 1 to lQty
             Sheet2.Cells(lIdx + 4, "B").Value2 = Sheet1.Range("B4").Value2
             Sheet2.Cells(lIdx + 4, "C").Value2 = Sheet1.Range("D4").Value2
          Next
       End If
    End Sub

    Silahkan dikembangkan sesuai keinginan.

    Demikian.

  3. Makasih mas @Caton ,,, lagi , , seandainya hasil copy tadi tetap di paste ke sheet2 namun letak pastenya berpisah2,,, contohnya tetap jeruk diatas tapi pastenya di cell B5:C5=1, E5:F5=1, B7:C7=1, E7:F7=1 dst...

  4. 2 minggu lalu

    Caton

    Nov 18 Terverifikasi Jawaban Terpilih Indonesia + 17.741 Poin

    Mas @bandikukar ...

    Ubah scripnya menjadi sebagai berikut:

    Sub KirimData()
        Dim lCount As Long, lIdx As Long
        Dim lR As Long, lC As Long
    
        If IsNumeric(Sheet3.Range("C4").Value2) Then
            lR = 3: lC = 2
            lCount = Sheet3.Range("C4").Value2
            For lIdx = 1 To lCount
                lR = IIf(lIdx Mod 2, lR + 2, lR + 0)
                lC = IIf(lIdx Mod 2, 2, 5)
                Sheet4.Cells(lR, lC).Value2 = Sheet3.Range("B4").Value2
                Sheet4.Cells(lR, lC + 1).Value2 = Sheet3.Range("D4").Value2
            Next
        End If
    End Sub

    Demikian.

  5. Makasih sudah mbantu saya mas @Caton ^_^ ... Semoga sehat selalu ...

  6. Mas @Caton ,,, Minta ijin buatkan macro utk file saya berikut,,, pertanyaannya sama seperti diatas namun kondisinya sedikit berbeda,,, saya sudah coba pelajari data diatas namun masih koma ,,,, terimakasih sebelumnyaaa

  7. Caton

    Nov 20 Terverifikasi Indonesia + 17.741 Poin

    Terlampir contoh scriptnya. Silahkan dipelajari dan dimodifikasi sesuai keinginan.

    Demikian.

  8. Makasih banyak mas @Caton

  9. 5 hari yang lalu

    Mas @Caton ijin nanya lagi, bisa minta beri contoh sesuai file diatas, namun yg diambil cuma colum "C" dan "E" Saja yg diambil ?...

  10. 3 hari yang lalu

    Caton

    Des 1 Terverifikasi Indonesia + 17.741 Poin

    @bandikukar ...

    Dari contoh script terakhir yang saya berikan, variabel vData akan dikonversikan menjadi array 2D yang berisi data (nilai) yang ada pada range C3:F7 dalam sheet MENU. Lihat gambar berikut:

    1.png

    Dari gambar di atas, dapat diketahui bahwa kalau ingin mengambil data dari kolom C dan kolom E, maka kita dapat merujuk kepada indeks elemen pertama dan ketiga. Contohnya, pada bagian script berikut:

    ...
            If lZ > 0 Then
                With Sheet6
                    lR = .Cells(.Rows.Count, "B").End(xlUp).Row + 1
                    If lR > 4 Then
                        For lY = 1 To vData(lX, 4)
                            .Cells(lR, "B").Value2 = vData(lX, 1)
                            .Cells(lR, "C").Value2 = vData(lX, 2)
                            .Cells(lR, "D").Value2 = vData(lX, 3)
                            .Cells(lR, "E").Value2 = vData(lX, 4)
                            .Cells(lR, "B").Value2 = vData(lX, 1)
                            .Cells(lR, "C").Value2 = vData(lX, 3)
                            lR = lR + 1
                        Next
                    End If
                End With
            End If
    ...

    jika kita ubah seperti berikut:

    ...
            If lZ > 0 Then
                With Sheet6
                    lR = .Cells(.Rows.Count, "B").End(xlUp).Row + 1
                    If lR > 4 Then
                        For lY = 1 To vData(lX, 4)
                            .Cells(lR, "B").Value2 = vData(lX, 1)
                            .Cells(lR, "C").Value2 = vData(lX, 3)
                            lR = lR + 1
                        Next
                    End If
                End With
            End If
    ...

    maka pada saat script dijalankan, akan mengisi kolom B dan kolom C pada sheet DATA_RINCI dengan data dari kolom C dan kolom E dari sheet MENU.

    Silahkan dicoba dahulu, dan pelajari alur proses dari script yang saya contohkan tersebut agar paham apa dan dimana script yang harus dimodifikasi untuk menyesuaikan dengan yang Anda butuhkan.

    Demikian.

 

atau Mendaftar untuk ikut berdiskusi!