在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的新工资存储位置。