Cách viết hàm R1C1 trong VBA tìm dòng cuối

Liên hệ QC

LamNA

Thành viên tích cực
Tham gia
3/6/14
Bài viết
897
Được thích
720
Giới tính
Nam
Nghề nghiệp
Quản Lý Cửa Hàng
Chào anh chị
Em đang thử tập viết hàm R1C1 đang gặp vấn đề chưa giải quyết được, nhờ anh chị hỗ trợ giúp em nhe
- Làm sao để gán 1 dòng và lấy dòng cuối cùng trong hàm sumifs và cách viết

Mã:
'Lỗi '
Sub TEST()
Dim I As Integer
Dim Sale As Range, NH As Range, T As Range, DT As Range
Sale = Sheet1.Range("A65536").End(xlUp).Row
NH = Sheet1.Range("B65536").End(xlUp).Row
T = Sheet1.Range("C65536").End(xlUp).Row
DT = Sheet1.Range("D65536").End(xlUp).Row
With [B3:B13]
.FormulaR1C1 = "=SUMIFS(SHEET1!R" & DT & "C4,SHEET1!R[" & Sale & "]C1,RC1,SHEET1!R[" & T & "]C3,R1C2)"
.Value = .Value
End With
End Sub

'Test 2 chạy ok nhưng lấy hết 1 cột'
Sub TEST2()

With [B3:B13]
.FormulaR1C1 = "=SUMIFS(SHEET1!RC4,SHEET1!RC1,RC1,SHEET1!RC3,R1C2)"
.Value = .Value
End With
End Sub
 

File đính kèm

  • Test R1C1.xlsb
    18.7 KB · Đọc: 20
Anh cho em hỏi thêm điều kiện theo từng tháng, từ B1:M1 tương ứng tháng 1 đến tháng 12
thì viết thế nào nhờ anh hỗ trơ để em áp dụng về sau nha
Theo dạng hàm R1C1 thì ta được
Mã:
  With [B2:M11]
.FormulaR1C1 = "=SUMIFS(SHEET1!RC4,SHEET1!RC1,RC1,SHEET1!RC3,R1C)"
.Value = .Value
End With
End Sub
Em cám ơn

View attachment 213157
Mã Sale của bạn không "chuẩn" nên code của mình cũng không "chuẩn"
Nếu mã Sale không trùng thì cách xử lý sẽ khác và "chuẩn" hơn
 
Upvote 0
Thử code
Mã:
Sub TEST2()
  Dim sArr(), dArr(), Res(), iKey As String, thang As Long, i As Long
  thang = Range("B1").Value
  sArr = Range("A3", Range("A1000000").End(xlUp)).Value
  ReDim Res(1 To UBound(sArr), 1 To 3)
  With Sheets("Sheet1")
    dArr = .Range("A3", .Range("D1000000").End(xlUp)).Value
  End With
  With CreateObject("scripting.dictionary")
    For i = 1 To UBound(dArr)
      If thang = dArr(i, 3) Then
        iKey = dArr(i, 1)
        If Len(iKey) > 0 Then
          .Item(iKey) = .Item(iKey) + dArr(i, 4)
        End If
      End If
    Next i
    For i = 1 To UBound(sArr)
      Res(i, 1) = .Item(sArr(i, 1))
      Res(i, 2) = Res(i, 1)
      Res(i, 3) = Res(i, 1)
    Next i
  End With
  Range("B3:D3").Resize(UBound(Res)) = Res
End Sub
Em cám ơn anh đã hỗ trợ nhe
 
Upvote 0
Web KT
Back
Top Bottom