-
So sánh dữ liệu khi tạo sheet mới
jason > 30-12-16, 12:11 PM
Chào ace trên diễn đàn,
đầu tiên chúc mọi thành viên của diễn đàn năm mới nhiều sức khỏe và nhiều thành công mới !
mình đang có vân đề không biết phải làm thế nào, mong mọi người biết hướng dẫn giúp với
như vầy:
cách 1:mình có 1 sheet(1) có dữ liệu sẵn. mình muốn tạo hoặc copy sheet(n) mới nếu sheet(n) mới có dữ liệu trùng với sheet(1) thì sẽ báo lỗi và không cho tạo mới hoặc copy.
VD: sheet(1) có 1 cột cố định. mỗi một sheet(n) là 1 dòng của cột mình lấy làm tiêu chuẩn đề so sánh
sheet(n) cũng có 1 ô cố định để so sánh với sheet(1) có trong 1 cột
note: sheet(n) là sheet(1),(2),....(n). và mình muốn so sánh bằng vba .
em tìm nhiều trên các diễn đàn nhưng không thấy trường hợp này.
cách 2: cũng vấn đề trên nếu dữ liệu của sheet(2),sheet(3) có ô cố định giống nhau thì sheet(1) sẽ tự động cập nhật là 2 dòng trong 1 cột
ở đậy sheet(1) sẽ có 2 dòng giống nhau, nếu giống nhau thì sẽ báo lỗi và không cho update
giúp mình cách nào cũng được. chỉ mong giải quyết được vấn đề.
rất mong các cao thủ cứu chén.
xin đa tạ -
RE: So sánh dữ liệu khi tạo sheet mới
ongke0711 > 30-12-16, 01:58 PM
Đọc vô cũng hơi lùng bùng. Bạn tạo mấy sheet demo rồi ghi chú trên đó cho dễ hình dung đi.
So sánh 2 sheet với nhau thì có cách là so sánh từng Cell (65536 dòng x 256 cột, nếu office 2003). Load toàn bộ 2 sheet lên biến mảng rồi so sánh. -
RE: So sánh dữ liệu khi tạo sheet mới
jason > 30-12-16, 02:29 PM
mình xin gửi link file demo: http://www.mediafire.com/file/26941ozgak...61230.xlsx
bạn tham khảo file giúp nhé.
mình có giải thích thêm ở sheet1
file này mình chỉ copy ra cho bạn dễ hiểu không phải file đang làm, bạn thông cảm nhé(vì copy file gốc cho bạn chạy được trên máy cũng vất vả lắm) -
RE: So sánh dữ liệu khi tạo sheet mới
ongke0711 > 30-12-16, 05:07 PM
Bạn nói rõ hơn nữa nhé. Về logic xử lý file này của bạn.
Cách 1: Sheet 1 đã có sẳn (chỉ có 1 dòng, 1 style No) , bạn muốn tạo sheet 2, 3 ...không trùng (StyleNo) với sheet 1. Nói chung là tạo n sheet có 1 dòng và số Style No khác nhau? Vậy cở sở dữ liệu gốc để tạo các sheet lấy ở đâu (để ra được các Style No khác nhau? -
RE: So sánh dữ liệu khi tạo sheet mới
hieuvn > 30-12-16, 05:10 PM
@jason:
mình vẫn thắc mắc là sao không đổ dữ liệu thẳng vào sheet 1 luôn cho nó khỏe mà phải tạo nhiều sheet rồi mất công lấy dữ liệu từ các sheet đó? Đôi khi vấn đề được giải quyết không nằm ở kĩ năng code mà nằm ở tư duy tìm ra giải pháp tối ưu nhất. -
RE: So sánh dữ liệu khi tạo sheet mới
jason > 30-12-16, 05:36 PM
(30-12-16, 05:07 PM)ongke0711 Đã viết: Bạn nói rõ hơn nữa nhé. Về logic xử lý file này của bạn.
Cách 1: Sheet 1 đã có sẳn (chỉ có 1 dòng, 1 style No) , bạn muốn tạo sheet 2, 3 ...không trùng (StyleNo) với sheet 1. Nói chung là tạo n sheet có 1 dòng và số Style No khác nhau? Vậy cở sở dữ liệu gốc để tạo các sheet lấy ở đâu (để ra được các Style No khác nhau?
Chào Ongke,
Sheet1 là lấy dữ liệu ở Sheet(n) vì Sheet(n) có thể có nhiều sheet nhưng mã khác nhau thỉnh thoảng có 1 vài mã giống nhau,
nên nếu không có sheet(n) thì dữ liệu ở sheet1 sẽ không có.
Dữ liệu của các sheet lấy ở server.
file này là tính định mức của từng mã hàng mỗi sheet có 1 hoặc nhiều mã hàng nhưng cùng 1 Style No. Sheet1 là tổng hợp lại Style No của từng Sheet để transfer lại vào server. nếu bị trùng style No thì khi transfer kết quả định mức tính được sẽ không đúng (mà mua hàng thì dựa theo định mức nên cái này nguy hiểm )
bạn cần thêm thông tin mình sẽ nói thêm.
cảm ơn rất nhiều ! -
RE: So sánh dữ liệu khi tạo sheet mới
jason > 30-12-16, 05:38 PM
(30-12-16, 05:10 PM)hieuvn Đã viết: @jason:
mình vẫn thắc mắc là sao không đổ dữ liệu thẳng vào sheet 1 luôn cho nó khỏe mà phải tạo nhiều sheet rồi mất công lấy dữ liệu từ các sheet đó? Đôi khi vấn đề được giải quyết không nằm ở kĩ năng code mà nằm ở tư duy tìm ra giải pháp tối ưu nhất.
cảm ơn bạn , nhưng trường hợp của mình không làm theo cách đó được !
nếu có cách giúp mình với nhé
thanks ! -
RE: So sánh dữ liệu khi tạo sheet mới
ongke0711 > 30-12-16, 11:48 PM
(30-12-16, 05:36 PM)jason Đã viết: Chào Ongke,
Sheet1 là lấy dữ liệu ở Sheet(n) vì Sheet(n) có thể có nhiều sheet nhưng mã khác nhau thỉnh thoảng có 1 vài mã giống nhau,
nên nếu không có sheet(n) thì dữ liệu ở sheet1 sẽ không có.
Dữ liệu của các sheet lấy ở server.
file này là tính định mức của từng mã hàng mỗi sheet có 1 hoặc nhiều mã hàng nhưng cùng 1 Style No. Sheet1 là tổng hợp lại Style No của từng Sheet để transfer lại vào server. nếu bị trùng style No thì khi transfer kết quả định mức tính được sẽ không đúng (mà mua hàng thì dựa theo định mức nên cái này nguy hiểm )
bạn cần thêm thông tin mình sẽ nói thêm.
cảm ơn rất nhiều !
Bạn hieuvn nói đúng đó bạn. Quan trọng nhất là tìm ra giải pháp tối ưu cho bài toán của bạn. Vì tôi thấy cách 1 hay cách 2 bạn đưa ra có vẻ lằng nhằng quá. Dữ liệu bạn đưa chỉ có 2 dòng giống nhau hoàn toàn nên tôi không thấy được những trường hợp như bạn nói .Để tôi tóm lại xem có hiểu đúng chưa nhé.
Bài toán của bạn là: bạn có nhiều sheet (1,2,3..n). Mỗi sheet chứa 1 hoặc nhiều mã hàng (cột SKU phải không?) nhưng có cùng Style No. Sheet 1 tổng hợp các Style No không được trùng. Vậy thì điều này có mẫu thuẫn với việc nhiều mã hàng (SKU) khác nhau cùng 1 Style No, vậy bạn xử lý mã hàng này ra sao? chọn 1 mã hàng cho 1 Style No?
Nếu tôi không lầm thì nên tổng hợp tất cả các dòng không trùng cặp: mã hàng + StyleNo. -
RE: So sánh dữ liệu khi tạo sheet mới
jason > 31-12-16, 08:43 AM
(30-12-16, 11:48 PM)ongke0711 Đã viết: Bạn hieuvn nói đúng đó bạn. Quan trọng nhất là tìm ra giải pháp tối ưu cho bài toán của bạn. Vì tôi thấy cách 1 hay cách 2 bạn đưa ra có vẻ lằng nhằng quá. Dữ liệu bạn đưa chỉ có 2 dòng giống nhau hoàn toàn nên tôi không thấy được những trường hợp như bạn nói .Để tôi tóm lại xem có hiểu đúng chưa nhé.
Bài toán của bạn là: bạn có nhiều sheet (1,2,3..n). Mỗi sheet chứa 1 hoặc nhiều mã hàng (cột SKU phải không?) nhưng có cùng Style No. Sheet 1 tổng hợp các Style No không được trùng. Vậy thì điều này có mẫu thuẫn với việc nhiều mã hàng (SKU) khác nhau cùng 1 Style No, vậy bạn xử lý mã hàng này ra sao? chọn 1 mã hàng cho 1 Style No?
Nếu tôi không lầm thì nên tổng hợp tất cả các dòng không trùng cặp: mã hàng + StyleNo.
về mã hàng ở đây mình chỉ nói thêm cho bạn hiểu thêm về ý của mình.
bài toán của mình về vấn đề này không liên quan tới mã hàng chỉ liên quan tới StyleNo thôi.
còn về dữ liệu cho bạn xem chỉ nêu ra trường hợp bị trùng nhau và bố cục để bạn hình dung ra được, với dữ liệu gốc thì dữ liệu nhiều lắm .
mong bạn giúp về vấn đề chính là : chặn không cho update nếu sheet1 có mã bị trùng .
còn cách 1 và 2 nếu bạn thấy lằng nhằng vậy bạn có thể cho mình cách khác được không ?
thanks Ongke ! -
RE: So sánh dữ liệu khi tạo sheet mới
ongke0711 > 31-12-16, 10:29 AM
Tôi hỏi để hiểu CSDL của bạn rồi thì mới xem có cách gì mà gợi ý chứ. Tôi có kêu bạn đưa hết CSDL gốc đâu mà chỉ cần có vài dòng thể hiện sự khác nhau của từng record và khi dùng lệnh xử lý thì mới thấy kết quả đúng sai như thế nào chứ chẳng lẻ tôi lại phải tự tạo thêm các dòng dữ liệu nữa để test. Potay với bạn.
Đó là tôi mới hỏi về mặt dữ liệu, bây giờ hỏi về cách thức bạn update: bạn update theo kiểu gì? có nút lệnh để chạy hay dùng phương pháp thủ công là click chuột phải -> copy sheet? hay quét hết dòng trong từng sheet rồi copy qua? hay làm kiểu gì…Bạn đã biết rồi code nó liên quan đến từng sự kiện thao tác dữ liệu, sự kiện nó là mousemove, Worksheet_Change, Worksheet_Afterchange v.v.. nó có cách xử lý khác nhau.
Đôi khi đối với file của bạn chỉ copy qua hết 1 sheet rồi dùng Conditional Formating -> Find Dublicate value là tìn ra được những dòng trùng rồi xóa nó thôi.