從今天開(kāi)始我們學(xué)習(xí)函數(shù),為了不讓大家感覺(jué)到枯燥難懂,所以我們每次都以實(shí)例來(lái)講解,實(shí)例中需要用到什么函數(shù)以及理論就學(xué)習(xí)什么,函數(shù)講完如果有技巧性的東西也會(huì)補(bǔ)充在后面。 本節(jié)也是解決一個(gè)朋友的問(wèn)題,護(hù)士在統(tǒng)計(jì)病床時(shí)需要把一列病床號(hào)轉(zhuǎn)為一個(gè)規(guī)定幾行幾列的矩陣,由于不會(huì)函數(shù),所以每次只能手工復(fù)制粘貼。 為了解決上面的問(wèn)題,我們先來(lái)學(xué)習(xí)四個(gè)函數(shù): ROW([reference]),返回引用單元格所在的行, 例如:在A1單元格中輸入=row(B1),則返回是1,意思就是B1是B列第一行,返回行號(hào),所以是1。若=row(B1:B3),ctrl shift ctrl結(jié)束(以后章節(jié)里統(tǒng)一叫三鍵結(jié)束),則返回?cái)?shù)組{1;2;3},因?yàn)橐脜^(qū)域?yàn)閿?shù)組區(qū)域,所以返回的也是對(duì)應(yīng)的數(shù)組區(qū)域。對(duì)數(shù)組不懂的同學(xué)不要糾結(jié),我們后面會(huì)詳細(xì)講,本節(jié)先理解單個(gè)單元格的引用。 COLUMN([reference]),返回單元格所在的列,用法與row類(lèi)似,不多解釋了,大家自己琢磨。 OFFSET(reference, rows, cols, [height], [width]),返回對(duì)單元格或單元格區(qū)域中指定行數(shù)和列數(shù)的區(qū)域的引用。例如:在A1中輸入=offset(A1,2,3,1,1),結(jié)果會(huì)顯示D3單元格的內(nèi)容,意思是以A1為參照,向下偏移兩個(gè)單元格,向右偏移三個(gè)單元格,返回高度、寬度都為1的單元格(即1個(gè)單元格)。 Int( number ),將數(shù)字向下舍入到最接近的整數(shù),例如:=int(1.7)則返回1。表是1.7向下取舍,取整數(shù);=int(-1.7),則返回-2。 以上這四個(gè)函數(shù)其實(shí)也很簡(jiǎn)單對(duì)吧,就是返回單元格所在的行數(shù)、列數(shù)以及引用以一定條件進(jìn)行偏移后的單元格,對(duì)數(shù)字向下取整。有了以上這四個(gè)武器,下面的問(wèn)題就迎刃而解了。 把下面示例中A列數(shù)字1-12轉(zhuǎn)化成一個(gè)4×3(4行,3列)的矩陣。 我們首先想這就是個(gè)引用位置的問(wèn)題呀,矩陣中的每個(gè)數(shù)字對(duì)應(yīng)A列中的數(shù)字就可以,比如C2中引用的是A1,D2引用的是A2……即下面這樣 引用的單元格相對(duì)A1都是向下偏移0,1,2,3……一直到11,向右偏移永遠(yuǎn)都是0,因?yàn)橹挥幸涣?,所以offset函數(shù)第三個(gè)參數(shù)是0,最后兩個(gè)不用輸入,默認(rèn)按照參照(A1)的高度、寬度返回,即一個(gè)單元格。所以我們把offset的第一個(gè)參數(shù)定為$A$1(絕對(duì)引用),只要能搞定第二個(gè)參數(shù)就可以了。 第二個(gè)參數(shù)我們希望向右拉的時(shí)候能夠按照每拉一個(gè)單元格就增加1,向下拉的時(shí)候每拉一個(gè)單元格就增加3,這樣的話只要在C2中輸入=offset($A$1,第二個(gè)參數(shù),0),向右向下拉滿區(qū)域就OK了。 向右拉一個(gè)單元格增加1,列數(shù)也正好增加1列,所以正好用COLUMN來(lái)實(shí)現(xiàn)這個(gè)效果,比如在C2中輸入=column(A1)-1,就會(huì)返回0,即1-1=0,向右拉,D3中=column(A2)-1,就會(huì)返回1,即2-1=1,以此類(lèi)推…… 但是向下拉呢,C3中公式變?yōu)榱?column(b1)-1,返回還是0,我們希望返回的是3,即矩陣的列數(shù),C4中我們希望返回的是6,即每下拉一行,我們希望返回的數(shù)字能在上一行的基礎(chǔ)上增加3,換個(gè)思路就是表示在第一行的基礎(chǔ)上增加3的倍數(shù),所以我們用返回行的函數(shù),在C2中輸入=(row(A1)-1)*3,返回0,向下拉一格C3=(row(A2)-1)*3,返回3,…… 利用column和row組合,即在C2中輸入 =offset($A$1,column(A1)-1 row(A1)-1)*3,0) 向右向下拉滿規(guī)定好的4×3的區(qū)域,看看效果! 當(dāng)向右拉時(shí),公式第一部分返回列數(shù)會(huì)對(duì)應(yīng)增加1,而第二部分是返回行數(shù),向右拉行數(shù)沒(méi)變化,所以第二部分返回的數(shù)字是不變的,向下拉時(shí)紅色第一部分列數(shù)沒(méi)變,所以返回的數(shù)字是不變的,第二部分行數(shù)有變化,相應(yīng)增加了3的倍數(shù),兩個(gè)結(jié)合,正好實(shí)現(xiàn)了右拉增加1,下拉增加3。 通過(guò)上面的分析,大家對(duì)列轉(zhuǎn)矩陣能做到了吧,當(dāng)然還有別公式可以實(shí)現(xiàn),我們這節(jié)先講這個(gè)三個(gè)公式。 把下面黃色區(qū)域的矩陣轉(zhuǎn)化為G列一列數(shù)字 思路:以A1為參照,轉(zhuǎn)化成1列,offset第一個(gè)參數(shù)每向下拉8個(gè)單元格,需要增加1,第二個(gè)參數(shù)向右拉的變化是0到5。 G1中公式 =OFFSET($A$1,INT((ROW(A1)-1)/6),MOD((ROW(A1)-1),6)) 思維方式和列轉(zhuǎn)矩陣類(lèi)似的,我這里只奉上公式,大家自己思考,分解公式,一步一步去理解并領(lǐng)會(huì)其中的意思,只有多思考,多琢磨,我們才能讓函數(shù)成為我們的工具。不懂的同學(xué)可以在群里請(qǐng)教!記住學(xué)習(xí)函數(shù)一定要領(lǐng)會(huì)才能做到靈活,而不是簡(jiǎn)單的模仿。 對(duì)于列與矩陣互相轉(zhuǎn)化還有好的辦法的同學(xué)請(qǐng)向我提議,我們相互學(xué)習(xí),相互分享! |
|