在Excel中选择特定单元格

在Excel中选择特定单元格,excel,vba,Excel,Vba,我有两张Excel表格。第一个有一些数据。第二张已更新数据,应用于更改第一页上的特定信息 例如:如果我有(第一张)员工工资和他的号码,第二张也有。我想编写代码,在第二张表中查找员工编号,并根据第二张表中规定的工资更改工资。您不需要VBA,这可以通过一个简单的单元格函数完成:VLOOKUP() 表1: A B C D 1 Name No. Wage NewWage --------------------------------- 2 Ada

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


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

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

表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 这将从第二张表中查找每个人的新工资。把公式填好


确保表2中的值按员工编号排序,否则
VLOOKUP()
将找不到它们。通读了解更多详细信息。

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

表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 这将从第二张表中查找每个人的新工资。把公式填好

确保表2中的值按员工编号排序,否则
VLOOKUP()
将找不到它们。通读了解更多详细信息。

您可以使用。查找:

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范围
dim以布尔形式结束
设置r=1.范围(“A1”)
做
如果r.值=完成=真
虽然还没有完成
“用r做东西
您可以使用。查找:

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范围
dim以布尔形式结束
设置r=1.范围(“A1”)
做
如果r.值=完成=真
虽然还没有完成
“用r做东西

如果员工编号不在第二张表中排序,您也可以将“匹配”与“索引”结合使用:

以托马拉克为例,[xxxx]的公式为:

=VLOOKUP(B2;Sheet2!B:C;2;FALSE) =索引(表2!C:C;匹配(B2;表2!B:B;0)


实际上,MATCH语句会在第2页的B列中找到与员工ID(B2)完全匹配的行。INDEX然后将该行作为一个偏移量放入第2页的C列中,在C列中存储新工资。

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

以托马拉克为例,[xxxx]的公式为:

=VLOOKUP(B2;Sheet2!B:C;2;FALSE) =索引(表2!C:C;匹配(B2;表2!B:B;0)


实际上,MATCH语句在第2页的B列中查找与员工ID(B2)完全匹配的行。然后索引将该行作为一个偏移量放入存储新工资的第2页的C列中。

必须是=VLOOKUP(B2;Sheet2!B:C;2;FALSE)…要返回第二列;如果要将公式转换为值,请复制所有公式(ctrl-C),然后粘贴特殊/粘贴值以消除指向外部文件的链接,这可能会造成干扰,特别是如果您想将此文件转发给其他用户,我几乎总是检查以确保VLOOKUP找到一个值,否则它将返回错误。=如果(iError(VLOOKUP(B2,Sheet2!B:C,2,False)),“未找到”,VLOOKUP(B2,Sheet2!B:C,2,False))此外,如果您只希望精确匹配,请确保每个表中都有一个唯一的值要映射到,并且始终对VLOOKUP的最后一个参数使用False。如果不使用False,它将查找最接近的匹配。必须是=VLOOKUP(B2;Sheet2!B:C;2;False)…要返回第二列;如果要将公式转换为值,请复制所有公式(ctrl-C),然后粘贴特殊/粘贴值以消除指向外部文件的链接,这可能会造成干扰,特别是如果您想将此文件转发给其他用户,我几乎总是检查以确保VLOOKUP找到一个值,否则它将返回错误。=如果(iError(VLOOKUP(B2,Sheet2!B:C,2,False)),“未找到”,VLOOKUP(B2,Sheet2!B:C,2,False))此外,如果您只需要精确匹配,请确保每个表中都有一个唯一的值要映射到,并且始终对VLOOKUP的最后一个参数使用False。如果不使用False,它将查找最接近的匹配。