Giúp hàm dò tìm SĐT ra Tên người theo Danh sách

  • Thread starter Thread starter acrox84
  • Ngày gửi Ngày gửi
Liên hệ QC

acrox84

Thành viên hoạt động
Tham gia
22/3/08
Bài viết
116
Được thích
31
Như tiêu đề, mình gửi đính kèm file có 2 Sheet:
+Sheet NV, Tên và SĐT khách hàng --> Cần dựa vào SĐT bên Sheet DS để tự điền đúng tên NV Giới Thiệu.
+Sheet DS, gồm danh sách nhân viên và SĐT khách quen của NV đó.
Cảm ơn các bác ra tay hỗ trợ^^
2021-07-04 16-59-08.jpg
 

File đính kèm

Như tiêu đề, mình gửi đính kèm file có 2 Sheet:
+Sheet NV, Tên và SĐT khách hàng --> Cần dựa vào SĐT bên Sheet DS để tự điền đúng tên NV Giới Thiệu.
+Sheet DS, gồm danh sách nhân viên và SĐT khách quen của NV đó.
Cảm ơn các bác ra tay hỗ trợ^^
Sheet NV, E4
Mã:
=INDEX(DS!$A$1:$E$1,MAX(INDEX((DS!$A$2:$E$20=C4)*COLUMN(DS!$A$1:$E$1),,)))
Các số điện thoại sheet DS phải là duy nhất
 
Bạn xài tạm cái này:
PHP:
Sub ThemSoDT()
 Dim Rng As Range, sRng As Range, Cls As Range
 Dim MyAdd As String
 
 Sheets("NV").Select
 With Sheets("DS")
    Set Rng = .[B2].CurrentRegion
    For Each Cls In Range([C4], [C4].End(xlDown))
        Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
        If sRng Is Nothing Then
            Cls.Offset(, 2).Value = "Nothing"
        Else
            MyAdd = sRng.Address
            Do
                Cls.Offset(, 2).Value = .Cells(1, sRng.Column).Value
                Set sRng = Rng.FindNext(sRng)
            Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
        End If
    Next Cls
 End With
End Sub
 
Sheet NV, E4
Mã:
=INDEX(DS!$A$1:$E$1,MAX(INDEX((DS!$A$2:$E$20=C4)*COLUMN(DS!$A$1:$E$1),,)))
Các số điện thoại sheet DS phải là duy nhất
mình áp công thức vào file chính, đảm bảo mỗi số ĐT là duy nhất, mà không hiểu sao chỉ đúng tới STT 9 (ô C12), từ ô C13 trở đi thì lại sai, sai nhiều nhất là ở NV A và NV E.
 
STTTÊN KHÁCHĐIỆN THOẠISỐ LẦN MUANV GIỚI THIỆU
1Khách 01096650111185NV A
2Khách 02098690011175NV E
3Khách 03033611811166NV A
4Khách 04083527111155NV C
5Khách 05032585311145NV B
6Khách 06084430011132NV A
7Khách 07091387711130NV B
8Khách 08094527811130NV A
9Khách 09091722311129NV B
10Khách 10097903711121Nothing
11Khách 11083737011118Nothing
12Khách 12097477711117Nothing
13Khách 13091821011115Nothing
14Khách 14082838211115Nothing
15Khách 15090879011113NV A
16Khách 16037716611112Nothing
17Khách 17083454911111NV B
18Khách 18083205511111NV A
19Khách 19036981911111Nothing
20Khách 20082749111110Nothing
 
Như tiêu đề, mình gửi đính kèm file có 2 Sheet:
+Sheet NV, Tên và SĐT khách hàng --> Cần dựa vào SĐT bên Sheet DS để tự điền đúng tên NV Giới Thiệu.
+Sheet DS, gồm danh sách nhân viên và SĐT khách quen của NV đó.
Cảm ơn các bác ra tay hỗ trợ^^
View attachment 261843
Mã:
E4 =IFERROR(INDEX(DS!$A$1:$E$1,INDEX(MAX((DS!$A$2:$E$20=C4)*COLUMN(DS!$A$1:$E$1)),)),"")
Sheet NV, E4
Mã:
=INDEX(DS!$A$1:$E$1,MAX(INDEX((DS!$A$2:$E$20=C4)*COLUMN(DS!$A$1:$E$1),,)))
Các số điện thoại sheet DS phải là duy nhất
Khách 19, 20, ... không tìm được nhân viên
 
Mã:
E4 =IFERROR(INDEX(DS!$A$1:$E$1,INDEX(MAX((DS!$A$2:$E$20=C4)*COLUMN(DS!$A$1:$E$1)),)),"")

Khách 19, 20, ... không tìm được nhân viên
Nếu không tìm thấy số điện thoại nào thì Max() trả về 0, mà Index(,0) sẽ trả về ô đầu tiên của vùng A1: E1. Phải cài bẫy lỗi:

=IFERROR(INDEX(DS!$A$1:$E$1,1/INDEX(1/MAX((DS!$A$2:$E$20=C13)*COLUMN(DS!$A$1:$E$1)),)),"")

Chúc anh ngày vui
/-*+//-*+//-*+/
 
Mã:
E4 =IFERROR(INDEX(DS!$A$1:$E$1,INDEX(MAX((DS!$A$2:$E$20=C4)*COLUMN(DS!$A$1:$E$1)),)),"")

Khách 19, 20, ... không tìm được nhân viên

Bổ sung giúp mình, không tìm thấy NV giới thiệu thì để ô trống hoặc chèn kí tư "x" vào không.
Hiện tại không tìm được NV thì công thức gán tên NV E vào hết nên chưa xài được.
Bài đã được tự động gộp:

Nếu không tìm thấy số điện thoại nào thì Max() trả về 0, mà Index(,0) sẽ trả về ô đầu tiên của vùng A1: E1. Phải cài bẫy lỗi:

=IFERROR(INDEX(DS!$A$1:$E$1,1/INDEX(1/MAX((DS!$A$2:$E$20=C13)*COLUMN(DS!$A$1:$E$1)),)),"")

Chúc anh ngày vui
/-*+//-*+//-*+/
đã thử và hiện ô trống rất nhiều ccđ.jpg
 
Lần chỉnh sửa cuối:
Bổ sung giúp mình, không tìm thấy NV giới thiệu thì để ô trống hoặc chèn kí tư "x" vào không.
Hiện tại không tìm được NV thì công thức gán tên NV E vào hết nên chưa xài được.

đã thử và hiện ô trống rất nhiều
Vậy thử thêm 2 công thức này xem sao:
Mã:
=IFERROR(INDEX(DS!$A$1:$E$1,INDEX(1/(1/MAX((DS!$A$2:$E$20=C4)*COLUMN(DS!$A$1:$E$1))),)),"")
Hoặc:
Mã:
=IFERROR(LOOKUP(2,1/MMULT(COLUMN(OFFSET($A$1,,,,19))^0,N(C4=DS!$A$2:$E$20)),DS!$A$1:$E$1),"")

Thân
 

File đính kèm

Vậy thử thêm 2 công thức này xem sao:
Mã:
=IFERROR(INDEX(DS!$A$1:$E$1,INDEX(1/(1/MAX((DS!$A$2:$E$20=C4)*COLUMN(DS!$A$1:$E$1))),)),"")
Hoặc:
Mã:
=IFERROR(LOOKUP(2,1/MMULT(COLUMN(OFFSET($A$1,,,,19))^0,N(C4=DS!$A$2:$E$20)),DS!$A$1:$E$1),"")

Thân
Cảm ơn bạn, mình áp thử công thức đầu, kéo xuống 100 dòng thử thì thấy chính xác rồi.
Chúc bạn đầu tuần vui vẻ :)
 
Web KT

Bài viết mới nhất

Back
Top Bottom