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

Liên hệ QC

Người dùng đang xem chủ đề này

thanhhoadaica

Thành viên mới
Tham gia
8/5/09
Bài viết
30
Được thích
1
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:

[TABLE="width: 200, align: left"]
[TR]
[TD]062GW2-BLACK[/TD]
[TD]2[/TD]
[/TR]
[TR]
[TD]19X231-SILVER[/TD]
[TD]2[/TD]
[/TR]
[TR]
[TD]5J8DW1-GREY[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]DND6X3-BLACK[/TD]
[TD]2[/TD]
[/TR]
[TR]
[TD]DND6X7-BLACK[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]NX.MCJSV.002[/TD]
[TD]2[/TD]
[/TR]
[/TABLE]




[TABLE="width: 205"]
[TR]
[TD]062GW2-BLACK[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]062GW2-BLACK[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]19X231-SILVER[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]19X231-SILVER[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]5J8DW1-GREY[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]DND6X3-BLACK[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]DND6X3-BLACK[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]DND6X7-BLACK[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]NX.MCJSV.002[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]NX.MCJSV.002[/TD]
[TD]1[/TD]
[/TR]
[/TABLE]

Rất mong các bạn tư vấn giúp mình nhé!!!
 
Lần chỉnh sửa cuối:
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:
Rất mong các bạn tư vấn giúp mình nhé!!!
Bạn muốn thêm dòng vào bảng dữ liệu đã có sẵn, hay thêm vào khi nhập thêm dòng dữ liệu mới!!
 
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:

[TABLE="width: 200, align: left"]
[TR]
[TD]062GW2-BLACK[/TD]
[TD]2[/TD]
[/TR]
[TR]
[TD]19X231-SILVER[/TD]
[TD]2[/TD]
[/TR]
[TR]
[TD]5J8DW1-GREY[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]DND6X3-BLACK[/TD]
[TD]2[/TD]
[/TR]
[TR]
[TD]DND6X7-BLACK[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]NX.MCJSV.002[/TD]
[TD]2[/TD]
[/TR]
[/TABLE]




[TABLE="width: 205"]
[TR]
[TD]062GW2-BLACK[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]062GW2-BLACK[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]19X231-SILVER[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]19X231-SILVER[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]5J8DW1-GREY[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]DND6X3-BLACK[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]DND6X3-BLACK[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]DND6X7-BLACK[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]NX.MCJSV.002[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]NX.MCJSV.002[/TD]
[TD]1[/TD]
[/TR]
[/TABLE]

Rất mong các bạn tư vấn giúp mình nhé!!!
Bạn đưa file lên nha!
 
Mình xuất ra từ hệ thống phần mềm có 2 cột
Cột 1: mã hàng
Cột 2: số lượng
Mình muốn excel sẽ tự động nhân bản thêm ví dụ: 2 dòng có thông tin mã hàng giống nhau nếu cột số lượng có số 2 hoặc nếu cột số lượng là số 3 thì sẽ có 3 dòng mã hàng giống nhau,…
 
Bạn ơi, mình dùng chức năng "Tải File Từ Máy" phải k? Mình up lên bạn xem giúp nhé, Thanks bạn
 

File đính kèm

Mình xuất ra từ hệ thống phần mềm có 2 cột
Cột 1: mã hàng
Cột 2: số lượng
Mình muốn excel sẽ tự động nhân bản thêm ví dụ: 2 dòng có thông tin mã hàng giống nhau nếu cột số lượng có số 2 hoặc nếu cột số lượng là số 3 thì sẽ có 3 dòng mã hàng giống nhau,…
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
PHP:
Sub RowInsert()
Dim Data(), Res(1 To 65536, 1 To 2), i, j, k
Data = Range([A1], [B65536].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
[C1].Resize(k, 2) = Res
End Sub
 
Mình xuất ra từ hệ thống phần mềm có 2 cột
Cột 1: mã hàng
Cột 2: số lượng
Mình muốn excel sẽ tự động nhân bản thêm ví dụ: 2 dòng có thông tin mã hàng giống nhau nếu cột số lượng có số 2 hoặc nếu cột số lượng là số 3 thì sẽ có 3 dòng mã hàng giống nhau,…
Tôi đã làm sẵn 1 file cho bạn, bạn coi sheet hướng dẫn
 

File đính kèm

Dạ cảm ơn anh quanghai1969, em xin xác nhận là cách của anh nhẹ nhàng mà hiệu quả, giống như mổ nội soi vậy!!!!!!!!!!!!!!
 
Lần chỉnh sửa cuối:
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
PHP:
Sub RowInsert()
Dim Data(), Res(1 To 65536, 1 To 2), i, j, k
Data = Range([A1], [B65536].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
[C1].Resize(k, 2) = Res
End Sub
Bác có thể sửa cho em VBA nó ở đằng trước những dòng cần cóp có thêm những cột dữ liệu, thông tin như ngày tháng, kho hàng, và sau khi cop thì nó cũng cop luôn cả mấy dòng này không?
 
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
PHP:
Sub RowInsert()
Dim Data(), Res(1 To 65536, 1 To 2), i, j, k
Data = Range([A1], [B65536].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
[C1].Resize(k, 2) = Res
End Sub
Sao mình sao chép lại code mà bị lỗi nhỉ. Hướng dẫn mình
 

File đính kèm

  • 20230116_090035.jpg
    20230116_090035.jpg
    132.8 KB · Đọc: 24
Vùng màu vàng bị lỗi lệnh
Mã:
Sub RowInsert()
Dim Data(), Res(1 To 65536, 1 To 2), i, j, k
Data = Range([A1], [B65536].End(3)).Value
For i = 1 To UBound(Data)
   For j = 1 To Data(i, 2) =>lệnh này ko chạy vba tô vàng
      k = k + 1
      Res(k, 1) = Data(i, 1)
      Res(k, 2) = 1
   Next
Next
[C1].Resize(k, 2) = Res
End Sub
 
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

ok và thanks cũng không lịch sự. Kể cả viết tắt dl
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
 
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:
Mã:
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
 
Bạn sửa thành:
Mã:
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 ạ
 
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 ạ
Ví dụ để anh hiểu rõ hơn: em có 8 do
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?
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é.
 
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.
- [a2]: 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Ử.

Mã:
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
 
Lần chỉnh sửa cuối:
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é.
E cảm ơn. E sửa 1 to 2 thành 1 to 20 không biết đúng không anh thấy chạy được. Nếu dòng tiêu đề các cột là dạng text thì sửa như thế nào anh ơi.
 
E cảm ơn. E sửa 1 to 2 thành 1 to 20 không biết đúng không anh thấy chạy được. Nếu dòng tiêu đề các cột là dạng text thì sửa như thế nào anh ơi.
Thấy chạy được, nhưng kết quả có được không? Nghĩa là đã sao chép đủ 20 cột?
Nếu tiêu đề là dòng 1, dữ liệu bắt đầu từ dòng 2 (hoặc dòng bất kỳ) thì sửa chỗ này

Code gốc:
Data = Range([A1], [B65536].End(3)).Resize(, 20).Value

Sửa thế nào thì lại suy nghĩ nhé. Phát huy việc suy nghĩ biến 2 thành 20.
 

Bài viết mới nhất

Back
Top Bottom