Thao tác bằng tay và sử dụng Macro cho kết quả khác nhau.

Liên hệ QC

huuthang_bd

Chuyên gia GPE
Tham gia
10/9/08
Bài viết
8,928
Được thích
11,320
Donate (Momo)
Donate
Giới tính
Nam
Nghề nghiệp
Thợ đụng
Máy tôi cài đặt định dạng ngày tháng của hệ thống là dd/mm/yyyy.
Ở ô B1 có dữ liệu dạng text 11/02/2011. Ô A1 không có dữ liệu.
Khi làm thủ công, copy ô A1 và Paste Special - Add vào ô B1 thì kết quả là 40.585 tương đương với ngày 11/02/2011. Nhưng khi sử dụng Macro tương tự các thao tác như trên thì kết quả lại là 40.849 tương đương với ngày 02/11/2011. Macro được sử dụng như sau:
PHP:
Sub Test()
[A1].Copy
[B1].PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks:=False, Transpose:=False
End Sub
Xin hỏi các anh chị viết code như thế nào để kết quả giống như khi thao tác thủ công.
Ở đây tôi chỉ lấy ví dụ là 1 ô nhưng khi xử lý cần xử lý 1 vùng rộng và không dùng vòng lặp.
Xin cảm ơn!
 
Em thử và nó vẫn ra kết quả là 40585 mà, anh xem lại xem sao?
 
Upvote 0
Máy tôi cài đặt định dạng ngày tháng của hệ thống là dd/mm/yyyy.
Ở ô B1 có dữ liệu dạng text 11/02/2011. Ô A1 không có dữ liệu.
Khi làm thủ công, copy ô A1 và Paste Special - Add vào ô B1 thì kết quả là 40.585 tương đương với ngày 11/02/2011. Nhưng khi sử dụng Macro tương tự các thao tác như trên thì kết quả lại là 40.849 tương đương với ngày 02/11/2011. Macro được sử dụng như sau:
PHP:
Sub Test()
[A1].Copy
[B1].PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks:=False, Transpose:=False
End Sub
Xin hỏi các anh chị viết code như thế nào để kết quả giống như khi thao tác thủ công.
Ở đây tôi chỉ lấy ví dụ là 1 ô nhưng khi xử lý cần xử lý 1 vùng rộng và không dùng vòng lặp.
Xin cảm ơn!
Đúng là có sai lệch giữa thao tác tay với macro
Trong trường hợp định dạng trong Control Panel trùng với định dạng bảng tính, tôi thấy dùng DateValue chắc ăn hơn
PHP:
Sub Macro1()
  With Range("B1")
    .NumberFormat = "dd/mm/yyyy"
    .Value = DateValue(.Value)
  End With
End Sub
 
Upvote 0
Đúng là có sai lệch giữa thao tác tay với macro
Trong trường hợp định dạng trong Control Panel trùng với định dạng bảng tính, tôi thấy dùng DateValue chắc ăn hơn
PHP:
Sub Macro1()
  With Range("B1")
    .NumberFormat = "dd/mm/yyyy"
    .Value = DateValue(.Value)
  End With
End Sub
Vấn đề là thao tác với 1 vùng dữ liệu chứ không phải 1 ô anh à. Và không dùng vòng lặp. Ý em là có cách nào khắc phục Paste Special để dùng Macro mà không còn sự khác biệt với làm thủ công hay không.
 
Upvote 0
Vấn đề là thao tác với 1 vùng dữ liệu chứ không phải 1 ô anh à. Và không dùng vòng lặp. Ý em là có cách nào khắc phục Paste Special để dùng Macro mà không còn sự khác biệt với làm thủ công hay không.
Bạn có thể dùng vòng lập nhưng kết hợp với mảng ---> Tốc độ vẫn nhanh mà
Còn nếu nhất định không vòng lập thì... Để nghiên cứu lại xem (có sự nhầm lẫn gì đây không biết)
 
Upvote 0
Web KT

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

Back
Top Bottom