Viết công thức trong VBA

  • Thread starter Thread starter iloveit
  • Ngày gửi Ngày gửi
Liên hệ QC

iloveit

Thành viên thường trực
Tham gia
2/3/13
Bài viết
212
Được thích
52
Giới tính
Nam
Nghề nghiệp
Tự do
Mã:
Sub SAVE()
Dim i As Long
i = Sheet2.Range("B1000000").End(xlUp).Row + 1

With Sheet2
.Range("B" & i) = Sheet1.Range("B7")
.Range("C" & i) = Sheet1.Range("B8")
.Range("D" & i) = Sheet1.Range("C9")
.Range("L" & i).Formula = "=TODAY()"

End With
End Sub

Tôi đang tập viết code và viết một đoạn lưu dữ liệu như trên nhưng tới phần chèn công thức tôi chưa biết phải viết như thế nào để nó chạy theo biến i. Nhờ mọi người giúp tôi sửa code dưới này như thế nào để nó chạy theo biến i

Cụ thể, dòng code tiếp theo là chèn công thức tại cột P:
.Range("P" & i).Formula = "=IF(O4<1,0,(L4-K4)+1)" (tôi chưa biết phải sửa như thế nào. Các số màu xanh sẽ thay đổi theo i (bằng i)

Cám ơn mọi người!
 
Lần chỉnh sửa cuối:
Bạn thử với macro riêng rẽ này xem sao:
Mã:
Sub SAVE()
Dim I As Long
I = Sheet2.Range("B1000000").End(xlUp).Row + 1

With Sheet2
    .Range("B" & I) = Sheet1.Range("B7")
    .Range("C" & I) = Sheet1.Range("B8")
    .Range("D" & I) = Sheet1.Range("C9")
    .Range("L" & I).Formula = "=TODAY()"
    GanTri I
End With
End Sub
PHP:
Sub GanTri(I As Long) '9        '
    Range("P" & I).Select '                      -5'
    ActiveCell.FormulaR1C1 = "=IF(R[" & 4 - I & "]C[-1]<1,0,R[" & 4 - I & "]C[-4]-R[" & 4 - I & "]C[-5]+1)"
    Range("P" & I + 1).Select
End Sub
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Bạn thử với macro riêng rẽ này xem sao:
Mã:
Sub SAVE()
Dim I As Long
I = Sheet2.Range("B1000000").End(xlUp).Row + 1

With Sheet2
    .Range("B" & I) = Sheet1.Range("B7")
    .Range("C" & I) = Sheet1.Range("B8")
    .Range("D" & I) = Sheet1.Range("C9")
    .Range("L" & I).Formula = "=TODAY()"
    GanTri I
End With
End Sub
PHP:
Sub GanTri(I As Long) '9        '
    Range("P" & I).Select '                      -5'
    ActiveCell.FormulaR1C1 = "=IF(R[" & 4 - I & "]C[-1]<1,0,R[" & 4 - I & "]C[-4]-R[" & 4 - I & "]C[-5]+1)"
    Range("P" & I + 1).Select
End Sub



cám ơn chú nhưng ý con là các số màu xanh sẽ bằng với i (chạy theo biến i)
.Range("P" & i).Formula = "=IF(O4<1,0,(L4-K4)+1)"

ví dụ khi gán công thức vào P5 thì sẽ là "=IF(O5<1,0,(L5-K5)+1)"


Con còn 1 công thức dài ở cột Q nữa: =IF(P4<=3,O4*1%*P4,IF(M4>0,(N4-K4+1)*I4*(J4/30)+(L4-N4+1)*O4*(J4/30),O4*P4*(J4/30)))
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy thì càng đơn giản trong công thức hơn nữa là đằng khác: Thay vì 4 - I, giờ chỉ là I mà thôi
Còn công thức ở cột 'Q' thì bạn thử chỉnh lại tự ên 1 lúc xem sao.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Vậy thì càng đơn giản trong công thức hơn nữa là đằng khác: Thay vì 4 - I, giờ chỉ là I mà thôi

Con sửa lại như vậy rồi mà nó ra không đúng (chỉ số trong hàm IF nó luôn gấp đôi biến i),

Ví dụ đang gán cho P5 thì nó ra công thức =IF(O10<1,0,(L10-K10)+1
cho P6 thì nó ra công thức =IF(O12<1,0,(L12-K12)+1

con gửi file đính kèm chú xem giúp.
 

File đính kèm

Upvote 0
Mã:
Sub SAVE()
Dim i As Long
i = Sheet2.Range("B1000000").End(xlUp).Row + 1

With Sheet2
.Range("B" & i) = Sheet1.Range("B7")
.Range("C" & i) = Sheet1.Range("B8")
.Range("D" & i) = Sheet1.Range("C9")
.Range("L" & i).Formula = "=TODAY()"

End With
End Sub

Tôi đang tập viết code và viết một đoạn lưu dữ liệu như trên nhưng tới phần chèn công thức tôi chưa biết phải viết như thế nào để nó chạy theo biến i. Nhờ mọi người giúp tôi sửa code dưới này như thế nào để nó chạy theo biến i

Cụ thể, dòng code tiếp theo là chèn công thức tại cột P:
.Range("P" & i).Formula = "=IF(O4<1,0,(L4-K4)+1)" (tôi chưa biết phải sửa như thế nào. Các số màu xanh sẽ thay đổi theo i (bằng i)

Cám ơn mọi người!
Bạn nhập công thức trên vào ô P4, sau đó dùng bộ thu Macro sẽ có công thức trong VBA như ý
 
Upvote 0
Web KT

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

Back
Top Bottom