在Excel中select一个特定的单元格

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

例如:如果我有(在第一张)雇员工资和他的号码,并在第二张也。 我想编写代码,在第二张表中find雇员编号,并根据第二张表中所列的工资改变工资。

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

工作表Sheet1:

     A B C D
 1名称编号工资NewWage
 ---------------------------------
 2 Adam 111 1000.00 [xxxx]
 3布拉德222 1300.00
 4 Charly 333 2000.00

Sheet2中:

     ABC
 1姓名号码工资
 -----------------------
 2亚当111 1100.00
 3 Brad 222 1400.00
 4 Charly 333 2100.00

[xxxx]的公式是:

 = VLOOKUP(B2; Sheet 2中B:!℃; 2; FALSE)

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

确保Sheet2中的值按员工编号sorting,否则VLOOKUP()不会find它们。 阅读VLOOKUP()的帮助页面以获取更多详细信息。

你可以使用.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 

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

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

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

实际上,MATCH语句在工作表2的列B中查找与员工ID(B2)完全匹配的行。 INDEX然后将这一点抵消到表2中列C的新工资存储位置。