Giúp chuyển hàm sau sang VBA (1 người xem)

Liên hệ QC

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

tueyennhi

Thành viên tích cực
Tham gia
18/10/10
Bài viết
1,192
Được thích
105
Đây là hàm em đang làm
IF(OR(F8="ca ngay",F8="hanh chinh"),(Q8-M8),IF(OR(M8<Q8,M8=Q8),(Q8-M8),(($M$6-M8)+1+(Q8-$Q$6))))


Sub Tinhgio()
Dim I As Long
For I = 8 To 500


If Cells(I, 6).Value = "Ca ngay" Or Cells(I, 6) = "Hanh chinh" Or Cells(I, 13).Value < Cells(I, 17).Value Or Cells(I, 13).Value = Cells(I, 17).Value Then
Cells(I, 21).Value = Cells(I, 17).Value - Cells(I, 13).Value

Else: Cells(I, 21).Value = Cells(6, 13).Value - Cells(I, 13).Value + 1 + (Cells(I, 17).Value - Cells(6, 17).Value)
End If

Next I
End Sub



Hàm tuy chạy chuẩn xác nhưng chậm hơn cả công thức. Có cách nào để nó chạy nhanh hơn được không ạ?
 
Lần chỉnh sửa cuối:
Bạn đưa độc Code mà không đưa File lên thì chịu
 
Upvote 0
Bạn đưa độc Code mà không đưa File lên thì chịu

Hi tại vì mình nghĩ đọc code là có thể làm được. Vì bài này mình muốn tối ưu nó. Mà được rồi tại file mình nhiều công thức nên mỗi lần chạy VBA các công thức kia cũng chạy. Chắc viết thay thế hết là ổn. Thank bạn nhé!
 
Lần chỉnh sửa cuối:
Upvote 0
Đây là hàm em đang làm
IF(OR(F8="ca ngay",F8="hanh chinh"),(Q8-M8),IF(OR(M8<Q8,M8=Q8),(Q8-M8),(($M$6-M8)+1+(Q8-$Q$6))))
.......
Hàm tuy chạy chuẩn xác nhưng chậm hơn cả công thức. Có cách nào để nó chạy nhanh hơn được không ạ?
Hình như cái công thức của bạn nó ....sao sao í
Hai cái IF mà nếu thỏa điều kiện đều thực hiện một công việc (Q8-M8), sao không gom vào nhỉ ???
=IF(OR(F8="ca ngay",F8="hanh chinh",M8<=Q8),(Q8-M8),(($M$6-M8)+1+(Q8-$Q$6)))

Híc +-+-+-++-+-+-++-+-+-+
 
Upvote 0
Hình như cái công thức của bạn nó ....sao sao í
Hai cái IF mà nếu thỏa điều kiện đều thực hiện một công việc (Q8-M8), sao không gom vào nhỉ ???


Híc +-+-+-++-+-+-++-+-+-+

Uh, hihi

Sub Tinhgio()
Dim I As Long
For I = 8 To 500


If Cells(I, 6).Value = "Ca ngay" Or Cells(I, 6) = "Hanh chinh" Or Cells(I, 13).Value < Cells(I, 17).Value Or Cells(I, 13).Value = Cells(I, 17).Value Then
Cells(I, 21).Value = Cells(I, 17).Value - Cells(I, 13).Value

Else: Cells(I, 21).Value = Cells(6, 13).Value - Cells(I, 13).Value + 1 + (Cells(I, 17).Value - Cells(6, 17).Value)
End If


If Cells(11, I).Value = 0 Then
Cells(11, I).Value = 0
ElseIf Cells(11, I).Value <= 30 Then
Cells(11, I).Value = 0.5
ElseIf Cells(11, I).Value <= 60 Then
Cells(11, I).Value = 1
Else: Cells(11, I) = 0
End If

Next I
End Sub

Đoạn này sao không được nhỉ mọi người?
 
Upvote 0
Nhắc bạn lần...........cuối.........Nếu muốn học VBA...cho tốt...

Hỏi gì thì kèm code và file, code nằm trong file. Có dữ liệu mô tả, giả lập.
Cho dù người đọc qua có hiêu được code mục đích làm gì . Nhưng: không ai rảnh tới mức mà copy code và tạo dữ liệu giả lập rồi test cho bạn đâu......


P.s: Bạn đã đăng nhiều bài, hỏi nhiều nội dung....mà cái việc cơ bản của lập topic cho nghiêm túc & rõ ràng cũng không rút ra được kinh nghiệm thì...khó "vượt biển lớn" được lắm...

Ừm cảm ơn bạn đã góp ý. Mình sẽ rút kinh nghiệm -=.,,
 
Upvote 0
Web KT

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

Back
Top Bottom