宏Excel - 搜索单元格范围

时间:2017-03-10 03:03:54

标签: excel excel-vba excel-formula match vba

如果有人能帮助我解决以下问题,将不胜感激。我在一行中有一系列单元格,并希望将每个单元格匹配到同一行中的相应列(具有相同的标题)。所有数据都在同一张纸上。

为便于参考,我有以下格式的数据

ACT001 | ACT002 | ACT003 | ADV001 | ADV002 | ADV003 | G      | H      | I 
------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------
       |        |        |        |        |        | ACT001 |        | 
------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------
       |        |        |        |        |        | ACT001 | ADV001 |
------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------
       |        |        |        |        |        | ACT003 | ADV002 | ADV003

我希望用宏来实现以下目标:

ACT001 | ACT002 | ACT003 | ADV001 | ADV002 | ADV003 | G      | H      | I 
------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------
ACT001 |        |        |        |        |        | ACT001 |        | 
------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------
ACT001 |        |        | ADV001 |        |        | ACT001 | ADV001 |
------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------
       |        |ACT003  |        | ADV002 | ADV003 | ACT003 | ADV002 | ADV003

正如您所看到的,我想将列G-I中的单元格与相应的列和同一行中的单元格进行匹配。 以上只是一个小提取物。实际的表格更大。

我可以使用一系列IF语句和FIND公式来完成上述操作,但希望能够更快地使用宏。感谢任何帮助。 感谢

1 个答案:

答案 0 :(得分:0)

我认为使用公式比使用VBA脚本要快得多。即使是公式也不是很复杂。

假设这是你的表

  |   A    |   B    |   C    |   D    |   E    |   F    |   G    |   H    |   I   
  | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------
1 | ACT001 | ACT002 | ACT003 | ADV001 | ADV002 | ADV003 | G      | H      | I 
2 |        |        |        |        |        |        | ACT001 |        | 
3 |        |        |        |        |        |        | ACT001 | ADV001 |
4 |        |        |        |        |        |        | ACT003 | ADV002 | ADV003

1。使用IF语句

的解决方案

将以下公式写入单元格A2

=IF($G:$G=A$1,$G:$G,IF($H:$H=A$1,$H:$H,IF($I:$I=A$1,$I:$I,"-")))

然后将其复制到A2:F4

2。使用HLOOKUP

的解决方案

将以下公式写入单元格A2

=IFNA(HLOOKUP(A$1,$G2:$I2,1,FALSE ),"-")

然后将其复制到A2:F4

无论您拥有多少列,第二种解决方案都应该是相同的长度。每增加一列,第一个就会变长。

请注意:在这些公式中正确使用$修复某些行/列,可以将一个公式复制到整个范围内。