首頁 > 軟體

Excel最短函數T()函數和N()函數的使用技巧

2021-05-15 18:00:03

T()函數的功能是將給定內容轉化為文字,其語法結構為:T(value)。參數value即為需要轉化的值。如果參數是文字包括文字格式的數字等,函數返回原來的值,否則返回空值。舉例說明:

單元格D2鍵入公式「=T(A2)」,結果為仍為「產品1」,沒有變化。

單元格E2鍵入公式「=T(B2)」,因為參數為非文字,結果為空值。

單元格F2鍵入公式「=T(C2)」,C2中的「2836」是一個文字格式的數字,所以結果仍然為文字格式的數字「2836」。

N()函數的功能是將給定內容轉化為數值,語法結構為:N(value)。同樣,參數value即為需要轉化的值,如果是文字包括文字格式的數字等,返回數值「0」;如果本就是數值,返回原來的值;如果是邏輯值True和False,返回數值「1」和「0」;如果是日期時間等,返回序列值。舉例說明:

單元格E2中鍵入公式「=N(A2)」,因為是文字,返回數值「0」。

單元格F2中鍵入公式「=N(B2)」,因為本就是數值返回本來的值「3900」。

單元格G2中鍵入公式「=N(C2)」,因為是文字格式的數值,返回「0」。

單元格H2中鍵入公式「=N(D2)」,邏輯值TRUE返回數值「1」。

N()函數將邏輯值轉化為數值的功能在利用邏輯值計數和求和的實際運用中經常被用到。

因為Sum()函數在求和時忽略邏輯值,所以公式「=SUM(($C$2:$C$11>=$B$2:$B$11))」等於0,顯然這個結果不準確。

將公式改為「=SUM(N($C$2:$C$11>=$B$2:$B$11))」,就可以得出準確的結果3。該公式的意思是先將B2:B11和C2:C11兩個陣列進行比較運算,結果是一個邏輯值的陣列,然後用N()函數將陣列中的邏輯值轉換為數值,最後用Sum()函數對轉化為數值的陣列求和,得出達成計劃的產品數量。

需要強調的是,因為是陣列公式,需要Ctrl+Shift和Enter三鍵確認,公式會自動加上一個表示陣列公式的大括號。關於陣列公式,請參閱知道這些Excel陣列概念和運算規則,陣列公式就豁然開朗了

當然,還有很多其它方法將邏輯值轉換為數值,譬如用兩個減號「--」或者「*1」等等,以上公式還可以改寫為「=SUM(--($C$2:$C$11>=$B$2:$B$11))」或者「=SUM(($C$2:$C$11>=$B$2:$B$11)*1)」等。

T()函數和N()函數除了有將資料轉化為文字或者數值的功能之外,還可以提取引用函數譬如Offset()和Indirect()函數生成的一組引用中的值得出一個記憶體陣列,或者是與IF函數結合使查詢函數譬如Index()和Vlookup()函數能夠返回記憶體陣列。

1、與Offset()和Indirect()函數的巢狀使用

Offset()(請參閱掌握Offset()函數,輕鬆實現Excel動態圖表)和Indirect(Excel中,利用Indirect()函數輕鬆引用工作表資料)函數可以生成一組引用,但一般單元格陣列公式只能處理其中的第一個引用,N()函數可以提取這組引用的值得到一個記憶體陣列參與計算。

單元格B13鍵入公式「=SUM(OFFSET(B1,{1,3,5,7,9},0))」對奇數產品求和,結果只統計了「產品1」的資料。

將公式改為「=SUM(N(OFFSET(B1,{1,3,5,7,9},0)))」,即得到正確結果。OFFSET(B1,{1,3,5,7,9},0)生成一組奇數產品的引用,N()函數提取引用中的值生成記憶體陣列,Sum()函數對記憶體陣列求和。

Indirct()函數和N()函數的巢狀使用原理同上,單元格C13鍵入公式「=SUM(N(INDIRECT("C"&{2,4,6,8,10})))」即可計算奇數產品的實際達成的合計。

2、與Index()和Vlookup()函數的巢狀使用

Index()(請參閱Vlookup()函數可以做的,Index()和Match()也可以,甚至更好)和Vlookup()(Excel中Vlookup()函數使用技巧)都是功能強大的查詢函數,但它們自身不能生成記憶體陣列參與其它的計算,利用N()或者T()函數結合IF()函數對其參數進行處理,就可以得到記憶體陣列。

單元格B13鍵入公式「=SUM(INDEX($B$2:$B$11,{1,3,5,7,9}))」,只能返回第一個查詢到的資料。

需要將公式改為「=SUM(INDEX($B$2:$B$11,N(IF(1,{1,3,5,7,9}))))」。

當參數為文字格式時,則需要使用T()函數和IF()函數的巢狀。

我們準備通過匹配產品名稱計算奇數產品的實際達成,在單元格C13鍵入公式「=SUM(VLOOKUP("產品"&{1,3,5,7,9},A2:C11,3))」,雖然Vlookup()函數的第一個參數使用了陣列,但公式只能返回陣列第一項匹配的值。

將公式改為「=SUM(VLOOKUP(T(IF(1,"產品"&{1,3,5,7,9})),A2:C11,3))」,Vlookup()函數就可以返回記憶體陣列,從而得到正確的結果。

這麼看來,N函數和T函數還是很有用武之地的!


IT145.com E-mail:sddin#qq.com