这个excel vba 小程序怎么写,在线等!!

有两个excel文件 ,其中一是存放原始数据用,有两列,第一列叫学号,第二列叫名称,如下
学号 名称
1 小明
3 小方
9 小海
11 小张
......

第二个excel文件是临时文件,只有1列学号,请问怎么写一个VBA程序,让这个表的第二列自动填写对应的姓名,姓名来自第一个表的数据
比如
学好 姓名
3 3对应的是小方
1
9
11
当我输入学好后,执行程序,对应的姓名自动填写,来自第一张表录入的姓名
谢谢大家了,这两张表可以放在一个文件里,不一定要两个文件。
我补充一下,要是第二列的数据全是=A列+C列的公式,但第2个sheet里A列和C列公式不同,,该怎么用vlookup呢?

第1个回答  2008-12-20
1.把要填写的表放在sheet1中(一二两列)
2.把来源表放在sheet2 中(一二两列)
3.从控件工具箱中 拖放一个按钮 在sheet1中
4.双击按钮,把下面的代码放在原有的两行之间,点击保存。
5.回到sheet1,然后取消按钮编辑状态(点控件工具箱上的笔)
6.点击按钮执行

For i = 2 To 500 '这个500是需要填写表的数据行数,只要大于你的数据行数就行,改小一点速度快些
For j = 2 To 500 '这个500是来源表的数据行数,只要大于你的数据的行数就行
If Sheet1.Cells(i, 1) = Sheet2.Cells(j, 1) Then
Sheet1.Cells(i, 2) = Sheet2.Cells(j, 2)
End If
Next
Next
第2个回答  2008-12-21
在表二(Sheet2)中的B1输入
=IF(A1<>"",VLOOKUP(A1,Sheet1!$A$1:$B$100,2,FALSE),"")
然后向下填充。

IF——当A1输入数据时,(B1)显示,否则不显示;
Sheet1!$A$1:$B$100——表二的A1查找的范围是表一的A1~B100,$A$1是绝对引用,当向下填充时,查找范围不变(B100是假设,最大可至Excel最末行,大概是2550吧,没试过);
2——是表示显示表一的第2列内容;
FALSE——参数,因表二排列顺序跟表一不同(不能用TRUE),只能由Excel在A1~A100中逐条查找。

补充:
你的第1行是输入“学号 名称”吧?
那么上面函数里把B1、A1等引用“第1行”地址改为“第2行”,并在B2输入函数。

另外,你说“第二列的数据全是=A列+C列的公式,但第2个sheet里A列和C列公式不同”。
函数VLOOKUP查找的是:用Sheet2中A1的数据去Sheet1中A1~B100里找对碰,如果Sheet2中A列公式在Sheet1中A1~B100中找不到对碰,则Sheet2中的B1显示“#N/A”(找不到)。至于Sheet2中C列,C列在上述没有比较(无关联)。
第3个回答  2008-12-22
Sub 写入()
Dim i, j
For i = 1 To 30 '假设表"sheet2"A列有数据少于30
sh2str = Sheets("sheet2").Cells(i, 1)
For j = 1 To 50 '假设表"sheet2"A列有数据少于50
If sh2str = Sheets("sheet1").Cells(j, 1) Then
Sheets("sheet2").Cells(i, 2) = Sheets("sheet1").Cells(j, 2)
Exit For
End If
Next
Next
End Sub

按你的要求修改后发给你了。本回答被提问者采纳
第4个回答  2008-12-19
不必用VBA程序,直接用vlookup即可,很简单.

在第二个表里B1中输入=VLOOKUP(Sheet2!A1,Sheet1!A:A,1,FALSE),下拉公式即可。

VLOOKUP 用法:http://zhidao.baidu.com/question/2541676.html

有问题留言我吧.
第5个回答  2008-12-21
假设:原始数据在Sheet1,临时数据在Shee2,同时Shee2内的第1列数据已填好,那么,运行以下宏则可以自动算出Shee2内的第2列的值:

至于你的补充,应该不会受到影响。

Sub 宏1()
' 宏1 Macro
' ljl88900 记录的宏 2008-12-21

Dim r1, c1, r2, c2
Dim i, j, Uc(26) As String
r1 = ActiveSheet.[A65536].End(xlUp).Row
r2 = Sheet1.[A65536].End(xlUp).Row
c2 = Sheet1.[IV1].End(xlToLeft).Column
For i = 1 To 26
Uc(i) = Chr(64 + i)
Next
For i = 1 To r1
Sheet2.Cells(i, 2) = "=VLOOKUP(" & Sheet2.Cells(i, 1) & ",Sheet1!A1:" & Uc(c2) & r2 & ",2,FALSE)"
Next
End Sub
相似回答