EXCEL單元格的引用包括相對引用、絕對引用和混合引用三種。
相對引用 公式中的相對單元格引用(例如 A1)是基于包含公式和單元格引用的單元格的相對位置。如果公式所在單元格的位置改變,引用也隨之改變。如果多行或多列地復(fù)制公式,引用會自動調(diào)整。默認情況下,新公式使用相對引用。例如,如果將單元格 B2 中的相對引用復(fù)制到單元格 B3,將自動從 =A1 調(diào)整到 =A2。 絕對引用 單元格中的絕對單元格引用(例如 $A$1)總是在指定位置引用單元格。如果公式所在單元格的位置改變,絕對引用保持不變。如果多行或多列地復(fù)制公式,絕對引用將不作調(diào)整。默認情況下,新公式使用相對引用,需要將它們轉(zhuǎn)換為絕對引用。例如,如果將單元格 B2 中的絕對引用復(fù)制到單元格 B3,則在兩個單元格中一樣,都是 $A$1。 混合引用 混合引用具有絕對列和相對行,或是絕對行和相對列。絕對引用列采用 $A1、$B1 等形式。絕對引用行采用 A$1、B$1 等形式。如果公式所在單元格的位置改變,則相對引用改變,而絕對引用不變。如果多行或多列地復(fù)制公式,相對引用自動調(diào)整,而絕對引用不作調(diào)整。例如,如果將一個混合引用從 A2 復(fù)制到 B3,它將從 =A$1 調(diào)整到 =B$1。 在Excel中輸入公式時,只要正確使用F4鍵,就能簡單地對單元格的相對引用和絕對引用進行切換?,F(xiàn)舉例說明。 對于某單元格所輸入的公式為“=SUM(B4:B8)”。 選中整個公式,按下F4鍵,該公式內(nèi)容變?yōu)?#8220;=SUM($B$4:$B$8)”,表示對橫、縱行單元格均進行絕對引用。 第二次按下F4鍵,公式內(nèi)容又變?yōu)?#8220;=SUM(B$4:B$8)”,表示對橫行進行絕對引用,縱行相對引用。 第三次按下F4鍵,公式則變?yōu)?#8220;=SUM($B4:$B8)”,表示對橫行進行相對引用,對縱行進行絕對引用。 第四次按下F4鍵時,公式變回到初始狀態(tài)“=SUM(B4:B8)”,即對橫行縱行的單元格均進行相對引用。 需要說明的一點是,F(xiàn)4鍵的切換功能只對所選中的公式段有作用。 Excel中對交叉內(nèi)容進行報表合并 在學(xué)校的成績統(tǒng)計中,有的老師會遇到這樣的問題:比如說手頭有兩份成績報表,一份是語文成績,另一份是數(shù)學(xué)成績,現(xiàn)在需要將這兩份成績報表合并起來,并計算出總分。本來這在Excel中是非常容易實現(xiàn)的事情,但這還不算,最大的困難在于這兩份成績報表中的學(xué)生情況并不一致,即有一部分學(xué)生只有單科成績,這樣一來,兩份成績報表中的學(xué)生名單就出現(xiàn)了交叉(既有相 同部分,又有不同部分)。對于這種問題,我們應(yīng)該怎樣解決呢? 有的人可能會想到用VBA寫一段代碼來完成這樣的工作,但畢竟這東東不是每個人都會的,單為了這么點小事情去專門學(xué)習(xí)VBA,又顯得有些小題大做了。況且這擺在眼前的工作,哪里來得及等你去學(xué)習(xí)VBA。(等你學(xué)好了,估計也要下崗了?。┢鋵崳瑫卟浑y,只要你能靈活運用Excel中的函數(shù)與公式,這個問題也是能被輕松解決的。 在介紹筆者的具體方案之前,請大家先耐心來進行一些有關(guān)此方案的Excel函數(shù)及公式知識的準備工作。(先別急嘛,所謂磨刀不誤砍柴功?。? 首先我們要來學(xué)習(xí)的是Excel中的COUNTIF函數(shù)。COUNTIF (range,criteria) 函數(shù)的功能是計算給定區(qū)域內(nèi)滿足特定條件的單元格的數(shù)目。Range 參數(shù)是需要計算其中滿足條件的單元格數(shù)目的單元格區(qū)域。而Criteria參數(shù)則用以確定哪些單元格將被計算在內(nèi)的條件,其形式可以為數(shù)字、表達式或文本。假設(shè) A1:A5 中的內(nèi)容分別為 “張三”、“李四”、“王五”、“張三”、“張三”,則COUNTIF (A1:A5," 張三") 等于3。 接下來上場的是筆者最鐘情的VLOOKUP函數(shù),它在筆者的工作中無數(shù)次發(fā)揮了巨大的威力,其作用可能僅次于IF和SUM函數(shù),所以筆者在此向大家吐血推薦!(作廣告?)VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)函數(shù)的功能是在表格或數(shù)值數(shù)組的首列查找指定的數(shù)值,并由此返回表格或數(shù)組當前行中指定列處的數(shù)值。Lookup_value參數(shù)為需要在數(shù)據(jù)表第一列中查找的數(shù)值。Table_array 參數(shù)為需要在其中查找數(shù)據(jù)的數(shù)據(jù)表,可以使用對區(qū)域或區(qū)域名稱的引用,例如數(shù)據(jù)庫或數(shù)據(jù)清單。Col_index_num 參數(shù)為 table_array 中待返回的匹配值的列序號。Col_index_num 為 1 時,返回 table_array 第一列中的數(shù)值;col_index_num 為 2,返回 table_array 第二列中的數(shù)值,以此類推。最后一個參數(shù)Range_lookup為一邏輯值,指明函數(shù) VLOOKUP 返回時是精確匹配還是近似匹配。當其值為0時,將返回精確值;當其值為1時,將返回近似匹配值。關(guān)于VLOOKUP函數(shù),在Excel的幫助文件中有非常詳細的解釋,本文限于篇幅的原因不能在此講得更多,大家有興趣的話可以自己進行學(xué)習(xí)。 另外在下面的方案中還將用到一些別的函數(shù),如IF、ISNA等,就不單獨介紹了,筆者將在介紹方案時一并向大家講解。最后我們要了解的是關(guān)于Excel公式中絕對引用和相對引用的概念。相對引用是指公式中對單元格或單元格區(qū)域的引用僅僅是相對于包含公式的單元格的相對位置。引用的源單元格或單元格區(qū)域會隨著公式所在單元格的改變而改變。例如A1單元格包含公式 =B1,當我們把A1的公式復(fù)制到A2后,則A2單元格包含公式 =B2,B1自動被調(diào)整為B2了。這一點在大量復(fù)制公式時特別有用,因此也是Excel公式的默認引用方式。絕對引用與相對引用恰恰相反,無論公式所在單元格怎么變動,引用的源單元格或單元格區(qū)域也不會發(fā)生任何改變。絕對引用的標識符是美元符號“$”。 好了,下面就來正式介紹此問題的解決方案了:假設(shè)已有工作簿文件“成績單”,其工作表“語文”和“數(shù)學(xué)”分別是前文所說的兩份成績報表。 新建一工作表,將其命名為“索引”,在A1、B1單元格中分別輸入“索引”和“姓名”。選擇“語文”工作表,將其中的學(xué)生姓名字段的所有內(nèi)容全部復(fù)制到“索引”工作表中B列,接著再復(fù)制“數(shù)學(xué)”工作表的同樣內(nèi)容。復(fù)制完成后稍作檢查,要保證“索引”工作表中B列的數(shù)據(jù)區(qū)域中不要有空單元格,否則會影響后面的公式。(當然,將公式設(shè)置得更為復(fù)雜的話,也可以忽略空單元格,但這個就請各位自己去摸索了) 假設(shè)最后一個學(xué)生姓名在單元格B24,下面我們來為這些包含重復(fù)內(nèi)容的學(xué)生姓名數(shù)據(jù)建立索引,以過濾掉重復(fù)內(nèi)容。先在A2單元格中輸入數(shù)字“1”,然后再在A3單元格中輸入公式“=IF(COUNTIF(B3:$B$24,B3)>1,A2,1+A2)”。這個公式的含義是如果在單元格區(qū)域B3:B24中,單元格B3中的學(xué)生姓名的出現(xiàn)次數(shù)大于1的話,就返回A2——也就是公式所在單元格的上一個單元格的值,注意這里使用的是相對引用,此時即返回數(shù)值1;如果單元格B3中的學(xué)生姓名的出現(xiàn)次數(shù)不大于1的話,就返回另一個數(shù)值,該數(shù)值等于A2的值加上1。在表示單元格區(qū)域B3:B24時,筆者在標識該區(qū)域的結(jié)束單元格時用到了絕對引用,雖然實際上單元格B24后面已經(jīng)沒有任何數(shù)據(jù)了,但這樣做一來是為了強調(diào)在編輯公式時需要養(yǎng)成良好的習(xí)慣,二來是為了與同一公式中的其它相對引用進行對比。絕對引用保證了COUNTIF函數(shù)不會超出指定范圍,而相對引用又保證COUNTIF函數(shù)進行判斷的條件每次都不同,且進行統(tǒng)計的范圍每次都在縮小,如此才能避免對判斷過的單元格進行重復(fù)統(tǒng)計。最后我們將單元格A3的公式向下進行拖曳到單元格A24,以進行公式的快速復(fù)制。這樣,索引過程就完成了。結(jié)果如圖一所示。 有朋友可能要問了“有沒有搞錯,索引值怎么會有這么多相同的?”實際上,這個索引值是專門配合后面的VLOOKUP函數(shù)來使用的,光靠這個數(shù)字是沒有用的。不過我還是可以告訴你,相同的索引值中,第一次出現(xiàn)的為有效索引值。 再新建一工作表,將其命名為“匯總”。在A1、B1、C1、D1、E1單元格中分別輸入“索引”、“姓名”、“語文”、“數(shù)學(xué)”、“總分”。在A2單元格中輸入數(shù)字1,然后向下拖曳到單元格A25,得到從1到24的序列數(shù)。在B2單元格中輸入公式“=VLOOKUP(A2,索引!$A$2:$B$24,2,0)”,參照前文對VLOOKUP函數(shù)的介紹,我們可以知道此公式的功能在于根據(jù)A列相應(yīng)單元格的數(shù)值,在“索引”工作表指定區(qū)域中找到對應(yīng)的數(shù)值,返回給當前的單元格。Lookup_value參數(shù)和Table_array 參數(shù)分別運用了相對引用和絕對引用,都是為了復(fù)制公式的需要。在此,我們還利用了VLOOKUP函數(shù)的另一個特性,即如果Table_array 中有多個值與Lookup_value對應(yīng),則函數(shù)僅響應(yīng)第一個出現(xiàn)的值?,F(xiàn)在明白為什么“索引”工作表中有多個重復(fù)值也沒關(guān)系了吧! 然后在C2和D2中分別輸入公式“=IF(ISNA(VLOOKUP(B2,語文!$A$2:$B$13,2,0)),0,VLOOKUP(B2,語文!$A$2:$B$13,2,0))”、“=IF(ISNA(VLOOKUP(B2,數(shù)學(xué)!$A$2:$B$13,2,0)),0,VLOOKUP(B2,數(shù)學(xué)!$A$2:$B$13,2,0))”,用于根據(jù)B列中的學(xué)生姓名從“語文”和“數(shù)學(xué)”工作表中取得他們相應(yīng)的成績。ISNA()是用來判斷VLOOKUP()的值是否有效的函數(shù),即如果VLOOKUP()找不到相應(yīng)的成績時,ISNA()返回TRUE。再結(jié)合IF(),此公式的完整含義為如果相應(yīng)的學(xué)生有對應(yīng)的成績,則返回他的成績,否則為0。因為有許多學(xué)生只有單科成績,所以這樣的判斷還是必要的,否則當VLOOKUP()找不到對應(yīng)的成績時,會返回值“#N/A”,不但難看,而且影響后面總分的計算。 在E1單元格中輸入公式“=C2+D2”就能得到總分,這個公式應(yīng)該沒什么好說的吧! 最后,同時選中C1、D1、E1單元格并往下進行拖曳以復(fù)制公式。怎么樣,全都算好了吧!學(xué)生一個不多也一個不少,剛剛好,而且他們的成績也一分不差,是不是很容易!見圖二所示。 好了,現(xiàn)在再回過頭去理解一下方案中所有的公式,應(yīng)該都是非常簡單了的吧!按照本文的思路,如果出現(xiàn)類似的問題,相信也難不倒你啦! 單元格的絕對引用:是指公式的計算結(jié)果不隨著存放結(jié)果的單元格的變化而變化。 相對引用:則是指公式的計算結(jié)果隨著存放結(jié)果的單元格的變化而變化。 例如:在A3單元格有一個公式為=A1+A2,將此公式復(fù)制到B4單元格,因為是相對引用,它的公式變?yōu)?B2+B3,即存放結(jié)果的單元格由A3變?yōu)锽4,行和列都加了1,那么公式的A1和A2的行和列也加1,變?yōu)榱薆2和B3。 如果是在A3單元格有這樣一個公式為=$A$1+$A$2,即絕對引用了,那么將此公式復(fù)制到B4單元格,因為是絕對引用,它的公式仍然是=$A$1+$A$2,不會變。 仔細看看一樓的回答,說得很清楚了 |
|