VBA智能填充
A列为编号,B列为用户名,D列为与B列排序不一致的用户名,用VBA根据A、B两列,在C列中自动填充D列用户的编号。
A B C D
1 张三 3 王五
2 赵四 5 马二
3 王五 2 赵四
4 李六 1 张三
5 马二 4 李六
自动填充的编号 --------------------编程问答-------------------- 这么简单的过程,还‘智能’呢…… -_-!!!
好象用 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
--------------------编程问答-------------------- C2填入公式=VLOOKUP(D2,IF({1,0},$B$2:$B$6,$A$2:$A$6),2,FALSE)。下拉即可。 --------------------编程问答-------------------- 这个好,不过我平时都是用一楼的方法,没办法,二楼这个我还不怎么熟 --------------------编程问答-------------------- 二楼好方法,用vba麻烦了。
补充:VB , VBA