Đánh công thức trong VBA

Liên hệ QC

Ng_Duy_Long

Thành viên mới
Tham gia
7/2/07
Bài viết
47
Được thích
24
Các bạn cho mình hỏi: làm sao để đánh công thức trong VBA dạng: Range("E18").FormulaR1C1 = "=SUM(R[-x]C:R[-y]C)" (với x = 9, y = 1 chẳng hạn)
 
Các bạn cho mình hỏi: làm sao để đánh công thức trong VBA dạng: Range("E18").FormulaR1C1 = "=SUM(R[-x]C:R[-y]C)" (với x = 9, y = 1 chẳng hạn)
R là row, C là column
Giá trị trong cặp ngoặc [] là khoản cách (số dòng, số cột) của vùng tham chiếu đối với ô chứa công thức. Ví dụ R[4]C[5] là tham chiếu đến ô cách ô chứa công thức 4 dòng và 5 cột. Nếu tham chiếu cùng dòng (cột) thì bỏ []. Ví dụ RC[3] là tham chiếu đến ô cùng dòng với ô chứa công thức nhưng cách ô chứa công thức 3 cột.
Để tham chiếu đến một ô (vùng) cố định thì RxCy. Ví dụ R3C2 là ô có dòng 3, cột 2 là ô B3.
Nếu bạn thấy khó khăn thì dùng chức năng Record Macro để lấy công thức.
 
Upvote 0
Ý tôi là làm thế nào khi x hoặc y thay đổi thì Range("E18").FormulaR1C1 = "=SUM(R[-x]C:R[-y]C)" cũng thay đổi theo.
 
Upvote 0
Ý tôi là làm thế nào khi x hoặc y thay đổi thì Range("E18").FormulaR1C1 = "=SUM(R[-x]C:R[-y]C)" cũng thay đổi theo.
Nếu gõ công thức trong cell của sheet thì bạn gõ như thế nào!? Có thể chẳng cần phức tạp như vậy, đại khái là:
PHP:
Dim iStart as Long, iEnd as Long
iStart=1: iEnd=9
Range("E18").value="=SUM(A" & iStart & ":A" & iEnd & ")"

Bạn thử xem.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn đến đây tham khảo trước xem sao

http://giaiphapexcel.com/forum/showthread.php?t=26466#38

PHP:
Sub CongNo(KhHg As String)
 Dim Rng As Range, sRng As Range, tRng As Range
 Dim Sh As Worksheet, Sh0 As Worksheet
 Dim MyAdd As String:                              Dim Rws As Long
 
 Set Sh0 = Sheets("CSDL")
 Set Rng = Sh0.Range(Sh0.[E1], Sh0.[e65500].End(xlUp))
 Set Sh = Sheets("Form")  '*'
 
 Rws = Sh.[AC2].Interior.ColorIndex '*'
 Sh.[AB2].Resize(, 10).Interior.ColorIndex = IIf(Rws < 42, Rws + 1, 34) '*'
 
 Set sRng = Rng.Find(KhHg, , xlFormulas, xlWhole)
 If Not sRng Is Nothing Then
   MyAdd = sRng.Address
   Do
      Sh.[Ae65500].End(xlUp).Offset(1, -2).Resize(, 9).Value = _
         sRng.Offset(, -2).Resize(, 9).Value   '*''*'
      Set sRng = Rng.FindNext(sRng)
   Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
 End If
 
 Set tRng = Sh.[Ae65500].End(xlUp)   '*'
 tRng.Offset(1).FormulaR1C1 = "=TCong"
 tRng.Offset(1).Resize(, 6).Font.Bold = True
 If tRng.Offset(-1).Value <> tRng.Offset(1).Value Then
   Rws = tRng.Row - tRng.Offset(-1, -1).End(xlUp).Row + 1
   tRng.Offset(1, 1).FormulaR1C1 = "=SUM(R[-" & Rws & "]C:R[-1]C)"
   tRng.Offset(1, 1).AutoFill Destination:=tRng.Offset(1, 1).Resize(, 3)
   tRng.Offset(1, 5).FormulaR1C1 = "=SUM(R[-" & Rws & "]C:R[-1]C)"
 Else
   tRng.Offset(1, 1).FormulaR1C1 = "=SUM(R[-1]C)"
   tRng.Offset(1, 5).FormulaR1C1 = "=SUM(R[-1]C)"
 End If
 tRng.CurrentRegion.Offset(, 3).NumberFormat = "#,##0"
 Sh.Select
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom