hongphuong1997
Thành viên tiêu biểu
- Tham gia
- 12/11/17
- Bài viết
- 727
- Được thích
- 293
- Giới tính
- Nữ
Dùng code này xem sao bạn. kết quả điền vào b18Nhờ các thấy cô và các bạn trên diễn đàn làm giúp như file em đính kèm
Em cảm ơn
Sub Giatri_()
Dim Rng As Variant
Dim Res() As Long
Dim i As Long, j As Long
Rng = Sheet1.Range("b2").CurrentRegion
ReDim Res(1 To UBound(Rng) - 1, 1 To UBound(Rng, 2))
For j = 1 To UBound(Rng, 2)
For i = 2 To UBound(Rng)
Res(i - 1, j) = Rng(i - 1, j) + Rng(i, j)
Next i
Next j
Sheet1.Range("b18").Resize(UBound(Res), UBound(Res, 2)) = Res
End Sub
Em cảm ơn anh @CHAOQUAYDùng code này xem sao bạn. kết quả điền vào b18
Mã:Sub Giatri_() Dim Rng As Variant Dim Res() As Long Dim i As Long, j As Long Rng = Sheet1.Range("b2").CurrentRegion ReDim Res(1 To UBound(Rng) - 1, 1 To UBound(Rng, 2)) For j = 1 To UBound(Rng, 2) For i = 2 To UBound(Rng) Res(i - 1, j) = Rng(i - 1, j) + Rng(i, j) Next i Next j Sheet1.Range("b18").Resize(UBound(Res), UBound(Res, 2)) = Res End Sub
Đã dùng code để tính toán thì cần gì phải dùng hàm sẵn có của Excel nữa?Em cảm ơn anh @CHAOQUAY
Anh ui, nhưng em muốn lấy giá trị mà vẫn dùng hàm thì làm cách nào hở anh? (Tức là vẫn dùng hàm sum()) anh à
Vâng ạĐã dùng code để tính toán thì cần gì phải dùng hàm sẵn có của Excel nữa?
Còn nếu bạn vẫn muốn dùng hàm thì cứ thử record macro với 2 thao tác: Nhập công thức cho vùng --> Copy và Paste values vào vùng vừa nhập công thức.
Chính code ở bài #2 khắc phục vấn đề chạy chậm rồi đấy, cho vào mảng và tính toán trong đó, rồi gán kết quả lại lên sheet là ngon lành nhất rồi. Vậy mà bạn lại không muốn dùng, lại muốn dùng công thức chứ bộ.Vâng ạ
Nhưng mà vùng công thức lớn quá thì nó chạy chậm anh à
Như code của em làm trong bài thì phải dùng toàn bộ bằng công thức sau đó mới dán .Value
Chậm lắm anh ui
Vâng ạ!Chính code ở bài #2 khắc phục vấn đề chạy chậm rồi đấy, cho vào mảng và tính toán trong đó, rồi gán kết quả lại lên sheet là ngon lành nhất rồi. Vậy mà bạn lại không muốn dùng, lại muốn dùng công thức chứ bộ.
Ví dụ như thế này:Vâng ạ!
Nhưng mờ em đang vọc vạch VBA nên em muốn dùng công thức cho nó tiện anh à
Bởi vì trình độ viết code của em chưa thể làm được những điều đó
Em có đọc mấy bài của anh về lấy giá trị của công thức roài
Nhưng với trường hợp của em thì làm như nào hở anh
nghiaphuc
Sub Test()
Dim i As Long
For i = 2 To 14 Step 6
With Sheet1.Cells(11, i).Resize(6, 4)
.FormulaR1C1 = "=SUM(R[-9]C:R[-8]C)"
.Value = .Value
End With
Next
End Sub
Em cảm ơn anhVí dụ như thế này:
Mã:Sub Test() Dim i As Long For i = 2 To 14 Step 6 With Sheet1.Cells(11, i).Resize(6, 4) .FormulaR1C1 = "=SUM(R[-9]C:R[-8]C)" .Value = .Value End With Next End Sub
Anh ơi code của anh chạy được có 1 mảng, còn mấy mảng khác thì như nào hở anh?Thay câu này
Bằng câu nàyMã:Res(i - 1, j) = Rng(i - 1, j) + Rng(i, j)
Mã:Res(i - 1, j) = WorksheetFunction.Sum(Rng(i - 1, j), Rng(i, j))
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2