Đưa hàm vào sub() và lấy giá trị

Liên hệ QC

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ữ
Cháu nhờ các Bác và các Anh Chị viết giúp như file đính kèm ạ
 

File đính kèm

  • Cho hàm vào sub().xlsb
    17.2 KB · Đọc: 18
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) :rolleyes:
Ví dụ Sumifs cho bạn:
Application.WorksheetFunction.SumIfs(Range("$M$15:$O$17"),Range("$M$11:$O$13"),Range("$I$17"))
 
Upvote 0
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) :rolleyes:
Ví dụ Sumifs cho bạn:
Application.WorksheetFunction.SumIfs(Range("$M$15:$O$17"),Range("$M$11:$O$13"),Range("$I$17"))
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ơ.
Anh nghiên cứu giúp em với anh nhé.
 
Upvote 0
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 :velho:
 
Upvote 0
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 :velho:
Chịu anh đó, nó có mấy trăm cell thì anh viết hàng trăm cell hở?
Như vậy thì em mới cần phải hỏi anh và mọi người chứ.
 
Upvote 0
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 :beee:

1634878252126.png
 
Upvote 0
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 :beee:

View attachment 268141
Hi hi....... em có diễn giải bằng công thức rùi mà
Thế thì anh xem quy luật của công thức đó và cho vào vòng lặp giúp em với
Cái này thì em cũng mường tượng được ra nhưng chỉ tội em không biết viết code mà thoi.
 
Upvote 0
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.
 

File đính kèm

  • Cho hàm vào sub() (1).xlsb
    20.5 KB · Đọc: 8
Upvote 0
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.
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)
 
Upvote 0
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)
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ì.
 
Upvote 0
Góp vui.
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
Hy vọng là không có lỗi.
 
Upvote 0
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ì.
Vâng ạ
hi hi hi......
Bài này là Hàm Sumifs nó thực tế mà anh
Bài đã được tự động gộp:

Góp vui.
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
Hy vọng là không có lỗi.
Em cảm ơn anh rất nhiều ạ
Đúng chuẩn chỉ luôn anh oi.
 
Upvote 0
Góp vui.
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
Hy vọng là không có lỗi.
Mã:
ArrDK = Range("I15:J17").Value
 R = UBound(ArrDK)
 ReDim Arr(1 To R, 1 To R * 2)
Số cột kết quả đâu có liên quan gì đến số dòng điều kiện
 
Upvote 0
Mã:
ArrDK = Range("I15:J17").Value
 R = UBound(ArrDK)
 ReDim Arr(1 To R, 1 To R * 2)
Số cột kết quả đâu có liên quan gì đến số dòng điều kiện
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 oi
Mã:
ArrDK = Range("I15:J17").Value
 R = UBound(ArrDK)
  ReDim Arr(1 To R, 1 To C * sVung)
  Trong đó:
  sVung = 3
  C = UBound(ArrDK, 2)
 
Upvote 0
Web KT
Back
Top Bottom