2016-12-05 94 views
1

我想在Excel中記錄我公式的宏,它給我一個語法錯誤。使用宏記錄器記錄長Excel公式的問題

這是公式:

=IF(AND(OR(B2="toola",B2="toola1",B2="toola2",B2="SFx200"),OR(H2="Q1",H2="Q2",H2="Q3",H2="Q4")),CONCATENATE(H2," "," ",IF(I2="p","pre","")," ","SFx","-",IF(A2="",0,A2)),IF(AND(OR(B2="toolb",B2="toolb1",B2="toolb2",B2="toolb3",B2="yoolb4",B2="toolb4",B2="toolb5",B2="toolb6",B2="toolb7",B2="toolb8",B2="toolb9",B2="toolb10",B2="toolb11",B2="toolb12"),OR(H2="Q1",H2="Q2",H2="Q3",H2="Q4")),CONCATENATE(H2," ",IF(I2="p","pre",""),"-"," ",IF(A2="",0,A2)),IF(AND(OR(B2="up",B2="up1",B2="up2",B2="up3",B2="up4",B2="up5",B2="Up6",B2="up7"),OR(H2="Q1",H2="Q2",H2="Q3",H2="Q4")),CONCATENATE(H2," ","UP","-",IF(A2="",0,A2))))) 

我知道這是很大的,但爲什麼不會宏錄製正常錄製呢?

回答

3

宏記錄器沒有用長公式,因爲它會在VB編輯器的行連續添加時覆蓋某些公式字符串。您需要自己編輯代碼或縮短公式 - 例如使用之類的東西OR(H2={"Q1","Q2","Q3","Q4"})而非OR(H2="Q1",H2="Q2",H2="Q3",H2="Q4")

此外,如果可能的替代是這樣的:

OR(B2="toolb",B2="toolb1",B2="toolb2",B2="toolb3",B2="yoolb4",B2="toolb4",B2="toolb5",B2="toolb6",B2="toolb7",B2="toolb8",B2="toolb9",B2="toolb10",B2="toolb11",B2="toolb12") 

與此

LEFT(B2,5)="toolb" 
+0

謝謝!我把它縮短了,現在它可以工作了! –

0

當你超過7次if excel不想工作。因此,你應該繞過它。用Select Case

或像這樣的東西,當嵌套ifs是一個公式: https://www.techonthenet.com/excel/macros/if_custom.php

,因爲你需要,可以上浮到儘可能多的cases。然後只需使用自定義公式。

+2

這是唯一真正在版本的Excel 2007 – Rory

+0

之前並不知道。儘管如此,超過7個ifs在公式中確實很多,應該考慮類似的解決方法。否則,在Excel中調試真的很難。然後你會得到一個類似於悟空的公式 - https://i.stack.imgur.com/oCe3a.jpg – Vityata

+0

另外,實際上只有3層嵌套的IF不是很多。 – Rory