Tự động nhân bản thêm dòng (copy thêm dòng) theo số chỉ định

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Xin chào diễn đàn GPE!!!
Mình đang tìm hiểu về excel, hiện tại mình đang muốn dùng excel để nhân bản thêm dòng theo số lượng được chỉ định như minh họa bên dưới:

062GW2-BLACK
2

19X231-SILVER
2

5J8DW1-GREY
1

DND6X3-BLACK
2

DND6X7-BLACK
1

NX.MCJSV.002
2

062GW2-BLACK
1

062GW2-BLACK
1

19X231-SILVER
1

19X231-SILVER
1

5J8DW1-GREY
1

DND6X3-BLACK
1

DND6X3-BLACK
1

DND6X7-BLACK
1

NX.MCJSV.002
1

NX.MCJSV.002
1

Rất mong các bạn tư vấn giúp mình nhé!!!

Công thức thì mình hỏng biết nhưng nếu dùng VBA thì code khỏi cần test

Sub RowInsert()
Dim Data(), Res(1 To 65536, 1 To 2), i, j, k
Data = Range(, .End(3)).Value
For i = 1 To UBound(Data)
For j = 1 To Data(i, 2)
k = k + 1
Res(k, 1) = Data(i, 1)
Res(k, 2) = 1
Next
Next
.Resize(k, 2) = Res
End Sub

www.giaiphapexcel.com/diendan/threads/t%E1%BB%B1-%C4%91%E1%BB%99ng-nh%C3%A2n-b%E1%BA%A3n-th%C3%AAm-d%C3%B2ng-copy-th%C3%AAm-d%C3%B2ng-theo-s%E1%BB%91-ch%E1%BB%89-%C4%91%E1%BB%8Bnh.99152/

Tôi đã làm sẵn 1 file cho bạn, bạn coi sheet hướng dẫn

Xây dựng Lương 3P, KPI cho Doanh nghiệp
Khóa học SprinGO phù hợp

Xây dựng Lương 3P, KPI cho Doanh nghiệp

Làm thế nào để trả lương cho nhân viên chính xác nhất? Đây là một trong những câu hỏi khó trong quản trị nhân...

Xem khóa học
★★★★★ 5 ★ 1 👤 1 ▥ 0
Quảng cáo

Bạn nên đọc

One Response

  1. hands says:

    Giờ em muốn mở rộng dữ liệu gồm 20 cột sau cột A. Vậy cần sửa code như nào nhờ anh hướng dẫn em với. Em Cảm ơn nhiều

    Bạn sửa thành:

    Data = Range([A1], [B65536].End(3)).Resize( ,20).Value
    For i = 1 To UBound(Data)
       For j = 1 To Data(i, 2)
          k = k + 1
            For m = 1 to 20
                Res(k, m) = Data(i, m)
            Next
       Next
    Next
    [Z1].Resize(k, 20) = Res

    E vừa thử code mới thấy báo lỗi Subscrip out of range. Vậy sửa như nào tiếp nhờ anh chỉ giùm ạ

    Còn phải sửa chỗ này

    Res(1 To 65536, 1 To 2)
    Sửa thế nào thì bạn thử suy nghĩ 1 lần xem sao?

    Ví dụ để anh hiểu rõ hơn: em có 8 do

    E với tập học code vba nên chưa biết sửa. Mong anh sửa giúp.
    E thấy đây mới chỉ nhân bản ô dữ liệu chứ chưa thấy nhân bản cả dòng dữ liệu. Vậy có cách nào nhân bản cả dòng dữ liệu không chỉ em với nhé.

    Code mới đó đã là nhân bản cả dòng dữ liệu rồi, từ 2 cột thành 20 cột.
    Sửa thế nào thì bạn thử xem từ 2 lên 20 tôi đã sửa những gì, chỗ nào có vẻ giống giống … Nghĩ và phải đối chiếu nữa.
    Khi nào nghĩ 1 tiếng không ra thì tôi chỉ, chứ chưa nghĩ được 5 phút …

    Code mới đó đã là nhân bản cả dòng dữ liệu rồi, từ 2 cột thành 20 cột.
    Sửa thế nào thì bạn thử xem từ 2 lên 20 tôi đã sửa những gì, chỗ nào có vẻ giống giống … Nghĩ và phải đối chiếu nữa.
    Khi nào nghĩ 1 tiếng không ra thì tôi chỉ, chứ chưa nghĩ được 5 phút …

    Tôi đã nói bao nhiêu lần, và lần này lặp lại cũng khong thể thay đổi:
    Những người hay viết tắt đồng thời cũng có tật hờ hững và làm việc gì cũng theo kiểu "quấy quá cho qua".

    Thiếu hiểu biết + nhiệt tình + bệnh ngoài da (ngứa tay) + khả năng có hạn thì nó thế lày:
    – Dòng đầu tiên của dữ liệu phải là tiêu đề, SẼ KHÔNG NHÂN BẢN.
    – 22: tổng số cột từ đầu đến đít = 20+2 (2 cột A, B).
    – Res(k, 2) = 1: nếu muốn SL nhân bản đều = 1, còn nếu xóa dòng này thì SL y như đầu. Mà tốt nhất xóa đi, sau gõ 1 và copy xuống.
    – : sau khi nhân bản sẽ thay thế dữ liệu cũ. NÊN SAO LƯU 5, 7 FILE TRƯỚC KHI THỬ.

    Sub RowInsert()
    Dim Data(), Res(1 To 65536, 1 To 22), i, j, k
    Data = Range([A1], [B65536].End(3)).Resize(, 22).Value
    For i = 2 To UBound(Data)
       For j = 1 To Data(i, 2)
          k = k + 1
            For m = 1 To 22
                Res(k, m) = Data(i, m)
                Res(k, 2) = 1
            Next
       Next
    Next
    [a2].Resize(k, 22) = Res
    End Sub

    Mà tốt nhất xóa đi, sau gõ 1 và copy xuống.

Leave a Reply

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

Quảng cáo

Cũ vẫn chất

Xem thêm