为excel创建循环宏

时间:2015-08-11 13:20:29

标签: excel vba excel-vba

我正在尝试创建一个循环宏来节省项目工作期间的时间。

我需要做的是复制表1中A列中的数字,然后找到表2中A列中的数字(这些是同一文档中的单独表格)之后我需要复制C列中的文本对应的行,然后将其粘贴到工作表1的C列中。

对不起,这可能没有多大意义......

我没有多少使用VBA的经验,所以任何帮助都会受到赞赏。

3 个答案:

答案 0 :(得分:1)

我认为你不需要VBA。如果您想做我认为您想做的事情,请使用

=VLOOKUP(Sheet1!A1, Sheet2!A:C, 3)

将其放入C1(表1)中,然后将其复制下来。

Documentation for VLOOKUP here.基本上,(Sheet1!A1)是你正在寻找的(Sheet2!A:C),你正在寻找它,(3)是A范围内的列:您从中获取信息的C(C列)。如果由于某种原因,您在B列或C列中的数据与A中的数据相匹配(使VLOOKUP无用),您可以使用:

=INDEX(Sheet2!C:C,MATCH(Sheet1!A1,Sheet2!A:A,0))

相反,它只搜索单个列。

Tips for INDEX MATCH here.

答案 1 :(得分:1)

这听起来像是VLOOKUP

的工作

说明Sheet1上的数据如下所示:

+-------+--------+-------+
| Col A | Col. B | Col C |
+-------+--------+-------+
|   1   |        |       |
+-------+--------+-------+
|   2   |        |       |
+-------+--------+-------+
|   3   |        |       |
+-------+--------+-------+

您想在Sheet2中查找值1,2,3等,这可能如下所示:

+-------+--------+-------+
| Col A | Col. B | Col C |
+-------+--------+-------+
|   1   |        |   A   |
+-------+--------+-------+
|   2   |        |   B   |
+-------+--------+-------+
|   3   |        |   C   |
+-------+--------+-------+

如果我正确理解了您的问题,您希望在Sheet1的A列中查找值,并将Sheet2列C中的相应匹配项返回到Sheet1的C列。< / p>

Sheet1的C列中添加VLOOKUP公式,如下所示:

=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])

lookup_value 是您要查找的内容,在这种情况下是Sheet1列A的值。

table_array 是您要查找以查找lookup_value的单元格。使用此查找时,此table_array中最左侧的列将用作要匹配的列。在这种情况下,它是'Sheet2'!A1:C3

如果找到匹配项, col_index_num 是您要返回的相应列。在这种情况下,它是第3列。

最后,如果您想要完全匹配, [range_lookup] 应设置为FALSE;如果您想要返回第一个近似匹配,则应设置为TRUE

因此,在这种情况下,我们要将VLOOKUP公式添加到Sheet1的C列的第一行,如下所示:

+-------+--------+-----------------------------------------+
| Col A | Col. B |                  Col C                  |
+-------+--------+-----------------------------------------+
|   1   |        | =VLOOKUP(A2,'Sheet2'!$A$1:$C$3,3,FALSE) |
+-------+--------+-----------------------------------------+
|   2   |        |                                         |
+-------+--------+-----------------------------------------+
|   3   |        |                                         |
+-------+--------+-----------------------------------------+

按Enter键获取结果。将公式拖到列的其余部分。

几点说明:

  • 如果找不到Sheet2的C列中的匹配项,则该函数返回#N/A错误,您可以使用IFERROR函数
  • 来处理该错误
  • VLOOKUP仅返回Sheet2的C列中的第一个匹配项,如果有多个匹配项,则需要考虑调整查找以使其足够具体,以使每个查找只有一个对应的值

您可以在MSDN上阅读有关VLOOKUP功能的内容,并查看一些教程here。特别是MSDN文章的常见问题和最佳实践部分。

答案 2 :(得分:0)

同意kfitcher,vba并不需要。 vlookup的替代方法是索引/匹配,如下所示

=INDEX(Sheet2!C:C,MATCH(Sheet1!A2,Sheet2!A:A,0))