当前位置:编程学习 > VB >>

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)。下拉即可。 --------------------编程问答--------------------
引用 2 楼  的回复:
C2填入公式=VLOOKUP(D2,IF({1,0},$B$2:$B$6,$A$2:$A$6),2,FALSE)。下拉即可。
这个好,不过我平时都是用一楼的方法,没办法,二楼这个我还不怎么熟 --------------------编程问答-------------------- 二楼好方法,用vba麻烦了。
补充:VB ,  VBA
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,