我被excel杀死了,我不能100%确定它能完全满足我的需要。我尝试了各种各样的功能,可以接近,但没有一个是完美的。我以电子表格uploaded为例。我有一张邮箱,后面是一个单元格,其中包含有权访问邮箱的用户。单元格中有0到5个用逗号分隔的用户。第二张表有一个用户列表。我需要的是一种解析第一张纸的方法,要么在第一张纸上突出显示,要么复制到另一张纸上;所有关联用户在第二个单元格中匹配的所有邮箱都显示在第二个工作表上。
我拥有的真实世界表有超过2500个邮箱,其中有多达205个(少至0个)相关用户,因此我迫切需要一种机械过滤工作表的方法。我试图过滤所有关联用户在第二张纸上的邮箱。
我尝试过使用vlookup,索引/匹配以及其他一些内容,而且似乎将其绊倒的是使用逗号分隔。使用" "& cell_i' m_looking_for&" "没有回报,所以我猜我需要尝试别的东西。我还有单独单元格中所有用户的工作表。
答案 0 :(得分:0)
我下载了你的工作表并创建了一个模块,其中包含以下功能:
Function mymailboxes(who As Range, lookup As Range)
Dim myRow As Range
For Each myRow In lookup
If InStr(myRow.Cells(1, 2).Value, who.Value) > 0 Then
myReturn = myReturn & "," & myRow.Cells(1, 1).Value
End If
Next
'cut off the first ,
myReturn = Right(myReturn, Len(myReturn) - 1)
mymailboxes = myReturn
End Function
然后在表2中,Cell E2我给出了以下公式:=mymailboxes(A2, Sheet1!A1:B50)
,它给了我以下结果:mailbox1,mailbox2,mailbox4,mailbox8,mailbox12,mailbox17,mailbox21,mailbox25,mailbox28,mailbox34,mailbox39,mailbox41,mailbox42,mailbox44,mailbox49,mailbox50
我希望这会有所帮助。
要获取无效用户列表,以下功能将有所帮助。
Function get_invalid_users(users As Range, validusers As Range)
Dim myRow As Range
myusers = Split(users, ",")
myReturn = ""
For Each user In myusers
is_valid_user = False
'Guilty until proven innocent
For Each myRow In validusers
If myRow.Cells(1, 1).Value = user Then
is_valid_user = True
'Proven innocent, break out of the loop, no double jeopardy.
Exit For
End If
Next
If is_valid_user = False Then
myReturn = myReturn & "," & user
End If
Next
If Len(myReturn) > 0 Then
myReturn = Right(myReturn, Len(myReturn) - 1)
Else
myReturn = ""
End If
get_invalid_users = myReturn
End Function
表单1,公式为=get_invalid_users(B2, Sheet2!$A$1:$A$3)
的单元格C2返回zx1234