mr.hoang3365
Thành viên mới
- Tham gia
- 9/12/10
- Bài viết
- 15
- Được thích
- 48
Mình lang thang trên diễn đàn và đã chỉnh sửa một đoạn code để tra định mức từ Sheet(DM24) và copy vào Sheet(PT) sau đó điền công thức tra đơn giá vào cột Đơn giá và cột Thành tiền. Trong quá trình lập có một số nội dung mình muốn tham khảo ý kiến của các bạn và nhờ các bạn giúp đỡ:
(1) Kiểm tra sự tồn tại của Sh(DM) nếu không tồn tại thì chương trình thông báo để người dùng biết;
(2) Tại cột Đơn giá và Thành tiền trong Sh(PT) mình nhập công thức có code là "=sum(R[1]C[0]:R[j]C[0])" (trường hợp này j thay đổi tùy theo loại định mức) nhưng chương trình báo lỗi. Xin trích một đoạn như sau:
J = 2
If MVT = "VL00#" Then
MHDM.Offset(i, 5).Value = "=sum(R[-1]C[1]:R[-1]C[1])"
'MHDM.Offset(i, 5).Value = "=sum(R[-1]C[j]:R[-1]C[1])" 'Nếu thay C[1] bằng C[j] thì chương trình báo lỗi
MHDM.Offset(i, 6).Value = "=Product(R[0]C[-2],R[0]C[-1])"
ElseIf MVT = "M00#" Then
MHDM.Offset(i, 5).Value = "=sum(R[-1]C[1]:R[-1]C[1])"
MHDM.Offset(i, 6).Value = "=Product(R[0]C[-2],R[0]C[-1])"
ElseIf MVT = "VL000" Then
MHDM.Offset(i, 6).FormulaR1C1 = "=sum(R[1]C[0]:R[1]C[0])"
ElseIf MVT = "M000" Then
MHDM.Offset(i, 6).FormulaR1C1 = "=sum(R[1]C[0]:R[1]C[0])"
Else
MHDM.Offset(i, 5).FormulaR1C1 = "=VLookup(R[0]C[-4],GIA,4, 0)"
MHDM.Offset(i, 6).FormulaR1C1 = "=Product(R[0]C[-2],R[0]C[-1])"
End If
Cụ thể là: Tại các cột thành tiến của mục a. Vật liệu và c. Máy thi công hoặc mục Máy khác (Vật liệu khác) của cột đơn giá có thể có nhiều hàng phải thực hiện công thức Sum khác nhau tùy theo mỗi loại mã hiệu định mức. Mình tìm hiểu mãi mà không tài nào viết được một công thức tổng quát, chit viết được trường hợp số cột và số hàng cố định trong công thức Sum.
Mong các anh chị chỉ giáo thêm!
Xin cảm ơn nhiều!
(1) Kiểm tra sự tồn tại của Sh(DM) nếu không tồn tại thì chương trình thông báo để người dùng biết;
(2) Tại cột Đơn giá và Thành tiền trong Sh(PT) mình nhập công thức có code là "=sum(R[1]C[0]:R[j]C[0])" (trường hợp này j thay đổi tùy theo loại định mức) nhưng chương trình báo lỗi. Xin trích một đoạn như sau:
J = 2
If MVT = "VL00#" Then
MHDM.Offset(i, 5).Value = "=sum(R[-1]C[1]:R[-1]C[1])"
'MHDM.Offset(i, 5).Value = "=sum(R[-1]C[j]:R[-1]C[1])" 'Nếu thay C[1] bằng C[j] thì chương trình báo lỗi
MHDM.Offset(i, 6).Value = "=Product(R[0]C[-2],R[0]C[-1])"
ElseIf MVT = "M00#" Then
MHDM.Offset(i, 5).Value = "=sum(R[-1]C[1]:R[-1]C[1])"
MHDM.Offset(i, 6).Value = "=Product(R[0]C[-2],R[0]C[-1])"
ElseIf MVT = "VL000" Then
MHDM.Offset(i, 6).FormulaR1C1 = "=sum(R[1]C[0]:R[1]C[0])"
ElseIf MVT = "M000" Then
MHDM.Offset(i, 6).FormulaR1C1 = "=sum(R[1]C[0]:R[1]C[0])"
Else
MHDM.Offset(i, 5).FormulaR1C1 = "=VLookup(R[0]C[-4],GIA,4, 0)"
MHDM.Offset(i, 6).FormulaR1C1 = "=Product(R[0]C[-2],R[0]C[-1])"
End If
Cụ thể là: Tại các cột thành tiến của mục a. Vật liệu và c. Máy thi công hoặc mục Máy khác (Vật liệu khác) của cột đơn giá có thể có nhiều hàng phải thực hiện công thức Sum khác nhau tùy theo mỗi loại mã hiệu định mức. Mình tìm hiểu mãi mà không tài nào viết được một công thức tổng quát, chit viết được trường hợp số cột và số hàng cố định trong công thức Sum.
Mong các anh chị chỉ giáo thêm!
Xin cảm ơn nhiều!