Copy mảng dữ liệu có sắp xếp theo thứ tự

Liên hệ QC

hic1802

Thành viên tiêu biểu
Tham gia
16/2/13
Bài viết
545
Được thích
34
Giới tính
Nam
Chào mọi người trên GPE,
Hôm nay mình gặp 1 vấn đề này mà chưa biết xử lý như thế nào
Yêu cầu của mình là : Khi mình nhập dữ liệu vào sheet "Nhap" thì dữ liệu nhập sẽ được copy đến dòng trống kế tiếp của sheet "Saban" theo sắp xếp cột thời gian
Tức là copy vùng có dữ liệu B2:H5 của sheet "Nhap" vào vùng F21:L24 của sheet "Saban" dựa theo trình tự của cột thời gian L của sheet "Nhap"
Các bạn xem file excel và 2 hình mình gửi phía dưới để rõ ý mình hơn.
 

File đính kèm

  • Saban_NVL_2020.xlsm
    250.1 KB · Đọc: 18
  • Untitled.png
    Untitled.png
    277.5 KB · Đọc: 15
  • Untitled1.png
    Untitled1.png
    309.1 KB · Đọc: 18
Thế thì bạn thử cách tạo macro sau khi nhập xong ở sheet nhập. sau đó sort theo cột L rồi copy chuyển qua sheet saban coi
 
Upvote 0
Mình có thể Sort theo cột "Thời điểm xác nhận" bên sheet " Nhâp ", rồi copy paste sang bên kia.

Chào mọi người trên GPE,
Hôm nay mình gặp 1 vấn đề này mà chưa biết xử lý như thế nào
Yêu cầu của mình là : Khi mình nhập dữ liệu vào sheet "Nhap" thì dữ liệu nhập sẽ được copy đến dòng trống kế tiếp của sheet "Saban" theo sắp xếp cột thời gian
Tức là copy vùng có dữ liệu B2:H5 của sheet "Nhap" vào vùng F21:L24 của sheet "Saban" dựa theo trình tự của cột thời gian L của sheet "Nhap"
Các bạn xem file excel và 2 hình mình gửi phía dưới để rõ ý mình hơn.
 
Upvote 0
Mình có thể Sort theo cột "Thời điểm xác nhận" bên sheet " Nhâp ", rồi copy paste sang bên kia.
có 1 vấn đề nữa là chỉ copy những dòng mà "thời điểm xác nhận" phải có dữ liệu nữa bạn ạ, nếu trống thì ko copy sang
Bài đã được tự động gộp:

Thế thì bạn thử cách tạo macro sau khi nhập xong ở sheet nhập. sau đó sort theo cột L rồi copy chuyển qua sheet saban coi
có 1 vấn đề nữa là chỉ copy những dòng mà "thời điểm xác nhận" phải có dữ liệu nữa bạn ạ, nếu trống thì ko copy sang
 
Upvote 0
có 1 vấn đề nữa là chỉ copy những dòng mà "thời điểm xác nhận" phải có dữ liệu nữa bạn ạ, nếu trống thì ko copy sang

Khi thời điểm xác nhận vẫn còn đang để trống thì bạn SORT xong, các dòng trống đó sẽ bị đẩy xuống dưới
Như vậy bạn vẫn có thể thoải mái Copy Paste có sao đâu.

Capture.JPG
 
Upvote 0
Khi thời điểm xác nhận vẫn còn đang để trống thì bạn SORT xong, các dòng trống đó sẽ bị đẩy xuống dưới
Như vậy bạn vẫn có thể thoải mái Copy Paste có sao đâu.

View attachment 250930
vậy mình sẽ ko biết copy đến dòng nào
vì mình chỉ copy từ B2 đến H
bình thường mình sẽ tìm dòng cuối có dữ liêu dạng : B2:H&dòng cuối
Bây giờ mình ko biết copy đến dòng nào?
 
Upvote 0
vậy mình sẽ ko biết copy đến dòng nào
Vậy bạn cho hỏi là khi bạn thực hiện thao tác copy dữ liệu xong ( cứ cho là bỏ dòng trống không copy qua). nếu giữa dòng đầu và dòng cưới có 1 ,2 3 ô gì đó là dòng trống (ý là chưa xác nhận - chưa copy nha).thì những dòng đó sẽ không tính nữa hay là những dòng đó đợi xác nhận xong (có thời gian trong ô đó) thì mới copy?
 
Upvote 0
Vậy bạn cho hỏi là khi bạn thực hiện thao tác copy dữ liệu xong ( cứ cho là bỏ dòng trống không copy qua). nếu giữa dòng đầu và dòng cưới có 1 ,2 3 ô gì đó là dòng trống (ý là chưa xác nhận - chưa copy nha).thì những dòng đó sẽ không tính nữa hay là những dòng đó đợi xác nhận xong (có thời gian trong ô đó) thì mới copy?
vẫn copy bạn nhé, về bản chất thì ko liên quan đến dòng, cứ dòng nào tác động trước thì được copy sang trước (khi mình tác động thì sẽ hiển thị thời gian ở cột L, nên khi mình lọc theo thứ tự cột L copy sang thì đúng ý mình muốn
Bài đã được tự động gộp:

Thực ra mình có nghĩ đến giải pháp trung gian đó là lọc dữ liệu cần --> sắp xếp --> copy sang (dùng các cột phụ trung gian)
như hình phía dưới
nhưng mà như vậy thì hơi amater quá :v
 

File đính kèm

  • Untitled.png
    Untitled.png
    245.3 KB · Đọc: 14
Lần chỉnh sửa cuối:
Upvote 0
nhưng mà như vậy thì hơi amater quá
suy nghĩ đơn giản một tí nhé.cái file của bạn lúc chọn mục ở cột "Kho xác nhận" thì thời gian bên cột L sẽ nhảy đúng không? vậy có nghĩa là cư cái nào xác nhận trước thì thời gian sẽ nhảy trước đúng không? Vậy sao lúc xác nhận đấy không thêm luôn dòng lện copy cái hàng đó qua bên sheets "Saban" luôn đỡ phải sort ?
 
Upvote 0
Chào mọi người trên GPE,
Hôm nay mình gặp 1 vấn đề này mà chưa biết xử lý như thế nào
Yêu cầu của mình là : Khi mình nhập dữ liệu vào sheet "Nhap" thì dữ liệu nhập sẽ được copy đến dòng trống kế tiếp của sheet "Saban" theo sắp xếp cột thời gian
Tức là copy vùng có dữ liệu B2:H5 của sheet "Nhap" vào vùng F21:L24 của sheet "Saban" dựa theo trình tự của cột thời gian L của sheet "Nhap"
Các bạn xem file excel và 2 hình mình gửi phía dưới để rõ ý mình hơn.
Bạn tham khảo File trong bài 19 của Link sau để hiểu các làm Quản lý kho
 
Upvote 0
suy nghĩ đơn giản một tí nhé.cái file của bạn lúc chọn mục ở cột "Kho xác nhận" thì thời gian bên cột L sẽ nhảy đúng không? vậy có nghĩa là cư cái nào xác nhận trước thì thời gian sẽ nhảy trước đúng không? Vậy sao lúc xác nhận đấy không thêm luôn dòng lện copy cái hàng đó qua bên sheets "Saban" luôn đỡ phải sort ?
ý tưởng bạn rất hay, có điều là khi mình nhỡ tay điền vào đó thì hơi phức tạp 1 chút bạn à, như vậy phải xóa dòng đã chạy lệnh copy sang
 
Upvote 0
Sort là nhanh gọn lẹ nhất rồi còn gì, nếu muốn giữ vị trí như ban đầu thì thêm cột số thứ tự đầu tiên, sort copy xong sort lại theo cột stt
vậy mình sẽ ko biết copy đến dòng nào
vì mình chỉ copy từ B2 đến H
bình thường mình sẽ tìm dòng cuối có dữ liêu dạng : B2:H&dòng cuối
Bây giờ mình ko biết copy đến dòng nào?
Câu này chả rõ bạn nói gì, sau sort thì dữ liêu sẽ là liên tiếp, cho nên dòng cần lấy là từ L2.end(xldown) thôi. Tùy biến tí để lấy vùng B2:H & L2.end(xldown)
 
Upvote 0
Thử code này xem:
Mã:
Option Explicit
Sub CopyPaste()
Dim Rng As Range, Lr As Long
With Sheets("Nhap")
    Lr = .Cells(Rows.Count, 1).End(xlUp).Row
    If Lr = 1 Then Exit Sub
    .Range("A1:M" & Lr).Sort .[L1], xlAscending, Header:=xlYes
    Set Rng = .Range("L1", .Cells(1, "L").End(xlDown))
    If Rng.Rows.Count <= Lr Then
        Set Rng = Rng.Offset(1, -10).Resize(Rng.Rows.Count - 1, 7)
    End If
End With
With Sheets("Saban")
    .Range("F21:L10000").ClearContents
    Rng.Copy .Range("F21")
End With
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom