首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >宏Excel -单元格的搜索范围

宏Excel -单元格的搜索范围
EN

Stack Overflow用户
提问于 2017-03-10 03:03:54
回答 1查看 110关注 0票数 0

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ACT001 | ACT002 | ACT003 | ADV001 | ADV002 | ADV003 | G      | H      | I 
------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------
       |        |        |        |        |        | ACT001 |        | 
------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------
       |        |        |        |        |        | ACT001 | ADV001 |
------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------
       |        |        |        |        |        | ACT003 | ADV002 | ADV003

我想通过一个宏来实现以下目标:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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公式来完成上述操作,但我希望使用宏来实现更快的方法。感谢您的帮助。谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-03-10 07:38:36

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

假设这是您的工作表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  |   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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
=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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
=IFNA(HLOOKUP(A$1,$G2:$I2,1,FALSE ),"-")

然后将其复制到A2:F4

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42709439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文