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

Liên hệ QC
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.
 
Web KT

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

Back
Top Bottom