A列为编号,B列为用户名,D列为与B列排序不一致的用户名,用VBA根据A、B两列,在C列中自动填充D列用户的编号。
A         B               C                D
1        张三             3              王五
2        赵四             5               马二               
3        王五             2               赵四
4        李六             1               张三
5        马二             4               李六
                 自动填充的编号

解决方案 »

  1.   

    这么简单的过程,还‘智能’呢…… -_-!!!
    好象用 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
      

  2.   

    C2填入公式=VLOOKUP(D2,IF({1,0},$B$2:$B$6,$A$2:$A$6),2,FALSE)。下拉即可。