Giúp Công Thức Hoặc Code Sum Vlookup Từng số
Em chào đại gia đình. Em cần công thức dò VLookup từng số sau đó Sum lại như hình mô tả bên dưới. Rất mong đại gia đình giúp đỡ
228Thử
=SUMPRODUCT(SUMIF($B$4:$B$12,–MID(E4,ROW(INDIRECT("1:"&LEN(E4))),1),$C$4:$C$12))
Công thức cho excel 365
=SUMPRODUCT(SUMIF($B$4:$B$12,–MID(E4,SEQUENCE(LEN(E4)),1),$C$4:$C$12))
Option Explicit
Sub add()
Dim i&, j&, ma As Range, kq, st As String
kq = Range("E4:F" & Cells(Rows.Count, "E").End(xlUp).Row).Value
Set ma = Range("B4:B" & Cells(Rows.Count, "B").End(xlUp).Row)
For i = 1 To UBound(kq)
st = ""
For j = 1 To Len(kq(i, 1))
st = IIf(st = "", "", st & ",") & Mid(kq(i, 1), j, 1)
Next
st = "{" & st & "}"
kq(i, 2) = Evaluate("=SUM(SUMIF(" & ma.Address & "," & st & "," & ma.Offset(, 1).Address & "))")
Next
Range("E4:F100000").ClearContents
Range("E4:F" & UBound(kq)).Value = kq
End Sub
www.giaiphapexcel.com/diendan/threads/gi%C3%BAp-c%C3%B4ng-th%E1%BB%A9c-ho%E1%BA%B7c-code-sum-vlookup-t%E1%BB%ABng-s%E1%BB%91.161869/#post-1080902
Ok bạn, mình cũng học bạn, cũng gọi là 'góp vui' :
Sub Lumcode() Dim q As Object Dim w As Variant, e As Variant Dim r As String, t As String Dim y As Long, u As Integer Const i As Long = 100000 Const o As String = "Scripting.Dictionary" w = Sheet1.Range("B4:C12").Value Set q = CreateObject(o) For y = LBound(w, 1) To UBound(w, 1) Step 1 r = CStr(w(y, 1)) If Not q.exists(r) Then q.Add r, w(y, 2) End If Next y w = Sheet1.Range("E4:F" & Sheet1.Range("E" & i).End(xlUp).Row).Value ReDim e(1 To UBound(w, 1), 1 To UBound(w, 2)) For y = LBound(w, 1) To UBound(w, 1) Step 1 t = w(y, 1) For u = Len(t) To 1 Step -1 r = Mid(t, u, 1) If q.exists(r) Then e(y, 1) = w(y, 1) e(y, 2) = e(y, 2) + q.Item(r) End If Next u Next y Sheet1.Range("E4").Resize(i, UBound(e, 2)).ClearContents Sheet1.Range("E4").Resize(UBound(e, 1), UBound(e, 2)).Value = e End Sub
Phòng xa khi có nhiều hơn 1 khoảng trắng
=SUMPRODUCT(ISNUMBER(SEARCH("*"&$B$4:$B$12&"*","*"&E4&"*"))*$C$4:$C$12)
Anh thấy anh @Phuocam đã giải quyết tại bài #14 rồi, rất hay.
Chỉ muốn trao đổi với em và dặn em cần suy nghĩ thêm về hàm khi mình quyết định dùng:
- Vì B4:B12 chứa ký tự số, không phải chữ cái, nên dùng Find() thay Search() cũng được.
- Em sợ rằng B4:B12 là số nên không thể tìm trong chuỗi ghép như: 12, 23, 123…, phải không?! Lo "bò trắng răng" rồi :).
- Nếu B4:B12 là số, thì Search() hay Find() đều chơi tuốt, em cứ thử định dạng cho B4:B12 là số, còn bên kia định dạng chuỗi như: " 1 2 ", "1 2 3",.. chỉ dùng: …FIND($B$4:$B$12,E4)… xem sao.
- Còn nếu B4:B12 là chuỗi, thì em sợ nó có 1 hoặc "1 vài ngàn, vài triệu…" khoảng trắng đằng trước/sau của ký tự số, thì thay vì dùng "", hoặc "sao xiếc, sao xẹt" gì gì đó mất công, em có thể dùng hàm Trim() là gọn rồi, còn dãy bên kia (cột E) thì kệ..'ta'.. nó, có khoảng trắng hay không! em chẳng cần buồn quan tâm đến.
- Cho nên B4:B12 dù là số hay chuỗi, nếu em không chắc lắm, thì em cứ việc dùng thêm FIND(TRIM($B$4:$B$12),E4), hoặc đơn giản hơn: FIND(–$B$4:$B$12,E4) là được rồi.
Lâu lâu, tám với em 1 chút cho vui hén.
Thân
/-*+//-*+//-*+/
www.giaiphapexcel.com/diendan/threads/gi%C3%BAp-c%C3%B4ng-th%E1%BB%A9c-ho%E1%BA%B7c-code-sum-vlookup-t%E1%BB%ABng-s%E1%BB%91.161869/post-1081211
Cho em chơi với:
=SUMPRODUCT($C$4:$C$12,LEN(E4)-LEN(SUBSTITUTE(E4,$B$4:$B$12,"")))
Hahaha …
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
Bình luận