使用一个工作表中的值,检查另一个工作表上的值并返回到单元格

我有两个工作簿。 我们称之为“主”和“辅助”。

我正在写一个将在“Main”上运行的函数,并将使用“Aux”中的数据。

“主”在一个工作表上有一个人员列表。 对于每个人,我想检查工作手册“辅助”,这个人具有> 3级以上的技能,连接它们并在工作簿“主”上填充单元格。

这是迄今为止我写的代码。 问题是范围是指“主”工作簿,我想要的数据是“辅助”工作簿。

当“A”列具有“技术”

  • “辅助”书上的G列是每个人的名字。
  • “Aux”上的D列包含技能的名称
  • variablesdeb和deb2用于使用MsgBox进行debugging

码:

Public Function Arroz(name As String) As String Dim rngFound As Range Dim strFirst As String Dim strID As String Dim strDay As String Dim skillsAs String Dim deb As String Dim deb2 As String strID = "Person number one" strDay = "Technical" skills= "" Set rngFound = Workbooks("Aux.xlsx").Sheets("Skills Mao").Columns("G").Find(strID, Cells(Rows.Count, "G"), xlValues, xlWhole) If Not rngFound Is Nothing Then strFirst = rngFound.Address Do deb = Cells(rngFound.Row, "A").Text deb2 = Cells(rngFound.Row, "M").Value MsgBox deb MsgBox deb2 If LCase(Cells(rngFound.Row, "A").Text) = LCase(strDay) And Cells(rngFound.Row, "M").Value >= 4 Then skills = skills & Cells(rngFound.Row, "D").Text & " ," End If Set rngFound = Columns("G").Find(strID, rngFound, xlValues, xlWhole) Loop While rngFound.Address <> strFirst End If strLast = rngFound.Address Set rngFound = Nothing Arroz = competencies Exit Function End Function 

有人能帮我弄清楚我做错了什么吗?

你的问题是没有指定工作表的Cells的使用。 当你这样做的Cells将参考活动表,即“主”,因为你已经命名它。 尝试这样的事情:

 ' ------ More of your existing code above ------ strID = "Person number one" strDay = "Technical" skills= "" ' ----- My added snippit ----- Dim shAux as Worksheet Set shAux = Workbooks("Aux.xlsx").Sheets("Skills Mao") Set rngFound = shAux.Columns("G").Find(strID, shAux.Cells(Rows.Count, "G"), xlValues, xlWhole) 

然后使用shAux.Cells只要您希望单元格中的Cells代替Cells