【发布时间】:2016-12-05 02:35:17
【问题描述】:
我尝试 VLOOKUP 但它只能返回 1 个值。我希望我的结果返回多封电子邮件,我的查找值是一个单元格中的多个名称。第一个单元格是我想与我的查找表匹配的值。
下面是我的查找表,每个人的电子邮件都在这里,但是我如何获得像 aa@g.vom;bb@g.com 这样的结果,所以我可以在 VBA 中使用更早的查找电子邮件自动发送提醒电子邮件?我怎样才能做到这一点?
Sub getEmails()
Dim toNames As Range
Set toNames = Range("J3:J500") ' names input by user
Dim names As Range
Set names = Range("Email!B3:C25") ' names range from lookup table from different worksheet
Dim splitNames
splitNames = Split(toNames, ",")
Dim selectedEmails As String
For i = 0 To UBound(splitNames)
findRange = names.Find(What:=splitNames(i), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
' if match found, get the email and store to selected emails variable
If Not findRange Is Nothing Then
selectedEmails = selectedEmails & Range("B" & findRange.Row) & ";"
End If
Next i
'output emails
Range("Q3:Q500") = selectedEmails
End Sub
【问题讨论】:
-
这正是我不想做的。我无法预测工作人员将来会写什么名字。所以我需要一个公式来查找值
-
我建议您在 VBA 的循环中执行多个 VLookup。因此,如果
Pui Kuan, Eric是输入字段,Split将其转换为单独的名称,对每个单独的名称执行 VLookups,然后连接结果。 -
你能告诉我上面编写的基于 VBA 的示例吗?谢谢