2017-05-14 72 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(,))" 

您應該能夠擴大該範圍以包含更多行。

相關問題