hongphuong1997
Thành viên tiêu biểu
- Tham gia
- 12/11/17
- Bài viết
- 771
- Được thích
- 321
- Giới tính
- Nữ
Hơi khó hiểu nhỉ, nếu vậy thì Record Macro thôiNhờ thầy cô và các anh chị giúp đỡ "Viết code nhưng vẫn giữ nguyên hàm Sumifs() của Excel"
Em xin cảm ơn!
Em ghi được Macro như này rùi chị ui.Hơi khó hiểu nhỉ, nếu vậy thì Record Macro thôi
Em cảm ơn anhMuốn Sub thì tặng bạn cái này.
PHP:Sao chép.
Public Sub GPE()
Dim Dic As Object, sArr(), dArr(), I As Long, Tem As String
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Range([B5], [B5].End(xlDown)).Resize(, 5).Value2
ReDim dArr(1 To UBound(sArr, 1), 1 To 1)
For I = 1 To UBound(sArr, 1)
Tem = sArr(I, 1)
If Not Dic.Exists(Tem) Then
Dic.Add Tem, sArr(I, 5)
Else
Dic.Item(Tem) = Dic.Item(Tem) + sArr(I, 5)
End If
Next I
For I = 1 To UBound(sArr, 1)
dArr(I, 1) = Dic.Item(sArr(I, 1))
Next I
[H5].Resize(I - 1) = dArr
Set Dic = Nothing
End Sub
Bài đã được tự động gộp:
Không hiểu bạn làm gì nhưng đại khái như thế này cho dễ hiểuNhờ thầy cô và các anh chị giúp đỡ "Viết code nhưng vẫn giữ nguyên hàm Sumifs() của Excel"
Em xin cảm ơn!
Sub aa()
Range("E31") = "=SUMIFS($E$26:$G$28,$E$21:$G$23,$C$20)"
End Sub
vSum = Application.WorksheetFunction.SumIfs(RngSum, Rng1, vData1, Rng2, vData2, Rng3, vData3)
Bạn viết theo dạng nàyEm ghi được Macro như này rùi chị ui.
Chị xem có cách nào viết thành code giúp em với nhé.
Sub Macro1()
Range("E31").FormulaR1C1 = "=SUMIFS(R26C5:R28C7,R21C5:R23C7,R20C3)"
Range("E32").FormulaR1C1 = _
"=SUMIFS(R26C5:R28C7,R15C5:R17C7,R14C3,R21C5:R23C7,R20C3)"
Range("E33").FormulaR1C1 = _
"=SUMIFS(R26C5:R28C7,R9C5:R11C7,R8C3,R15C5:R17C7,R14C3,R21C5:R23C7,R20C3)"
Range("E34").FormulaR1C1 = _
"=SUMIFS(R26C5:R28C7,R3C5:R5C7,R2C3,R9C5:R11C7,R8C3,R15C5:R17C7,R14C3,R21C5:R23C7,R20C3)"
Range("E36").FormulaR1C1 = "=SUMIFS(R26C5:R28C7,R21C5:R23C7,R21C3)"
Range("E37").FormulaR1C1 = _
"=SUMIFS(R26C5:R28C7,R15C5:R17C7,R15C3,R21C5:R23C7,R21C3)"
Range("E38").FormulaR1C1 = _
"=SUMIFS(R26C5:R28C7,R9C5:R11C7,R9C3,R15C5:R17C7,R15C3,R21C5:R23C7,R21C3)"
Range("E39").FormulaR1C1 = _
"=SUMIFS(R26C5:R28C7,R3C5:R5C7,R3C3,R9C5:R11C7,R9C3,R15C5:R17C7,R15C3,R21C5:R23C7,R21C3)"
End Sub
Cảm ơn chị!Bạn viết theo dạng này
Sub ChayDuLieu()
With Sheet1.Range("E31")
.Formula = "=SUMIFS(R26C5:R28C7,R21C5:R23C7,R20C3)"
End With
End Sub
Em cảm ơn anh!Bạn cũng có thể dùng for - next với Worksheetfunction, cấu trúc của nó sẽ giống như khi bạn dùng hàm ngoài cell.
Mã:vSum = Application.WorksheetFunction.SumIfs(RngSum, Rng1, vData1, Rng2, vData2, Rng3, vData3)
Sửa lại công thức trên sao cho là 1 rồi dùng thêm Resize nữa là đượcCảm ơn chị!
Nhưng chị ui thế làm sao để lấy được công thức của ô "E32;E33;E34" Mà không phải nhập bằng tay.
Có khả năng phải thêm vòng lặp vào mới được chị à.
Bài đã được tự động gộp:
Em cảm ơn anh!
Ý của em là làm sao để không phải nhập công thức vào từng ô từ "E31:E34" như công thức trong ví dụ anh à.
Mà làm cách nào đó nó tự động lấy được kết quả như các công thức trong ví dụ.
Không được chị ơiSửa lại công thức trên sao cho là 1 rồi dùng thêm Resize nữa là được