2017-05-14 68 views
0

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

最近,我的团队不得不与其他团队分享这些数据,并为他们授予文件权限。这个团队不是一个报告团队,所以他们有这种习惯用编辑公式来编辑单元格,并使其不能正常工作。

我想知道是否有人能够帮助我,试图找出一个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是价值,我们手动输入其他四个值由公式填充。

+0

soooooooo你试过了什么?幸运的是,这很容易:D –

+0

到目前为止,从我所能找到的地方来看,我只能看到宏的“切换”或“选择”功能,但这些并不是我所追求的,因为它需要我将第一个字段的所有300多个可能条目添加到列表中,以便从中选择。到目前为止,实际的公式正在工作,我已经设置了适当的位置..我只是希望用宏替换它们,因为它们似乎运行时不会减慢工作表本身的进程 – Agnistu

回答

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(,))" 

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

相关问题