Lỗi rounding khi lấy dữ liệu từ file excel bằng ADODB

Liên hệ QC

khanhhero

Thành viên hoạt động
Tham gia
28/7/11
Bài viết
144
Được thích
36
Em xin chào các anh chị,

Hiện tại em đang dùng ADODB để tổng hợp dữ liệu từ các file excel chi tiết lên file tổng hợp. Tuy nhiên em bị lỗi rounding khi trả về dữ liệu như sau:

1. Nếu file chi tiết đang mở (Source file) -> dữ liệu lấy vào file tổng hợp (File Console) vẫn đầy đủ số thập phân.

2. Nếu file chi tiết đang đóng:
2.1 Nếu cột dữ liệu được định dạng là general -> dữ liệu lấy vào đầy đủ phần thập phân. Tuy nhiên sẽ gây khó chịu khi trình bày số liệu đối với người đang làm chi tiết.
2.2 Nếu định dạng là số (#,##0) -> dữ liệu lấy vào file console sẽ bị rounding dẫn đến sai lệch giá trị cuối cùng, tuy số lệch chỉ ở hàng đơn vị nhưng nếu đơn vị tính là triệu đồng hoặc tỷ đồng thì cũng sẽ gây sai lệch lớn khi cộng nhiều file chi tiết lại với nhau.

Các anh chị có cách nào xử lý trường hợp này xin hướng dẫn em với ạ.

Em xin cám ơn ạ.
 

File đính kèm

  • 240720_Forecast Console.xlsb
    20.7 KB · Đọc: 8
  • Source File.xlsx
    29 KB · Đọc: 7
Này sau khi bạn gán vào sheet thì chỉ cần định dạng vùng đó theo ý muốn của mình thôi mà ?
Range("E2:J" & LastRow).NumberFormat = "0.00" ?
 
Này sau khi bạn gán vào sheet thì chỉ cần định dạng vùng đó theo ý muốn của mình thôi mà ?
Range("E2:J" & LastRow).NumberFormat = "0.00" ?
Ko được bạn ạ. Vì dữ liệu khi trả về nó đã bị round rồi. Mình có đính kèm cả file code mình đang chạy luôn đấy.
 
Ví dụ số liệu ở file gốc là 4.5372 thì khi lấy lên nó thành 5
 
Em xin chào các anh chị,

Hiện tại em đang dùng ADODB để tổng hợp dữ liệu từ các file excel chi tiết lên file tổng hợp. Tuy nhiên em bị lỗi rounding khi trả về dữ liệu như sau:

1. Nếu file chi tiết đang mở (Source file) -> dữ liệu lấy vào file tổng hợp (File Console) vẫn đầy đủ số thập phân.

2. Nếu file chi tiết đang đóng:
2.1 Nếu cột dữ liệu được định dạng là general -> dữ liệu lấy vào đầy đủ phần thập phân. Tuy nhiên sẽ gây khó chịu khi trình bày số liệu đối với người đang làm chi tiết.
2.2 Nếu định dạng là số (#,##0) -> dữ liệu lấy vào file console sẽ bị rounding dẫn đến sai lệch giá trị cuối cùng, tuy số lệch chỉ ở hàng đơn vị nhưng nếu đơn vị tính là triệu đồng hoặc tỷ đồng thì cũng sẽ gây sai lệch lớn khi cộng nhiều file chi tiết lại với nhau.

Các anh chị có cách nào xử lý trường hợp này xin hướng dẫn em với ạ.

Em xin cám ơn ạ.
Xin hỏi dòng lệnh: SqlStr = "SELECT F1, F2, F3, F7, F10*1, F11*1, F12*1 ...

Chỗ *1 có ý nghĩa gì?
 
Xin hỏi dòng lệnh: SqlStr = "SELECT F1, F2, F3, F7, F10*1, F11*1, F12*1 ...

Chỗ *1 có ý nghĩa gì?
*1 thì nó tự trả về number, hoặc có thể dùng cdbl để convert về số cũng được. Nhưng nếu chỉ lấy thuần f10, f11... thì nó trả về text nhưng vẫn mất phần thập phân ạ.
 
*1 thì nó tự trả về number, hoặc có thể dùng cdbl để convert về số cũng được. Nhưng nếu chỉ lấy thuần f10, f11... thì nó trả về text nhưng vẫn mất phần thập phân ạ.

Thử nhân với số thập phân xem sao, như Gần mực thì đen - gần đèn thì sáng.

SqlStr = "SELECT F1, F2, F3, F7, F10*1.0, F11*1.0, F12*1.0 ...

Trên máy tôi, kết quả đầy đủ số thập phân.
 
Thử nhân với số thập phân xem sao, như Gần mực thì đen - gần đèn thì sáng.

SqlStr = "SELECT F1, F2, F3, F7, F10*1.0, F11*1.0, F12*1.0 ...

Trên máy tôi, kết quả đầy đủ số thập phân.
Nghĩa là *1.0 thì trả đầy đủ còn với code của e thì trên máy a cũng bị round đúng ko ạ?
 
Em test bằng máy cá nhân của em cũng vẫn bị lỗi rounding :(
 
Bạn vào control chọn lại xem
 

File đính kèm

  • 1721578007933.png
    1721578007933.png
    17.4 KB · Đọc: 9
Quý vị đoán mò trật hết rồi.
Nhưng mà không sao đâu. Người có khả năng giúp, và sẵn sàng giúp sẽ ra tay ngày thứ Hai.
 
Em xin chào các anh chị,

Hiện tại em đang dùng ADODB để tổng hợp dữ liệu từ các file excel chi tiết lên file tổng hợp. Tuy nhiên em bị lỗi rounding khi trả về dữ liệu như sau:

1. Nếu file chi tiết đang mở (Source file) -> dữ liệu lấy vào file tổng hợp (File Console) vẫn đầy đủ số thập phân.

2. Nếu file chi tiết đang đóng:
2.1 Nếu cột dữ liệu được định dạng là general -> dữ liệu lấy vào đầy đủ phần thập phân. Tuy nhiên sẽ gây khó chịu khi trình bày số liệu đối với người đang làm chi tiết.
2.2 Nếu định dạng là số (#,##0) -> dữ liệu lấy vào file console sẽ bị rounding dẫn đến sai lệch giá trị cuối cùng, tuy số lệch chỉ ở hàng đơn vị nhưng nếu đơn vị tính là triệu đồng hoặc tỷ đồng thì cũng sẽ gây sai lệch lớn khi cộng nhiều file chi tiết lại với nhau.

Các anh chị có cách nào xử lý trường hợp này xin hướng dẫn em với ạ.

Em xin cám ơn ạ.
Bạn thử với đoạn truy vấn sau thử nhé:

Mã:
SqlStr = " SELECT F1, F2, F3, F7, F10 , F11 , F12 , F15 , F16 , F17 " & _
                " FROM [PNL_FCST$A7:W65000] " & _
                " WHERE F2 IS not null "
 
Web KT

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

Back
Top Bottom