@Ducvu Có 3 cách:
1: Là bác dùng if then trực tiếp trong code rồi trả kết quả
2: Là bác gán thẳng công thức vào ô
3: Là Fill công thức có sẵn từ ô nào đó Fill xuống
Tôi sẽ đi từng trường hợp cho bạn:
1. Nếu bác dùng if then trong code thì sẽ như thế này
Dim a as string
With Thisworkbook.Sheets("CHKD")
if .Range("L6").value = 0 then
a = 0
elseif .Range("C6") > 90 then
a = "Quá hạn"
Elseif .Range("C6") > 60 then
a = "Sắp hết hạn"
Else
a = "Còn hạn"
End if
End With
Tuy nhiên,Trong VBA không thể nhập trực tiếp Tiếng Việt có dấu khi viết code nên các chữ có dấu sẽ bị "?". Để giải quyết vấn đề này bạn cần cho nó qua 1 hàm trung gian để chuyển đổi, vui lòng tham khảo
Bạn cần đăng nhập để thấy link
.
2. Để gán công thức vào ô bất kể nó ở dòng nào cũng đúng thì bạn cần chèn nó dưới dạng R1C1. R1C1 được hiểu như ô được tham chiều sẽ cách ô hiện tại bao nhiêu dòng và bao nhiêu cột. Để có được công thức dạng này bạn xem cách tôi làm dưới dùng Record macro.
Bạn cần đăng nhập để thấy hình ảnh
Tuy nhiên, cách này vẫn sẽ bị lỗi đối với các chữ có dấu như cách 1.
3. Fill công thức từ trên xuống dưới
Đây là cách đơn giản nhất đối với cách trường hợp dữ liệu liên tục trong 1 cột.
Ví dụ: Ô B6 của bạn đang có chứa sẵn công thức như trên và bạn cần chèn nó thêm vào ô B7 thì làm như sau:
Dim iR As Long
'//ĐÂY LÀ DÒNG CUỐI CẦN THÊM CÔNG THỨC
iR = 7
'//FILL CÔNG THỨC BẮT ĐẦU TỪ Ô B6 CHO TỚI Ô B DÒNG iR
Range("B6").AutoFill Destination:=Range("B6:B" & iR), Type:=xlFillDefault