我有一个很大的表格,里面有我们的临床医生提供的服务的清单。我还有一个单独的表,上面有临床医生的姓名、ID号和团队分配。问题是,Services表不包含我需要的Team列。
我想要一个VBA函数,它将查找Services表,并基于临床医生ID,将团队名称作为新的单元格插入到服务记录中。
在过去,我曾使用条件格式化来实现这一点,=ISNUMBER(MATCH(F1,TeamAClinicians,0))。其中,F1保存服务的临床医生ID,TeamAClinicians是临床医生/团队表上的临床医生ID的命名范围。然后,我将对每个团队重复此规则,然后在按颜色对表格进行排序后手动输入团队。
这是无效的,并且只适用于相对较小的表。一个自定义的VGA函数,我可以将表复制到它自己的列中,这将是无价的。
有什么想法吗?
编辑:如下所示,VLOOKUP是最好的选择。我最后使用了一行非常简单的代码:=vlookup( F1,ClinicianTable,3,FALSE),其中F1是包含员工ID的单元格,ClinicianTable是包含团队分配的命名表。
发布于 2015-09-09 00:15:05
如果你想使用excel VBA,你可以试试下面给出的代码。下面是说明性的样本表。您可以根据自己的实际情况修改程序。


尝试以下代码:
Sub Test()
Dim i As Long, j As Long, colStatus As Long, lastrowplus As Long, lastrowminus As Long
colStatus = 3 'your status column number
lastrowplus = Sheets("Sheet1").Cells(Sheets("Sheet1").Rows.Count, 1).End(xlUp).Row
lastrowminus = Sheets("Sheet2").Cells(Sheets("Sheet2").Rows.Count, 1).End(xlUp).Row
For i = 1 To lastrowplus
For j = 1 To lastrowminus
If Sheets("Sheet1").Cells(i, 1).Value = Sheets("Sheet2").Cells(j, 1).Value Then
Sheets("Sheet2").Cells(j, colStatus).Value = Sheets("Sheet1").Cells(i, colStatus).Value
End If
Next j
Next i
End Subhttps://stackoverflow.com/questions/32458954
复制相似问题