時(shí)間:早晨。
地點(diǎn):長(zhǎng)豐刑警支隊(duì)會(huì)議室。
人物:前隊(duì)長(zhǎng)關(guān)宏峰(也可能是通緝犯關(guān)宏宇)?,F(xiàn)隊(duì)長(zhǎng):周巡。警隊(duì)新人:周舒彤。法醫(yī):高亞楠。
……咔咔咔咔咔咔咔……懸疑判案開始了…………
周舒彤介紹案情:周隊(duì),我們凌晨接到報(bào)案,有人在Excel表格里計(jì)算出了看見星光的成長(zhǎng)值,上面要求我們?cè)谝粋€(gè)小時(shí)之內(nèi)查出來……兇……兇手是用什么函數(shù)公式算出看見星光的成長(zhǎng)值的?……
周巡:等會(huì)等會(huì),你說什么?Excel?這事也歸我們管?我們是刑警隊(duì),你有沒有搞錯(cuò)???
周舒彤:周隊(duì),這是市局要求的。
周巡:……我去,看見星光還和市局有關(guān)系,流弊啊……
關(guān)宏峰(宇):小周你繼續(xù)說吧。
周舒彤用電腦打開表格:關(guān)老師,情況就是像表格所演示的,有人在F2單元格計(jì)算出了看見星光的成長(zhǎng)值……
周巡:……等會(huì),你剛剛說上面要求我們查出兇手是用什么函數(shù)公式算出數(shù)據(jù)的?弱不弱智?。?strong>鼠標(biāo)點(diǎn)下F2單元格,看看編輯欄不就知道了嗎?
高亞楠插話說:周隊(duì),目前還不知道兇手用了什么技術(shù)手段,屏蔽了F2單元格的所有信息,編輯欄查不到任何線索。
周巡:……老關(guān)這事你怎么看?
關(guān)宏峰(宇):用FORMULATEXT函數(shù)讀一下F2單元格,看看能讀出計(jì)算公式嗎?
高亞楠:試過了。F2單元格被技術(shù)手段屏蔽了,F(xiàn)ORMULATEXT返回錯(cuò)誤值。我們只能確定兇手使用了函數(shù)公式,但具體是哪條函數(shù)公式不清楚。
周舒彤:啊,那可怎么辦呀?
周巡看著關(guān)宏峰(宇),關(guān)宏峰(宇)抬起一只手揉著下巴沉思。
關(guān)宏峰(宇):這是一個(gè)單條件查詢的表格問題,如果兇手是用函數(shù)公式進(jìn)行計(jì)算的……一般會(huì)有5個(gè)常用的計(jì)算套路。
1,=VLOOKUP(E2,A:C,3,0)
2,=INDEX(C:C,MATCH(E2,A:A,))
3,=OFFSET(C:C,MATCH(E2,A:A,),)
4,=LOOKUP(1,0/(A1:A10=E2),C1:C10)
5,=SUMIF(A:A,E2,C:C)
關(guān)宏峰(宇):這5個(gè)公式各有特點(diǎn),很好區(qū)分,我們稍加測(cè)試,應(yīng)該不難得出答案。
周舒彤:關(guān)老師,它們都有什么特點(diǎn)啊?
關(guān)宏峰(宇):小周,你把E2單元格的值,修改為*星*,看看F2單元格的計(jì)算結(jié)果有沒有發(fā)生改變。
周舒彤:關(guān)老師,F(xiàn)2沒有發(fā)生變化。
關(guān)宏峰(宇):這說明F2單元格的計(jì)算公式,不是=LOOKUP(1,0/(A1:A10=E2),C1:C10)。這條公式是用等號(hào)判斷A列的值是否等于E2,等號(hào)不支持使用通配符。如果F2單元格是這條LOOKUP公式,它應(yīng)該返回錯(cuò)誤值。另外其它4條函數(shù)支持通配符運(yùn)算。
周巡看著關(guān)宏峰(宇)若有所思。
周舒彤:關(guān)老師,那會(huì)不會(huì)是SUMIF函數(shù)呢?
關(guān)宏峰(宇):小周,你再把A3和E2的值都改為看見星光,看看F2計(jì)算結(jié)果有沒有變化。
周舒彤:關(guān)老師,F(xiàn)2的值還是沒有變化??磥硪膊皇荢UMIF,SUMIF是條件求和函數(shù),如果符合條件的有多個(gè),它會(huì)把他們求和,SUMIF的計(jì)算結(jié)果應(yīng)該是C2 C3=73。
關(guān)宏峰(宇):小周分析的沒錯(cuò)。
周巡伸懶腰:行啊,老關(guān),沒看出來啊,你倆表格也玩的這么遛。
周舒彤:關(guān)老師,剩下3個(gè)選項(xiàng)怎么排除???
關(guān)宏峰(宇):小周,你把A2單元格的值改為0.204,把E2單元格的值改為=0.203 0.001,看下F2計(jì)算結(jié)果有沒有變化。
周舒彤:關(guān)老師,F(xiàn)2的值還是沒有變化??墒顷P(guān)老師,這能說明什么嗎?
周舒彤她一臉茫然的看著關(guān)宏峰(宇)。
關(guān)宏峰(宇)抬起一只手揉著下巴:這說明F2單元格的公式,既不是INDEX(C:C,MATCH(E2,A:A,)),也不是OFFSET(C:C,MATCH(E2,A:A,),)
周舒彤:???
大家都看著關(guān)宏峰(宇)。
關(guān)宏峰(宇)解釋:不管是INDEX函數(shù)還是OFFSET函數(shù),都是用MATCH函數(shù)去匹配查詢值在查詢范圍中的位置。MATCH函數(shù)有一個(gè)不為人知的特點(diǎn),它對(duì)數(shù)據(jù)的計(jì)算精度和一般函數(shù)不一樣,如果使用了MATCH函數(shù),這里應(yīng)該返回錯(cuò)誤值。
周舒彤:關(guān)老師,我聽不懂。
周巡:你這孩子,大學(xué)都怎么讀的?這都還聽不明白?……老關(guān),你給她好好講講,我也沒聽明白。
關(guān)宏峰(宇):……計(jì)算機(jī)是二進(jìn)制,咱們?nèi)祟愑玫氖鞘M(jìn)制。Excel在對(duì)數(shù)值進(jìn)行運(yùn)算的時(shí)候,不管是加減乘除還是乘冪,都需要先將十進(jìn)制轉(zhuǎn)換為二進(jìn)制,計(jì)算完了,再轉(zhuǎn)換成十進(jìn)制呈現(xiàn)出來……換來換去,就產(chǎn)生了浮點(diǎn)運(yùn)算。
周舒彤:可是,關(guān)老師,這和MATCH函數(shù)有什么關(guān)系?
關(guān)宏峰(宇):小周,0.204等不等于0.203 0.001?
周舒彤:等于啊。=0.204=(0.203 0.001),這條公式的計(jì)算結(jié)果也為TRUE。
關(guān)宏峰(宇):這只能說明等號(hào)判斷它倆是相等的,當(dāng)然,咱們?nèi)祟惖臄?shù)學(xué)運(yùn)算上,它們也是相等的。這么說吧,Excel對(duì)0.203 0.001計(jì)算中產(chǎn)生了浮點(diǎn),為什么產(chǎn)生浮點(diǎn)你已經(jīng)了解了。
關(guān)宏峰(宇)繼續(xù)說:……不同函數(shù)對(duì)浮點(diǎn)的計(jì)算精度不同。等號(hào)和VLOOKUP等函數(shù),只比對(duì)數(shù)值的15位精度,它們認(rèn)為0.204和0.203 0.001是相等的,但MATCH函數(shù)的計(jì)算精度要高于等號(hào),它就認(rèn)為兩者是不相等的,所以它的計(jì)算結(jié)果應(yīng)該是錯(cuò)誤值。和MATCH函數(shù)相同情況的還有DELTA函數(shù),=DELTA(0.204,0.203 0.001),這條公式返回結(jié)果也為0,意思是兩個(gè)值不相等。
周舒彤:關(guān)老師,那我以前經(jīng)常用MATCH函數(shù)算數(shù)據(jù),豈不是錯(cuò)了很多?
周巡:……Excel真是坑爹啊。不過這案子總算結(jié)了,看來兇手就是用了VLOOKUP函數(shù)。大家散了吧,我早飯還沒著落,老關(guān)……
關(guān)宏峰(宇):兇手也有可能不是使用的VLOOKUP函數(shù)。
全場(chǎng)靜默。
周巡:不是,老關(guān),你什么意思?剛剛不是說只有5種常用的函數(shù)公式嗎?4種排除了,不就還剩下VLOOKUP了?
關(guān)宏峰(宇):那是一般情況下,但如果兇手是個(gè)二貨……小周,你把A2的值改為二貨,看看F2單元格的值有沒有發(fā)生變化?
周舒彤:關(guān)老師,F(xiàn)2的值沒有發(fā)生變化。關(guān)老師,這不對(duì)啊,如果兇手使用了VLOOKUP函數(shù),找不到查詢結(jié)果,F(xiàn)2應(yīng)該返回錯(cuò)誤值啊。
關(guān)宏峰(宇)起身走到電腦前,將表格C2的值刪除,他看著F2的值隨之變成了空白,嘴角露出痞子的微笑:
沒有什么不對(duì),真相只有一個(gè),那就是兇手是個(gè)二貨,他F2單元格使用的公式是………………………………………………
…………
……
…………………………=C2。
聯(lián)系客服