由于工作需要,小试了一下excel的vbs,还蛮好用的,就是又要接触新语言。其实吧,以前也学过vb所以入门很快,就不算什么了。

先来说下需求吧,很简单,就是有一个工作表需要重排,按照模板的需要进行生成。

比如有一个电话表,有姓名和电话。现在要按照部门来分类,已经有一个部门人员姓名的模板了,现在只需要把电话表的对应姓名的电话,填到第二个部门人员姓名的模板就可以了。

下面是写的一段代码,电话默认在第四列,填到第二个表的第五列。假设表最大行数有700行,从第二行开始匹配。第四行为姓名列。

Private Sub CommandButton1_Click()
'使用要点,需要注意4、5列为同样的单元格式,不要有文本和数字穿插

Dim icell As Integer
Dim icell2 As Integer
icell2 = 2

For icell = 2 To 700

    '如果为空,则跳过
    If Sheet2.Cells(icell2, 4).Value = "" Then
        icell2 = icell2 + 1
        If icell2 = 700 Then
        Exit For
        End If
    End If

    If Sheet1.Cells(icell, 4).Value = "" Then
        icell = icell + 1
        If icell = 700 Then
        Exit For
        End If
    End If

    '如果姓名相同,把原姓名标红,表示已经填到模板表中
    If Sheet1.Cells(icell, 4).Value = Sheet2.Cells(icell2, 4).Value Then
        Sheet1.Cells(icell, 5).Font.Color = -16776961 '颜色 红
        '给模板表赋值
        Sheet2.Cells(icell2, 5).Value = Sheet1.Cells(icell, 5).Value
        '模板表行数加一
        icell2 = icell2 + 1
        '电话表回退
        icell = 2
    End If
Next icell

End Sub