Giúp Công Thức Hoặc Code Sum Vlookup Từng số

Chia sẻ bởi:hands
★★★★★
Quảng cáo

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 đỡ
228

Thử

=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ự
Khóa học SprinGO phù hợp

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
★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Bình luận

Quảng cáo

Cũ vẫn chất

Xem thêm