hongphuong1997
Thành viên tiêu biểu
- Tham gia
- 12/11/17
- Bài viết
- 770
- Được thích
- 321
- Giới tính
- Nữ
Có phải ý bạn là cách sử dụng hàm trong VBA không?Cháu nhờ các Bác và các Anh Chị viết giúp như file đính kèm ạ
application.WorksheetFunction.SumIf(...)
nhéChuẩn luôn anh oiCó phải ý bạn là cách sử dụng hàm trong VBA không?
Nếu đúng thì bạn sử dụngapplication.WorksheetFunction.SumIf(...)
nhé
Anh oi, viết như này thì em cũng biết roài, nhưng em muốn viết vòng lặp vào bài toán thực tế của em cơ.Bạn xem bài này nhé, tự tìm hiểu sẽ nhớ lâu và sâu hơn.
Về cách chuyền tham số nó sẽ giống với hàm đặt excel (Nếu mình nhớ không nhầm)
Ví dụ Sumifs cho bạn:
Application.WorksheetFunction.SumIfs(Range("$M$15:$O$17"),Range("$M$11:$O$13"),Range("$I$17"))
Chịu anh đó, nó có mấy trăm cell thì anh viết hàng trăm cell hở?Mình thuộc kiểu chậm hiểu, xem file của bạn rồi nên chả hiểu gì.
Mục đích của bạn đưa hàm vào sub thì viết cho mỗi Cell một WorksheetFunction là xong rồi.
Bác @VetMini cơm chưa no, rượu chưa say, hj
Hi hi....... em có diễn giải bằng công thức rùi màCho mình hỏi:
Nếu là hàng trăm cell thì công thức tổng quát của nó là gì?
Bạn vứt 3 cái mảng mà không nói gì đến điều kiện của mảng (Có tăng, giảm hay cố định như thế nào)
Nếu bài viết của bạn đầy đủ các điều kiện thì sẽ chẳng ai nói bạn viết từng cell cả.
Tôi đọc thì hiểu là bạn muốn đưa cái hàm sumifs và một cái Sub() cho Cells (6x3) để ra kết quả.
Tại sao bạn chỉ viết như vậy mà yêu cầu người ta phải hiểu cả những điều bạn bạn không viết.
Bạn chịu tôi thì tôi cũng chịu lại bạn thôi
View attachment 268141
Cháu cảm ơn Bác ạNếu dữ liệu chỉ có bi nhiêu thì xem file này.
Chờ các bạn khác "túm gọn lại".
Lu bu hơn nữa thì thua.
Em muốn học code, thì đầu tiên là những bài đơn giản để hiểu đã. Thứ nữa là nên chọn những bài gần gũi với thực tế làm việc và có tính ứng dụng, lúc đó mới có hứng thú mà học.Cháu cảm ơn Bác ạ
Code dài quá Bác nhỉ?
hi hi........ bài toán này của cháu khó hở Bác?
à nhưng mờ cháu muốn dùng WorksheetFunction cho hàm Sumifs cơ Bác oi (Không phải là viết code đâu)
Sub PHUONG_HONG()
Dim DK As Range, VungTinh As Range, VungDK As Range, VungDK1 As Range, VungDK2 As Range
Dim R&, I&, J&, K&, n&,C&
Dim Arr(), ArrDK()
With Sheet1
C=13
ArrDK = Range("I15:J17").Value
R = UBound(ArrDK)
ReDim Arr(1 To R, 1 To R * 2)
For J = 1 To UBound(ArrDK, 2)
For I = 1 To R
n = n + 1
K = C+(I-1)*3
Set VungTinh = .Cells(15, K).Resize(3, 3)
Set VungDK = .Cells(11, K).Resize(3, 3)
Set VungDK1 = .Cells(7, K).Resize(3, 3)
Set VungDK2 = .Cells(3, K).Resize(3, 3)
Arr(1, n) = Application.SumIfs(VungTinh, VungDK, ArrDK(3, J))
Arr(2, n) = Application.SumIfs(VungTinh, VungDK, ArrDK(3, J), VungDK1, ArrDK(2, J))
Arr(3, n) = Application.SumIfs(VungTinh, VungDK, ArrDK(3, J), VungDK1, ArrDK(2, J), VungDK2, ArrDK(1, J))
Next I
Next J
Sheet1.Range("M30").Resize(R, n)) = Arr
End With
End Sub
Vâng ạEm muốn học code, thì đầu tiên là những bài đơn giản để hiểu đã. Thứ nữa là nên chọn những bài gần gũi với thực tế làm việc và có tính ứng dụng, lúc đó mới có hứng thú mà học.
Bài này nó không thực tế lắm và khá rối rắm. Các thầy viết ra cho em rồi thấy nó dài, nó rối lại không chịu suy nghĩ. Cuối cùng muối bỏ biển, người giúp mất thời gian, người nhờ không học được cái gì.
Em cảm ơn anh rất nhiều ạGóp vui.
Hy vọng là không có lỗi.Mã:Sub PHUONG_HONG() Dim DK As Range, VungTinh As Range, VungDK As Range, VungDK1 As Range, VungDK2 As Range Dim R&, I&, J&, K&, n&,C& Dim Arr(), ArrDK() With Sheet1 C=13 ArrDK = Range("I15:J17").Value R = UBound(ArrDK) ReDim Arr(1 To R, 1 To R * 2) For J = 1 To UBound(ArrDK, 2) For I = 1 To R n = n + 1 K = C+(I-1)*3 Set VungTinh = .Cells(15, K).Resize(3, 3) Set VungDK = .Cells(11, K).Resize(3, 3) Set VungDK1 = .Cells(7, K).Resize(3, 3) Set VungDK2 = .Cells(3, K).Resize(3, 3) Arr(1, n) = Application.SumIfs(VungTinh, VungDK, ArrDK(3, J)) Arr(2, n) = Application.SumIfs(VungTinh, VungDK, ArrDK(3, J), VungDK1, ArrDK(2, J)) Arr(3, n) = Application.SumIfs(VungTinh, VungDK, ArrDK(3, J), VungDK1, ArrDK(2, J), VungDK2, ArrDK(1, J)) Next I Next J Sheet1.Range("M30").Resize(R, n)) = Arr End With End Sub
Góp vui.
Hy vọng là không có lỗi.Mã:Sub PHUONG_HONG() Dim DK As Range, VungTinh As Range, VungDK As Range, VungDK1 As Range, VungDK2 As Range Dim R&, I&, J&, K&, n&,C& Dim Arr(), ArrDK() With Sheet1 C=13 ArrDK = Range("I15:J17").Value R = UBound(ArrDK) ReDim Arr(1 To R, 1 To R * 2) For J = 1 To UBound(ArrDK, 2) For I = 1 To R n = n + 1 K = C+(I-1)*3 Set VungTinh = .Cells(15, K).Resize(3, 3) Set VungDK = .Cells(11, K).Resize(3, 3) Set VungDK1 = .Cells(7, K).Resize(3, 3) Set VungDK2 = .Cells(3, K).Resize(3, 3) Arr(1, n) = Application.SumIfs(VungTinh, VungDK, ArrDK(3, J)) Arr(2, n) = Application.SumIfs(VungTinh, VungDK, ArrDK(3, J), VungDK1, ArrDK(2, J)) Arr(3, n) = Application.SumIfs(VungTinh, VungDK, ArrDK(3, J), VungDK1, ArrDK(2, J), VungDK2, ArrDK(1, J)) Next I Next J Sheet1.Range("M30").Resize(R, n)) = Arr End With End Sub
ArrDK = Range("I15:J17").Value
R = UBound(ArrDK)
ReDim Arr(1 To R, 1 To R * 2)
Hi hihi... Bác @HieuCD anh @HUONGHCKT bị nhầm chỗ này đó nhưng thực tế là anh ấy viết vội nên bị sai đó Bác oiSố cột kết quả đâu có liên quan gì đến số dòng điều kiệnMã:ArrDK = Range("I15:J17").Value R = UBound(ArrDK) ReDim Arr(1 To R, 1 To R * 2)
ArrDK = Range("I15:J17").Value
R = UBound(ArrDK)
ReDim Arr(1 To R, 1 To C * sVung)
Trong đó:
sVung = 3
C = UBound(ArrDK, 2)