Cần giúp chuyển công thức thành macro (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

besin2910

Thành viên mới
Tham gia
28/6/10
Bài viết
3
Được thích
1
Hi mọi nguời
Em có 1 số công thức ở trong cột F, G, L, M và tổng cộng ở dòng 21 của sheet "DCR xuat ket".
Các công thức lặp lại và giống nhau ở các cột và các bảng trong sheet. Tương tự như vậy trong sheet "DCR xuat pet". Do công thức nhiều nên file chạy rất chậm mặc dù đã dùng caculator manual. Các anh giúp em tạo vài macro chạy các công thức trong file để file được nhẹ nhàng hơn. Em xin cảm ơn
 
Hi mọi nguời
Em có 1 số công thức ở trong cột F, G, L, M và tổng cộng ở dòng 21 của sheet "DCR xuat ket".
Các công thức lặp lại và giống nhau ở các cột và các bảng trong sheet. Tương tự như vậy trong sheet "DCR xuat pet". Do công thức nhiều nên file chạy rất chậm mặc dù đã dùng caculator manual. Các anh giúp em tạo vài macro chạy các công thức trong file để file được nhẹ nhàng hơn. Em xin cảm ơn
Lẽ ra trong file cũng nên có dữ liệu để biết đường mà test. Toàn là số 0 thì sao kiểm tra khi viết code chứ.
Thử thế này cho vùng đầu tiên, nếu được thì nhân bản lên cho các vùng còn lại
PHP:
Sub congthuc()
With [F9:F20]
   .Formula = "=IF((C9+E9)>=24,B9+D9+INT((C9+E9)/24),B9+D9)"
   .Value = .Value
End With
With [G9:G20]
   .Formula = "=IF((C9+E9)>=24,MOD(C9+E9,24),C9+E9)"
   .Value = .Value
End With
With Range("B21,D21,F21,H21,J21,L21")
   .Formula = "=IF(SUM(C9:C20)>=24,SUM(B9:B20)+INT(SUM(C9:C20)/24),SUM(B9:B20))"
   .Value = .Value
End With
With Range("C21,E21,G21,I21,K21,M21")
   .Formula = "=IF(SUM(C9:C20)>=24,MOD(SUM(C9:C20),24),SUM(C9:C20))"
   .Value = .Value
End With
End Sub
 
Lần chỉnh sửa cuối:
Cảm ơn anh Quanghai nhiều nhiều. Em đã làm được. Cảm ơn anh đã giúp đỡ.
 
Hi mọi nguời
Em có 1 số công thức ở trong cột F, G, L, M và tổng cộng ở dòng 21 của sheet "DCR xuat ket".
Các công thức lặp lại và giống nhau ở các cột và các bảng trong sheet. Tương tự như vậy trong sheet "DCR xuat pet". Do công thức nhiều nên file chạy rất chậm mặc dù đã dùng caculator manual. Các anh giúp em tạo vài macro chạy các công thức trong file để file được nhẹ nhàng hơn. Em xin cảm ơn

Nếu dùng Macro thì bạn làm thử thế này xem sao ? (tôi chỉ hướng dẫn cách chuyển công thức chứ không bàn đến chuyện VBA đâu nha)

1- Bật Record Macro (để ghi lại các công thức đã có sẵn trong từng cột)
2- Đặt con trỏ vào ô đầu tiên của cột (ô F9) nhấn F2 rồi Enter. Làm lần lượt cho đến hết rồi tắt Record Macro
3- Bấm Alt + F11 ta có Macro sau (đừng sợ, nó ra cái gì cứ kệ nó):

Mã:
Sub Macro2()
'
' Macro2 Macro
' Macro recorded 12/4/2012 by Windows User
'


'
    Range("F9").Select
    ActiveCell.FormulaR1C1 = _
        "=IF((RC[-3]+RC[-1])>=24,RC[-4]+RC[-2]+INT((RC[-3]+RC[-1])/24),RC[-4]+RC[-2])"
    Range("G9").Select
    ActiveCell.FormulaR1C1 = _
        "=IF((RC[-4]+RC[-2])>=24,MOD(RC[-4]+RC[-2],24),RC[-4]+RC[-2])"
    Range("L9").Select
    ActiveCell.FormulaR1C1 = _
        "=IF((RC[-5]+RC[-3]-RC[-1])>=24,RC[-6]+RC[-4]-RC[-2]+1,IF(RC[-5]+RC[-3]-RC[-1]<0,RC[-6]+RC[-4]-RC[-2]-1,RC[-6]+RC[-4]-RC[-2]))"
    Range("M9").Select
    ActiveCell.FormulaR1C1 = _
        "=IF((RC[-6]+RC[-4]-RC[-2])=24,0,IF(RC[-6]+RC[-4]-RC[-2]<0,24+RC[-6]+RC[-4]-RC[-2],RC[-6]+RC[-4]-RC[-2]))"
    Range("M10").Select
End Sub
4- Sửa Macro
Sửa câu Range("F9").Select thành Range("F9:F20")=
Xóa bỏ câu ActiveCell.FormulaR1C1 = _
Nhấc công thức lên trên sau dấu bằng, ta có: Range("F9:F20") = "=IF((RC[-3]+RC[-1])>=24,RC[-4]+RC[-2]+INT((RC[-3]+RC[-1])/24),RC[-4]+RC[-2])"

Làm tương tự cho những Range còn lại.

Kết quả sau khi sửa là:
Mã:
Sub Macro2()
    Range("F9:F20") = "=IF((RC[-3]+RC[-1])>=24,RC[-4]+RC[-2]+INT((RC[-3]+RC[-1])/24),RC[-4]+RC[-2])"
    Range("G9:G20") = "=IF((RC[-4]+RC[-2])>=24,MOD(RC[-4]+RC[-2],24),RC[-4]+RC[-2])"
    Range("L9:L20") = "=IF((RC[-5]+RC[-3]-RC[-1])>=24,RC[-6]+RC[-4]-RC[-2]+1,IF(RC[-5]+RC[-3]-RC[-1]<0,RC[-6]+RC[-4]-RC[-2]-1,RC[-6]+RC[-4]-RC[-2]))"
    Range("M9:M20") = "=IF((RC[-6]+RC[-4]-RC[-2])=24,0,IF(RC[-6]+RC[-4]-RC[-2]<0,24+RC[-6]+RC[-4]-RC[-2],RC[-6]+RC[-4]-RC[-2]))"
    Cells.Value = Cells.Value   'xóa công thức toàn bảng. 
End Sub

Nghe thì loằng ngoằng vậy thôi chứ làm thì cũng đơn giản. Bạn cứ thử làm xem
 
Lần chỉnh sửa cuối:
Bạn vào Menu Tools-->Options-->Thẻ General-->Bỏ dấu kiểm ở R1C1 reference style-->OK
 
Web KT

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

Trả lời
42
Đọc
17K
Back
Top Bottom