我正试图根据客户使用的产品归还潜在销售人员
我有一个工作簿,其中包含许多工作表。第一个工作表是一个摘要工作表,带有一个搜索字段和一个按钮,单击该按钮可从其他工作表返回特定的列数据。 其他工作表基于产品,我们有三个产品,等于三个工作表。每个工作表中的列都是相同的,不同产品的数据也不同。
已要求我在每个产品工作表中添加一个新列“销售人员”,目的是在执行新搜索时将数据拉到摘要工作表中。 我面临的问题是,当客户使用多种产品时,会有一位主要销售人员。尽管每种产品都有一个销售人员,但每种产品却有不同的人员,并且客户使用多个产品时,其中一名销售人员承担主要销售人员的角色
工作簿结构为 工作表1是摘要表,并将有一个新的列标题,称为“潜在销售人员” 工作表2用于Windows,销售人员是Jack 工作表3用于门,销售人员是Mary 工作表4用于瓷砖,销售人员是莎拉
返回正确的潜在销售人员的场景
1-客户产品清单=门窗 然后应找回的销售人员是杰克
2-客户产品清单=瓷砖和窗户 然后应找回的销售人员是莎拉
3-客户产品清单=窗户,门和瓷砖 然后应该找回的销售人员是莎拉
4-WHERE客户产品列表=单个产品 然后,检索到的销售人员的姓名应该是该工作表上“销售人员”列中的人员姓名
注意:每个工作表之间的通用链接是“客户ID”字段。这就是我们执行以下查询时可以查看客户拥有的所有产品的原因。
理想情况下,我需要的是灵活的东西,这样就无需将人的名字硬编码到代码中来检索潜在销售人员
下面是我为在当前工作表中搜索而编写的代码。它的工作原理很棒,只需要找到一种添加以上内容的方法即可! 预先感谢。
Option Compare Text
Sub OptionCompareText()
End Sub
Sub SearchMultipleSheets()
'The 5 in the line below is the maximum array value which further down is the arr(i, 5) = ws.Name entry
Dim arr(999, 5) As Variant, r As Range
Dim ws As Worksheet, i As Integer, s As String
Dim lastrow As Long
lastrow = Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row
Set r = Sheets ("Sheet2").Range("A2:A & Lastrow)
With Sheets(1)
s = Range("c1").Value
.Range("a3").Resize(.UsedRange.Rows.Count, .UsedRange.Columns.Count).ClearContents
End With
For Each ws In Worksheets
If ws.Name <> Sheets(1).Name Then
With ws
For Each r In .Range("a2", .Range("a" & .Rows.Count).End(xlUp))
If r.Value & r.Offset(0, 1).Value & r.Offset(0, 2).Value & r.Offset(0, 3).Value Like "*" & s & "*" Then
arr(i, 0) = ws.Name
'arr(i, 1) = r.Value
arr(i, 1) = r.Offset(0, 1).Value
arr(i, 2) = r.Offset(0, 2).Value
arr(i, 3) = r.Offset(0, 3).Value
arr(i, 4) = r.Offset(0, 4).Value
i = i + 1
End If
Next r
End With
End If
Next ws
With Sheets(1)
.Range("a3").Resize(i, 6).Value = arr
End With
End Sub