最近與公司財務在交流中發現,數據是他們天天面對而又是最爲頭痛的問題,一個表須要從其餘部門提供上來的各式各樣的表中人爲的提取數據,耗費的人力愈來愈大,手工的錄入也帶來了或多或少的錯誤。在他們的要求下,花去我許多空閒時間,終於幫他們解決很大一部分問題,爲他們從此工做節省了一筆時間。面對EXCEL若是僅僅知道的是往裏面輸入簡單的幾個字符,那隻能說咱們僅僅用到了它的皮毛。熟練的應運一些看似簡單的公式,將爲咱們的應用錦上添花。ide
一、根據姓名取值函數
使用函數:Vlookupblog
標準語法:VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)ip
用途:不只用於在當前表格中查找指定值後返回其它列的值,並且能夠用於在兩個不一樣表格中查找並返回所須要的值。get
例:計算當月工資時要從領導提供的管理人員薪資表中提取全部人的基礎薪資時,能夠使用:VLOOKUP(C4,管理人員薪資!$B:$C,2,FALSE)。 it
所產生的問題是當沒有查找到目標值時,返回的是一個錯誤值「#N/A」,這個值將致使其它字段運用它計算時一樣產生錯誤值「#N/A」。table
二、根據姓名取值,錯誤值用0取代class
使用函數:IF+ISNA+VLOOKUPtest
標準語法:IF(logical_test,value_if_true,value_if_false)基礎
ISNA(value)
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
合併後:IF(ISNA(VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)),「0」,VLOOKUP(lookup_value,table_array,col_index_num,range_lookup))
用途:將判斷一個字段的值是否爲「#N/A」,若是值爲錯誤值 #N/A,則返回 TRUE所對應的值,不然返回FALSE所對應的值。
這樣一來咱們可經過將IF、ISNA和VLOOKUP配合到一塊兒來解決咱們所遇到的「#N/A」問題,也能夠方便地取到咱們所須要的值。
IF(ISNA(VLOOKUP(C9,管理人員薪資!$B:$C,2,FALSE)),"0",VLOOKUP(C9,管理人員薪資!$B:$C,2,FALSE))
注:當咱們採用各類函數獲得的值出現相似「#N/A」、「#VALUE 」、「#REF 」、「#DIV/0 」、「#NUM 」等錯誤時,咱們還能夠使用IF+ISERR/ISERROR/ISNA來進行判斷取值。
ISERR:若是值爲除 #N/A 之外的任何錯誤值,則返回 TRUE。
ISERROR:若是值爲任何錯誤值,則返回 TRUE。
ISNA:若是值爲錯誤值 #N/A,則返回 TRUE。
三、取數字的大寫元角分值
使用函數:SUBSTITUTE+TEXT+TRUNC+FIXED+IF+RIGHT+ABS
用途:用於財務輸入數字金額時自動在相應的單元格中產生大寫元角分值。
SUBSTITUTE(SUBSTITUTE(TEXT(TRUNC(FIXED(B3)),"[dbnum2]G/通用格式元;負[dbnum2]G/通用格式元;"&IF(B3>-0.5%,,"負"))&TEXT(RIGHT(FIXED(B3),2),"[dbnum2]0角0分;;"&IF(ABS(B3)>1%,"整",)),"零角",IF(ABS(B3)<1,,"零")),"零分","整")
四、自動取最近一次單價值
使用函數:INDEX+MAX+IF+COLUMN
用途:注要用於取某一行中最後一個非空值的單元格數據到指定單元格,當表格超大時,查找一個最新的值移動表格將很是不方便,這樣咱們將最新的數據所有顯示在一塊兒將更易於工做。
INDEX(A2:CU2,1,MAX(IF(N2="",0,COLUMN(N2)),IF(P2="",0,COLUMN(P2)),IF(R2="",0,COLUMN(R2)),IF(T2="",0,COLUMN(T2)),IF(V2="",0,COLUMN(V2)),IF(X2="",0,COLUMN(X2)),IF(Z2="",0,COLUMN(Z2)),IF(AB2="",0,COLUMN(AB2)),IF(AD2="",0,COLUMN(AD2))))
下表中「最近單價」和「最近價格確認時間」所取的值爲本行中相應顏色字段的值。
或許這些平時不起眼的小函數,當它們組合在一塊兒時將產生多大用處,只要咱們好好的去運用它們,它們將給咱們帶來工做上不少的便利。