这么简单的过程,还‘智能’呢…… -_-!!! 好象用 Excel公式都能搞定的。 用VBA也很好解决,楼主参考一下这个代码: ' 这是处理活动工作表的代码 ' 要处理任意工作表,自己进行适当修正 Private Sub Main() Dim arrNameBuf$(), lNameCnt&, lBegin& Dim i&, k&, strTemp$ lNameCnt = WorksheetFunction.Count(Range("A:A")) ReDim arrNameBuf(lNameCnt) lBegin = 1 ' 数据从第1行开始 k = 0 ' 读取B列所有姓名 For i = lBegin To lNameCnt + lBegin - 1 k = k + 1 arrNameBuf(k) = Cells(i, 2).Text Next ' 从D列姓名查找对应序号 For i = lBegin To lNameCnt + lBegin - 1 strTemp = Cells(i, 4).Text For k = 1 To lNameCnt If (strTemp = arrNameBuf(k)) Then Exit For Next If (k > lNameCnt) Then Cells(i, 3).FormulaR1C1 = "×" ' D列的姓名在B列中没有 Else Cells(i, 3).FormulaR1C1 = k End If Next End Sub
好象用 Excel公式都能搞定的。
用VBA也很好解决,楼主参考一下这个代码:
' 这是处理活动工作表的代码
' 要处理任意工作表,自己进行适当修正
Private Sub Main()
Dim arrNameBuf$(), lNameCnt&, lBegin&
Dim i&, k&, strTemp$ lNameCnt = WorksheetFunction.Count(Range("A:A"))
ReDim arrNameBuf(lNameCnt)
lBegin = 1 ' 数据从第1行开始
k = 0
' 读取B列所有姓名
For i = lBegin To lNameCnt + lBegin - 1
k = k + 1
arrNameBuf(k) = Cells(i, 2).Text
Next
' 从D列姓名查找对应序号
For i = lBegin To lNameCnt + lBegin - 1
strTemp = Cells(i, 4).Text
For k = 1 To lNameCnt
If (strTemp = arrNameBuf(k)) Then Exit For
Next
If (k > lNameCnt) Then
Cells(i, 3).FormulaR1C1 = "×" ' D列的姓名在B列中没有
Else
Cells(i, 3).FormulaR1C1 = k
End If
Next
End Sub