iT邦幫忙

0

請問Excel這兩個公式為什麼結果是不同的?

要從Excel兩欄找出相同的值
都是將要去搜尋的值,有在另外一欄出現的話,就顯示它
沒有的話就顯示0
公式一:
=IF(ISERROR(MATCH(F2,$E$2:$E$22344,0)),"0",F2)
公式二:
=IF(MATCH(F2,$E$2:$E$22344,0),F2,"0")

但是為何只有公式一才可以成功地將沒有出現的值顯示0
公式二的話則出現#N/A

有人知道是什麼原因嗎?

1
paicheng0111
iT邦高手 1 級 ‧ 2019-11-13 17:11:45

因為公式一中有ISERROR()

=ISERROR(參數1)

如果參數1的值是錯誤(#N/A, #DIV/0!, #NAME?,...)的話,會回傳True

可是上述公式一中ISERROR()裡面只有參數1:MATCH()
並沒有參數二的值
ISERROR(MATCH(F2,$E$2:$E$22344,0))
那它會回傳什麼? 導致IF()公式中的條件成立

公式二中MATCH()如果成立的話,不就滿足IF()公式中的條件了嗎?
為什麼還是顯示#N/A?

對不起,我修改回覆了。

0
米歐
iT邦新手 4 級 ‧ 2019-11-13 17:29:36

ISERROR(檢定值) 是判斷檢定值是否為錯誤值,是傳回TRUE,否則傳回FALSE。

IF(判斷值, 值一, 值二) 若判斷值為是傳回值一,否則傳回值二

0
浩瀚星空
iT邦超人 1 級 ‧ 2019-11-13 18:13:05

講白一點。會出現 #N/A 就是代表法數無法計算或是運算。
但對if來說。它還是算有「真」值。因為#N/A對if來講還是算有值。

所以第一個再掛入一個ISERROR就是為了讓它可以回傳真偽值。讓if可以判定。

考考你,想回答就回答。在excel欄位中輸入0然後if判斷。它是真值還是偽值呢??
可以試試看。

三元性(True, False, 錯誤)

你的意思是假如A1=0,=if(A1,"True","False")嗎? 我這邊得出的結果是False

如果你是用if。的確會直接得到真偽值沒錯。
但目前你的問題是,你用的是MATCH運算式。
運算式除了計算出來的數值之外。還有一個是無法計算。
但無法計算是算錯誤值。並非是偽值。

所以為何會用一個ISERROR的原因。就是要將錯誤值變成真值來處理。

這樣你是否有了解呢??

就像是在某些程式裏

a=0;  //偽值
a='0'; //真值

要了解這些真偽值的應用。在程式的世界中,除了真偽值還有其它類的值會有不一樣的計算。再加上智能轉換類型。你一個沒搞懂就掛了。

我要發表回答

立即登入回答