2017-09-08 86 views
1

我試圖在Excel中編寫自定義驗證函數,以確保單元格中的文本以http://https://開頭。如果我使用式Excel驗證中的OR函數是否被破壞?

= EXACT(LEFT(INDIRECT( 「Z」 & ROW()),8), 「https://開頭」)

驗證工作,但僅檢查https://開頭。如果我添加一個OR這樣

= OR(EXACT(LEFT(INDIRECT( 「Z」 & ROW()),8), 「HTTPS://」),EXACT(LEFT(INDIRECT(「Z 「& ROW()),7),」http://「))

它不起作用;它總是評估爲假。然後我嘗試以下只是爲了測試或功能:

= OR(EXACT(LEFT(INDIRECT( 「Z」 & ROW()),8), 「HTTPS://」),TRUE)

並且這也評估爲假!我瘋了還是OR功能壞了?我發現當把這個方程粘貼到一個單元中時,它工作得很好。它僅用作自定義驗證函數時不起作用。

+2

不是問題,但爲什麼當一個簡單的把'Z3'或什麼行數作爲驗證的第一行時,不必要的使用voltile INDIRECT? –

+1

Excel 2016提供了「公式當前評估爲錯誤,您希望繼續嗎?」在那一個上。像@ScottCraner一樣去除'INDIRECT'表示修復了它(錯誤信息和公式邏輯)。 – GSerg

+0

@ScottCraner我使用了INDIRECT()和ROW(),因爲我希望選擇整個列,然後對其應用此驗證。 – PICyourBrain

回答

1

如果有一天你需要包括第三個條件,嘗試這樣的:

=OR(LEFT(D1,8)="https://", 
    LEFT(D1,7)="http://") 

這將不Exact()工作。 正如在評論中指出的,If()也是不需要的。

+0

爲什麼不是'= OR( (LEFT(D1,8)=「https://」,1), (LEFT(D1,7)=「http://」,1))'已經是布爾? – user1016274

+0

我喜歡在公式中添加新的線條,看起來更好。 @ user1016274 – Vityata

+2

我的意思是:你不需要'IF()'函數,因爲表達式本身已經是一個布爾值。不是關於換行符。 – user1016274