在Excel中选择特定单元格

时间:2009-11-09 13:31:42

标签: excel vba

我有两张Excel表格。第一个有一些数据。第二个已更新数据,应该用于更改第一张表上的特定信息。

例如:如果我(在第一张表格中)有员工工资和他的号码,也在第二张表中。我想编写代码,在第二张表中找到员工编号,并根据第二张表中规定的工资更改工资。

3 个答案:

答案 0 :(得分:4)

您不需要VBA,可以通过简单的单元格函数来完成:VLOOKUP()

Sheet 1中:

    A      B      C         D
1 Name    No.   Wage      NewWage
---------------------------------
2 Adam    111   1000.00   [xxxx]
3 Brad    222   1300.00
4 Charly  333   2000.00

Sheet 2中:

    A      B      C
1 Name    No.   Wage
-----------------------
2 Adam    111   1100.00
3 Brad    222   1400.00
4 Charly  333   2100.00

[xxxx]的公式为:

=VLOOKUP(B2;Sheet2!B:C;2;FALSE)

这会从第二张表中查找每个人的新工资。填写公式。

确保Sheet2中的值按员工编号排序,否则VLOOKUP()将找不到它们。请仔细阅读the help page for VLOOKUP()

答案 1 :(得分:0)

你可以使用.find:

dim findHere as Range
dim result as Range

set findHere = Sheet2.Range("A:A")
set result = findHere.Find("EmployeeCode")

if not result is nothing    'you get 'nothing' back if it can't find it.
result.offset(0, 2).Value = "New Wage Here"
end if

或者你可以遍历单元格(如果可能的话,我会避免使用这个单元格,如果不禁用屏幕更新和自动计算,它可能会很慢)

Dim r as Range
dim finished as boolean
set r = Sheet1.Range("A1")
do
if r.Value = <ID> finished = true

while not unfinished

' do stuff with r

答案 2 :(得分:0)

如果员工编号不会在第二张表中排序,您也可以将MATCH与INDEX结合使用:

使用Tomalak的例子,[xxxx]的公式为:

= INDEX(Sheet 2中C:℃; MATCH(B2; Sheet 2中B:!B; 0)

实际上,MATCH语句在工作表2的B列中找到与员工ID完全匹配的行(B2)。然后,INDEX将此偏移到表2的C列中,其中存储了新工资。