前言:本文由excel精英培訓(xùn)網(wǎng)蘭色幻想原創(chuàng),轉(zhuǎn)載請注明作者和轉(zhuǎn)自EXCEL精英培訓(xùn)網(wǎng).
1、什么是零除法?
所謂0除法,就是故意讓0除以一組數(shù)(有時也可以用1除)。如:
0/(a2:a10=c1)
1/(a2:a10=c1)
2、用0以一組數(shù)的目的是什么?
如果分母是0,結(jié)果是錯誤值,如果分母不是0呢,結(jié)果就是0。這樣就可以把一組數(shù)變成0和錯誤值組成的新數(shù)組。有些函數(shù)象LOOKUP要求第二個參數(shù)必須是升序排列,COUNT函數(shù)可以忽略錯誤值計算個數(shù),這樣我們就可以把0除后的數(shù)組作為它的參數(shù)。
3、實例:
實例一:計算A列大于10的個數(shù)。
公式:{=COUNT(0/(A2:A6>10))}
分析:
1、計算大于10,那么我們需要讓這些數(shù)一一和10進行對比。即:
A2:A6>10
對比后大于10數(shù)字變成TRUE,否則變成FALSE。即:
{FALSE;TRUE;FALSE;TRUE;FALSE}
2、現(xiàn)在計算大于10的個數(shù),變成了計算TRUE的個數(shù),怎么排除FALSE呢,我們就可以用0除的方法把FALSE轉(zhuǎn)換為錯誤值。
0/({FALSE;TRUE;FALSE;TRUE;FALSE})
結(jié)果:{#DIV/0!;0;#DIV/0!;0;#DIV/0!}
3、通過0零除后,我們可以用COUNT函數(shù)統(tǒng)計出數(shù)字的個數(shù),也就是大于10的個數(shù)了。
COUNT({#DIV/0!;0;#DIV/0!;0;#DIV/0!})
結(jié)果:2
因為是一組數(shù)在一起運算,所以要用數(shù)組公式形式輸入,即按ctrl+shift,然后按ENTER結(jié)束輸入
實例二:計算最后一個A的單價
如下圖所示,A產(chǎn)品多次入庫,要求計算出A最新入庫的單價A
分析:
1、判斷是否為A,當(dāng)然要用=號來對比一下。
C5:C10=B13
結(jié)果是:{TRUE;FALSE;TRUE;FALSE;TRUE;FALSE}
2、怎么樣查找出最后一個TRUE的位置呢,我們知道LOOKUP函數(shù)是從后向前查找的,但是要求第二個參數(shù)必須是升序排列,但第一步的結(jié)果是TRUE和FALSE組成的數(shù)組,不符合條件,但是LOOKUP有一點特點就是可以忽略錯誤值,所以我們就使用0除的方法把FALSE轉(zhuǎn)換為錯誤值,這樣就符合要求了,即:
0/(C5:C10=B13)
結(jié)果:{0;#DIV/0!;0;#DIV/0!;0;#DIV/0!}
3、有了上面的結(jié)果,我可以用任一個大于等于0的數(shù)來查找最后一個0的位置,然后返回第三個參數(shù)中對應(yīng)的值了。
最終的公式為 =LOOKUP(1,0/(C5:C10=B13),D5:D10)
2、mod截尾法
[日期:2012-06-17] | 來源:excel精英培訓(xùn) 作者:蘭色幻想 | [字體:大 中 小] |
我們經(jīng)常需要用MATCH查找一個內(nèi)容所在的位置,但有時查找的和被查找的都是通過很復(fù)雜的返回的,公式就會顯示十分繁鎖。這時我們就可以利用MOD函數(shù)給數(shù)字提前加一個“序號”尾巴,等排序后根據(jù)尾巴就可以知道它原來的行數(shù)。 先說一個MOD函數(shù)添加尾巴的原理:
第一步:把數(shù)字擴充100倍。
123 ----- 123*100=12300
第二步:加上小尾巴
12300+row(1:1) =12301 這里利用ROW產(chǎn)生的數(shù)字序列,可以批量給一列數(shù)添加1-N的小尾巴。
第三步:使用mod函數(shù)截取小尾巴。
mod(12301,100) =1 '這里的1就是原來123所在的位置
下面看一個實例吧:
如下圖所示,A列是銷售員,B列是銷售數(shù)量,要求返回銷售最多的銷售員名稱。
分析:
首先我們需要用sumif計算出每一個銷售員的銷量和,然后找到最大的,再看看最大的數(shù)在第幾個位置,然后用index在A列取出相對應(yīng)的銷售員。
如果用一般的方法,我們可以這樣:
{=INDEX(A2:A6,MATCH(MAX(SUMIF(A2:A6,A2:A6,B2:B6)),SUMIF(A2:A6,A2:A6,B2:B6),)) }
公式說明:
MAX(SUMIF(A2:A6,A2:A6,B2:B6)) 返回最大銷售量
MATCH(MAX(SUMIF(A2:A6,A2:A6,B2:B6)),SUMIF(A2:A6,A2:A6,B2:B6),)) ,返回最大銷售量的行數(shù)
INdex ():根據(jù)行數(shù)返回銷售員
如果用MOD方法,可以這樣:
=INDEX(A2:A6,MOD(MAX(SUMIF(A2:A6,A2:A6,B2:B6)/1%+ROW(1:5)),100))
公式說明:
SUMIF(A2:A6,A2:A6,B2:B6)/1% ‘銷售量和擴大100倍
SUMIF(A2:A6,A2:A6,B2:B6)/1%+ROW(1:5)) ’擴大一百倍的銷售量和批量添加1~5的小尾巴。
MAX():從含有小尾巴的數(shù)字中返回最大的
MOD(MAX(),100),利用返回余數(shù)的原理,把小尾巴再提取出來,就是這個符合條件的所在行數(shù)。
INDEX() :根據(jù)小尾巴,提出銷售員
3 帶"B"的函數(shù)
[日期:2012-06-17] | 來源:excel精英培訓(xùn) 作者:蘭色幻想 | [字體:大 中 小] |
其實很簡單,帶B是按單字節(jié)處理,而不帶B是按雙字節(jié)處理,我們常用的字符,數(shù)字和英文是單字節(jié),而漢字是雙字節(jié),如果使用帶B的函數(shù),就可以區(qū)分單雙字節(jié)了。
先舉一個選簡單的例子。
=LEFT("我CD",2) 返回的是“我C” ,LEFT不分單雙字節(jié)
=LEFTB("我CD",2) 返回的只是“我” 這里“我”是占兩個字節(jié)數(shù),LEFTB分單雙
書歸正題,說一下怎么利用MIDB函數(shù)+SEARCHB函數(shù)巧妙拆漢字和數(shù)分,比如:
單元格A1的內(nèi)容是:白菜3.467
要求把數(shù)字拆分出來。
解:
第一步:使用searchb的模糊查找特點,查找第一個單字節(jié)字符的位置,即:
=SEARCHB("?",A1) ?號是單字節(jié)占位符,這里作為通配符用
第二步:使用MIDB函數(shù)進行截取。MIDB也是按單字節(jié)位置進行截取的。即:
=MIDB(A1,SEARCHB("?",A1),99)