第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
按你的要求修改后发给你了。本回答被提问者采纳
第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