以前用过VB和VBS语言,这是头一次接触VBA语言,也就是Visul Basic for Application,是excel的宏所使用的一种语言。 研究这个的目的,是为了解决一个同事在表格编制上的问题,简要介绍如下: A列是各个公司名称,B列是项目或者合同的编号,C列是结余款数额。因为结余款数额有的公司有所变动,所以就把变动后的这个文件复制到原excel文件的D、E、F列,对前后文件进行比对,以找出有所变动的部分。 上午查了半天的资料,模仿着一位网友的命令编制了如下命令: Private Function FillValue()
For i = 1 To 100 '逐行循环,从第1行至第100行;为防止遗漏数据,可更改为更大的数值
strA = Worksheets("sheet1").Cells(i, 1).Value '得到第i行第1列的字符
strB = Worksheets("sheet1").Cells(i, 2).Value '得到第i行第2列的字符
If Worksheets(1).Cells(i,1).Value="" Then '如果遇到空行,则退出循环
Exit For
End If
If strB = strA Then '如果该行两列内容相同,则在该行第三列中插入相同内容
Worksheets("sheet1").Cells(i, 3).Value = Worksheets("sheet1").Cells(i, 2).Value
End If
Next '进行下一次循环,也就是i+1,对下一行进行判断
End Function 该命令的使用方法介绍: 第一步:打开一个欲处理的excel文件如下图所示: 
第二步:如上图所示,选中左上角A1单元格,点击主菜单栏 工具->宏 ->Visual Basic编辑器,也可以使用快捷键 Alt+F11,打开VB编辑器。 第三步:双击VB编辑器左侧上方二级子目录下的Sheet1(Sheet1),打开代码编辑窗口,并将上面的代码复制进去。VB编辑器如下图所示: 
第四步,点击VB编辑器菜单 运行—>运行宏,或使用快捷键 F5。宏的执行结果在前面的excel文件里显示,如下图所示:

从上图可以看出,第三行A、B两列的内容不同,因此没有内容被赋值到C列对应的单元格中。该代码执行效果良好。 使用下面的代码也可以。就是在第一行插入一行对最大行数赋值的代码,运行该宏的时候,要先手动输入欲处理的最大行数,点击确定后就会出现结果。遇到空行退出循环的那两行命令在这里用不上,所以被去掉了。
Private Function FillValue()
x = InputBox("请在此处输入末行号") '弹出一个文本框,以在此输入需处理的表格的行数
For i = 1 To x '逐行循环,从第1行至第x行
strA = Worksheets("sheet1").Cells(i, 1).Value '得到第i行第1列的字符
strB = Worksheets("sheet1").Cells(i, 2).Value '得到第i行第2列的字符
If strB = strA Then '如果该行两列内容相同,则在该行第三列中插入相同内容
Worksheets("sheet1").Cells(i, 3).Value = Worksheets("sheet1").Cells(i, 2).Value
End If
Next '进行下一次循环,也就是i+1,对下一行进行判断
End Function 下图是运行时弹出的对话框: 
以上为转载;我改进了一下: 代码如下: Private Function FillValue()
x = InputBox("请在此处输入末行号") '弹出一个文本框,输入需处理的表格的总行数
For i = 1 To x
strA = Worksheets("sheet1").Cells(i, 1).Value '得到第i行第1列的字符
For j = 1 To x '逐行循环,从第1行至第x行
strB = Worksheets("sheet1").Cells(j, 3).Value '得到第j行第3列的字符
If strB = strA Then '如果两列内容相同,则在i行第5列中插入相同内容,并在第i行第6列中插入第4列中的收盘价
Worksheets("sheet1").Cells(i, 5).Value = Worksheets("sheet1").Cells(i, 1).Value
Worksheets("sheet1").Cells(i, 6).Value = Worksheets("sheet1").Cells(i, 4).Value
End If
Next
Next '进行下一次循环,也就是i+1,对下一行进行判断
End Function
运行前: 
运行后:

|