在四个Excel公式中使用VBA创建宏

时间:2017-05-14 13:50:08

标签: excel vba excel-vba

我正在研究如何改进每天全天更新的Excel文件。目前,我将工作表设置为具有四个索引匹配公式,以自动填充每次在第2列(B)中输入一个特定值时输入的一些数据。

最近,我的团队不得不通过授予他们对文件的权限来与其他团队共享此数据。这个团队不是一个报告团队,因此他们养成了使用公式编辑单元格并使事情无法正常工作的坏习惯。

我想知道是否有人能够帮助我尝试提出一个可以按相同顺序集成这些公式的MACRO,这样公式就不需要直接在工作簿上,也可能需要编辑。

我比较新的宏并且还没有构建这样的宏。

公式设置如下,并且工作表的名称与Sheet2匹配:

=IFERROR(IF(LEFT(C394,2)="19",INDEX(Sheet2!A:T,MATCH(C394,Sheet2!D:D,0),1),IF(LEFT(C394,1)="3",INDEX(Sheet2!A:T,MATCH(C394,Sheet2!H:H,0),1),INDEX(Sheet2!A:T,MATCH(C394,Sheet2!J:J,0),1))),"")
=IFERROR(IF(LEFT(C394,2)="19",INDEX(Sheet2!A:T,MATCH(C394,Sheet2!D:D,0),3),IF(LEFT(C394,1)="3",INDEX(Sheet2!A:T,MATCH(C394,Sheet2!H:H,0),3),INDEX(Sheet2!A:T,MATCH(C394,Sheet2!J:J,0),3))),"") 
=IFERROR(IF(LEFT(C394,2)="19",INDEX(Sheet2!A:T,MATCH(C394,Sheet2!D:D,0),5),IF(LEFT(C394,1)="3",INDEX(Sheet2!A:T,MATCH(C394,Sheet2!H:H,0),5),INDEX(Sheet2!A:T,MATCH(C394,Sheet2!J:J,0),5))),"")
=IFERROR(IF(LEFT(C394,2)="19",INDEX(Sheet2!A:T,MATCH(C394,Sheet2!D:D,0),6),IF(LEFT(C394,1)="3",INDEX(Sheet2!A:T,MATCH(C394,Sheet2!H:H,0),6),INDEX(Sheet2!A:T,MATCH(C394,Sheet2!J:J,0),6))),"")

结果看起来像这样:

9999999  Department 1   SMITH,ROBERT    JANE DOE    JOHN DOE

9999999我们手动输入的值是公式填充的其他四个值。

1 个答案:

答案 0 :(得分:0)

使用“一刀切”公式一次性编写所有公式。

range("d394:g394").formula = _
  "=IFERROR(INDEX(Sheet2!$A:$F, MATCH($C394, INDEX(Sheet2!$D:$J, 0, 7-(LEFT($C394,2)="19")*6-(LEFT($C394)="3")*2), 0), CHOOSE(COLUMN(A:A), 1, 3, 5, 6)),TEXT(,))"

您应该能够扩展该范围以包含更多行。

相关问题