Code VBA thay thế Hàm Excel trên bảng tính

Liên hệ QC

Vanminh123

Thành viên mới
Tham gia
4/12/20
Bài viết
19
Được thích
4
Chào mọi người thân mếm !
Mình có dùng công thức trên bảng tính tại ô A1 và ô A2 :
A1=MAX(COUNTA(E7:E200)+6,8)
A2=IFERROR(MATCH(I7,E7:E12,0),0)
sau đó mình viết code thì phải lấy giá trị tại ô A1 ,A2 để làm biến


Sub abc()
Dim i As Long, b as long
i = Range("a1").Value
b = Range("a2").Value

'Code....
'Code....
End Sub

Giờ làm sao để cho gọn. chứ vừa công thức vừa VBA thấy nó thập cẩm quá. Nhờ mọi người chỉ mình viết VBA cho công thức A1 và A2
Xin cảm ơn
 
Chào mọi người thân mếm !
Mình có dùng công thức trên bảng tính tại ô A1 và ô A2 :
A1=MAX(COUNTA(E7:E200)+6,8)
A2=IFERROR(MATCH(I7,E7:E12,0),0)
sau đó mình viết code thì phải lấy giá trị tại ô A1 ,A2 để làm biến


Sub abc()
Dim i As Long, b as long
i = Range("a1").Value
b = Range("a2").Value

'Code....
'Code....
End Sub

Giờ làm sao để cho gọn. chứ vừa công thức vừa VBA thấy nó thập cẩm quá. Nhờ mọi người chỉ mình viết VBA cho công thức A1 và A2
Xin cảm ơn
Mình hay kết hợp VBA và hàm bằng Application.WorksheetFunction
i = Application.WorksheetFunction.Max(Application.WorksheetFunction.CountA(Range("E7:E200")) + 6, 8)
 
Upvote 0
...
Giờ làm sao để cho gọn. chứ vừa công thức vừa VBA thấy nó thập cẩm quá. Nhờ mọi người chỉ mình viết VBA cho công thức A1 và A2
Xin cảm ơn
1. Khó có cách nào "cho gọn" (*).
2. "Thập cẩm" là ý chủ quan của bạn. Chứ tôi có thấy gì đâu.
3. Trong trường hợp của bạn, viết VBA cho cônng thức ở A1 và A2 mới là tùm lum (không gọn?) và màu mè (thập cẩm)

(*) khó chứ không phải là không thể. Làm được hay không còn tuỳ từng trường hợp.

Mình hay kết hợp VBA và hàm bằng Application.WorksheetFunction
i = Application.WorksheetFunction.Max(Application.WorksheetFunction.CountA(Range("E7:E200")) + 6, 8)
Làm thì được, nhưng trước mắt thì có thấy nó gọn hơn đâu? Và khi công thức thay đổi thì mất công lại phải đổi code theo.
 
Lần chỉnh sửa cuối:
Upvote 0
Các hàm UDF mặc định là không volatile, nó chỉ thực hiện tính lại khi tham số đầu vào thay đổi. Ví dụ: bạn xây dựng hàm
Mã:
Function AddA1(R as range)
AddA1=r.value+[a1]
End function
Trên ô C1 bạn nhập công thức =AddA1(B1) sẽ trả kết quả =A1+B1 nhưng khi A1 thay đổi thì C1 lại không thay đổi theo! Vì vậy cần cẩn thận khi dùng UDF.
 
Upvote 0
Làm thì được, nhưng trước mắt thì có thấy nó gọn hơn đâu? Và khi công thức thay đổi thì mất công lại phải đổi code theo.
Nhìn rườm rà thật, cơ mà nó đơn giản dễ dùng, thân thiện với những người rành hàm nhưng lại lơ tơ mơ về VBA như mình. :p
 
Upvote 0
Chào mọi người thân mếm !
Mình có dùng công thức trên bảng tính tại ô A1 và ô A2 :
A1=MAX(COUNTA(E7:E200)+6,8)
A2=IFERROR(MATCH(I7,E7:E12,0),0)
sau đó mình viết code thì phải lấy giá trị tại ô A1 ,A2 để làm biến


Sub abc()
Dim i As Long, b as long
i = Range("a1").Value
b = Range("a2").Value

'Code....
'Code....
End Sub

Giờ làm sao để cho gọn. chứ vừa công thức vừa VBA thấy nó thập cẩm quá. Nhờ mọi người chỉ mình viết VBA cho công thức A1 và A2
Xin cảm ơn
Muốn gọn thì như vậy:
Dim i&, b&
i = [A1]
b = [A2]
 
Upvote 0
Web KT

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

Back
Top Bottom