Copy và đánh số thứ tự

Liên hệ QC

hongphuong1997

Thành viên tiêu biểu
Tham gia
12/11/17
Bài viết
771
Được thích
321
Giới tính
Nữ
Nhờ các bác viết giúp code copy và đánh số thứ tự như file cháu đính kèm bên dưới
 

File đính kèm

Bạn nhờ mà không nêu rõ vấn đề, ví dụ thì trên trời, dưới đất.
- Copy vùng A3-O5 là bao nhiêu dòng (xem lại ví dụ Sheet2 để hiểu).
Cháu nói rõ rùi đấy bác @be09 tức là copy mảng bên sheet1 sang dòng cuối của sheet2 và đánh số thứ tự ở cột A bác à
 
Nhờ các bác viết giúp code copy và đánh số thứ tự như file cháu đính kèm bên dưới
Bạn thử code sau:
Mã:
Sub CopyQuaSheet2()
    Dim Cll As Range
    With Sheet2
        Set Cll = .[A1].Offset(.UsedRange.Rows.Count)
        Cll = .[A65000].End(xlUp) + 1
        Sheet1.[A1].CurrentRegion.Copy Cll.Offset(, 1)
    End With
End Sub
 
Bạn thử code sau:
Mã:
Sub CopyQuaSheet2()
    Dim Cll As Range
    With Sheet2
        Set Cll = .[A1].Offset(.UsedRange.Rows.Count)
        Cll = .[A65000].End(xlUp) + 1
        Sheet1.[A1].CurrentRegion.Copy Cll.Offset(, 1)
    End With
End Sub
Vẫn chưa đúng anh ui, nó copy thiếu mất 1 dòng anh à
 
Vẫn chưa đúng anh ui, nó copy thiếu mất 1 dòng anh à
Bạn xóa dòng trống đầu tiên ở sheet2 là sẽ ổn.
Hỏi lại bạn một chút cho chắc: Trong dữ liệu của sheet1 có cột nào luôn bắt buộc phải nhập dữ liệu (không được để trống) hay không? Nếu có cột nào như vậy thì thay đổi thuật toán một chút sẽ ổn hơn.
Giả sử trên sheet1, cột A là cột luôn có dữ liệu. Khi đó bạn thay câu lệnh:
Mã:
Set Cll = .[A1].Offset(.UsedRange.Rows.Count)
bởi câu lệnh:
Mã:
Set Cll = .[B65000].End(xlUp).Offset(1, -1)
 
Chủ thớt kêu A3-O5, nhưng bên sheet 2 thì...
Usedrange với currentregion là tèo téo teo, mà còn oánh dấu lần sao chép vào cột A...
Nói chung chẳng bài nào ra mì xào%$*, trừ bài #2.
 
Chủ thớt kêu A3-O5, nhưng bên sheet 2 thì...
Usedrange với currentregion là tèo téo teo, mà còn oánh dấu lần sao chép vào cột A...
Nói chung chẳng bài nào ra mì xào%$*, trừ bài #2.
Trình độ chỉ được đến thế thôi bác ạ.
 
Em không dám đâu.
Sau bài #2 và #3 mà anh vẫn làm được thì em chỉ dám xách dép cho anh thôi. :rolleyes::rolleyes:
Bài 3 là thế này:
Cháu nói rõ rùi đấy bác @be09 tức là copy mảng bên sheet1 sang dòng cuối của sheet2 và đánh số thứ tự ở cột A bác à
Nếu giả sử chủ thớt gõ nhầm, không phải "Copy vùng A3-O5 sang sheet2" mà là "Copy vùng A1-O5 sang sheet2" hoặc "Copy vùng dữ liệu ở sheet1 sang sheet2" thì theo bác phải xử lý ra sao?
Còn việc chủ thớt đưa dữ liệu mẫu không đúng với thực tế dẫn đến áp dụng không được vào thực tế thì phải chịu thôi.
 
Chủ thớt kêu A3-O5, nhưng bên sheet 2 thì...
Usedrange với currentregion là tèo téo teo, mà còn oánh dấu lần sao chép vào cột A...
Nói chung chẳng bài nào ra mì xào%$*, trừ bài #2.
Chết chết thật, em bị nhầm mất anh @befaint copy từ A1-O5 sang dòng cuối của sheet2 và đánh số thứ tự ở cột A sheet2.
Cảm ơn anh nhé. Anh viết giúp em với.
 
Sheet1 Copy vùng A3-O5 là 3 dòng, Sheet2 thể hiện 5 dòng là sao?
Là nhầm đó bác ;)
Theo em hiểu thì copy toàn bộ dữ liệu ở Sheet1 (tất nhiên là trừ cái chỗ bạn ấy gõ yêu cầu cần giúp) qua dán kế tiếp vào vùng dữ liệu hiện có trên Sheet2.
 
Sheet1 Copy vùng A3-O5 là 3 dòng, Sheet2 thể hiện 5 dòng là sao?
Hi hi.... lúc bác hỏi cháu, cháu không xem lại bác ui, bây giờ cháu mới xem lại thì do cháu đánh bị sai bác @be09 ui, cháu sửa lại rùi là copy từ A1:O5 bác à.
Cháu xin lỗi và cảm ơn bác.
Bác viết giúp cháu với nhé bác
 
Gửi bạn hongphuong1997: Người khác giúp bạn là dựa vào dữ liệu của bạn trong file minh họa. Vậy nên để áp dụng được vào file thực tế của bạn thì trong file minh họa cũng cần có cấu trúc giống với thực tế, chẳng hạn như: bảng dữ liệu có tiêu đề hay không, bảng kết quả có tiêu đề hay không, ngoài vùng dữ liệu này thì trên sheet nguồn và sheet đích có gì khác nữa không,...
Nói chung file minh họa càng giống với file thực tế thì càng đỡ mất công vô ích cho cả bạn và người giúp bạn.
 
Chủ thớt muốn lấy vùng dữ liệu ở cột A-O, tới dòng cuối nào thì cần xác định.
Chủ thớt nên đưa dữ liệu có tiêu đề cụ thể để xác định cột nào từ A-O là cột luôn có dữ liệu.
Trong trường hợp tổng quát, viết một hàm xác định dòng cuối có dữ liệu trong vùng thuộc cột A-O, gán vùng vừa xác định vào một biến mảng a.
. Bên sheet gán kết quả, cũng xác định dòng cuối có dữ liệu thuộc cột B-P, rồi gán mảng a vào. Và điền số thứ tự vào cột A tương ứng (=max lần trước + 1).
 
Chủ thớt muốn lấy vùng dữ liệu ở cột A-O, tới dòng cuối nào thì cần xác định.
Chủ thớt nên đưa dữ liệu có tiêu đề cụ thể để xác định cột nào từ A-O là cột luôn có dữ liệu.
Trong trường hợp tổng quát, viết một hàm xác định dòng cuối có dữ liệu trong vùng thuộc cột A-O, gán vùng vừa xác định vào một biến mảng a.
. Bên sheet gán kết quả, cũng xác định dòng cuối có dữ liệu thuộc cột B-P, rồi gán mảng a vào. Và điền số thứ tự vào cột A tương ứng (=max lần trước + 1).
Em đã đính chính lại rùi mà,
Tức là copy từ A1:O5 sang sheet2 cứ mỗi lần copy thì dán xuống dòng cuối của lần trước.
Em gửi lại file anh xem giúp nhé.
 

File đính kèm

Em đã đính chính lại rùi mà,
Tức là copy từ A1:O5 sang sheet2 cứ mỗi lần copy thì dán xuống dòng cuối của lần trước.
Em gửi lại file anh xem giúp nhé.
Cứ theo những gì có trong file của bạn thì code ở bài #4 và phần đề xuất sửa ở bài #6 là giải quyết được rồi đấy. Bạn cứ sửa như vậy và chạy thử xem nào. Code tôi viết toàn bị chê vì thực tế là tôi toàn cóp nhặt, bắt chước thôi chứ chẳng được học hành gì về món này cả.
Còn để áp dụng vào thực tế thì bạn cần phải đưa file càng giống với thực tế càng tốt, kể cả việc bảng dữ liệu có tiêu đề hay không. Và một điều quan trọng nữa mà tôi và cả bác befaint nhắc đến là trong dữ liệu có cột nào bắt buộc nhập dữ liệu hay không (nghĩa là trong vùng dữ liệu thì cột này luôn có dữ liệu, còn các cột khác có thể có hoặc không)? Nếu có thì dựa vào cột đó để xác định dòng cuối có dữ liệu, code sẽ tổng quát hơn.
 
Em đã đính chính lại rùi mà,
Tức là copy từ A1:O5 sang sheet2 cứ mỗi lần copy thì dán xuống dòng cuối của lần trước.
Em gửi lại file anh xem giúp nhé.
Thử:
PHP:
Sub abc()
   Dim LR&, i&
     LR = Sheets("Sheet2").Range("B60000").End(xlUp).Row + 1
        Sheets("sheet1").Range("A1:O5").Copy Sheets("Sheet2").Range("B" & LR)
        k = 1
       For i = 2 To LR Step 5
             Range("A" & i) = k
       k = k + 1
       Next
End Sub
 
Em đã đính chính lại rùi mà,
Tức là copy từ A1:O5 sang sheet2 cứ mỗi lần copy thì dán xuống dòng cuối của lần trước.
Em gửi lại file anh xem giúp nhé.
Khi sử dụng nên có tiêu đề cho giống File thực tế (sẽ tránh được nhằm lẫn trong việc nhập liệu).
Ngay chỗ này nó sẽ ảnh hưởng đến việc áp dụng code: Có khi nào nhập dữ liệu ở Sheet1 có 3 hoặc 6, 7 dòng hay hơn nữa không? Hay là lúc nào cũng cố định 5 dòng?
 
Web KT

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

Back
Top Bottom