EFunction高級函數插件,讓低版本Excel(2019、2016、2013等低版本Excel)也能夠使用XLOOKUP等365高級版本Excel才能夠使用的函數了。
以下函數均為EFunction對标365新增函數,最大程度實現365才有函數功能,使得Excel低版本(2016及以下版本Excel)也能夠使用這些高級函數。
這些函數均為模拟實現,可能沒有考慮到所有應用場景差異,如果使用過程之中發現有不一緻的地方,歡迎通過社區方式反饋,以便于後期修複。
EFunction對标函數,函數名和365高級函數保持同名,如果在365等高級版本之中使用EFunction,這些函數将會有兩個相同的函數名,給使用造成困擾。如果不想使用默認函數名,可以以此點擊菜單:EFunction-》函數重定義,打開函數重命名面闆。EFunction默認已經将這些同名函數前添加“EF”前綴,也可以自己重新命名,可以在面闆内啟動這些函數的别名。需要改名的函數完成改名後,點擊“更新”。重啟Excel即可生效。
圖2 函數重命名
在低級版本,例如2016版本編寫好的EFunction對标函數,在365等高級版本之中打開時,高級版本Excel會提示函數名無效,需要手動激活下,函數才能夠被高級版本Excel識别并轉化為365同名函數。如果365版本Excel安裝了EFunction插件,則能夠被正常識别EFunction同名函數。
如果365等高級版本編寫好的的高級函數(Excel自帶函數),在低級版本Excel之中打開時,所有的函數名前都會有“_dfunc”前綴,需要将這些前綴去除,才能夠被EFunction對标函數識别。
2.60 XLOOKUP函數教程
2.60.1 函數基本參數
2.60.2 應用案例
XLOOKUP相比VLOOKUP函數,函數參數改變較大。VLOOKUP函數第二個參數被拆分成兩個參數。XLOOKUP靈活性更大。例如想查找“09班”工資,完整公式為:=XLOOKUP(I1,A2:A16,C2:C16,"",0,1),該公式能夠查找從上到下第一個“09班”的工資信息。
圖2.60.1 XLOOKUP函數正向精确查找
如果想實現逆向查找,隻需要将第六個參數,既查找模式改為1即可,完整公式為:=XLOOKUP(I1,A2:A16,C2:C16,"",0,-1)。
圖2.60.2 數據逆向匹配
XLOOKUP函數也能夠實現二分查找,實現二分查找隻需要将查找模式參數改為2即可,完整公式為:=XLOOKUP(I1,A2:A16,C2:C16,"",1,2)。需要注意二分查找前需要先對第二個參數進行排序,否則返回結果可能不是你想要的結果。參數2表示數據按照升序二分查找。
圖2.60.3 二分查找
如果數據想按照降序二分查找,隻需要将查找模式,改為-2即可,完整公式為:=XLOOKUP(I1,A2:A16,C2:C16,"",-1,-2)。
圖2.60.4 降序二分查找
通過觀察可以發現,VLOOKUP函數第四個參數含義在XLOOKUP函數内被拆解為兩個參數,分别控制,被拆解後,增加了函數的靈活性,同時也增加了函數的使用難度,大家需要對比分析下,才能掌握。
2.60.3 注意事項
XLOOKUP函數第二、第三個參數維數必須相同,如果維數不相同可能會報錯。
XLOOKUP第二個參數必須為一維數組,如果是二維數組函數會報錯。
XLOOKUP第三個參數,可以為多維數組。
圖2.60.5 第二參數為多維數組
2.61 XMATCH函數教程
2.61.1 函數基本參數
2.61.2 應用案例
例如想查找“09班”工資,完整公式為:=XMATCH(I1,A2:A16,0,1),函數會返回“09班”第一位匹配位置3。再配合index函數,就可以實現XLOOKUP函數效果,完整公式為:=INDEX(C2:C16,XMATCH(I1,A2:A16,0,1),1)。
圖2.61.1 匹配結果位置
圖2.61.2 配合index函數實現XLOOKUP函數效果
2.61.3 注意事項
函數XMATCH注意事項和XLOOKUP函數相同。
2.62 RANDARRAY函數教程
2.62.1 函數基本參數
2.62.2 應用案例
函數可生成随機數組,默認情況下生存随機小數,需要注意生存随機數後,将随機數值粘貼,樣例完整公式為:=EFRANDARRAY(5,6,1,10,FALSE)。
圖2.62.1 生成随機數
隻将最後一個參數改為TRUE,函數将返回最小值和最大值之間随機整數,完整公式為:=EFRANDARRAY(I2,J2,K2,L2,TRUE)。
圖2.62.2 生成随機整數
2.62.3 注意事項
EFRANDARRAY最小值參數必須比最大值參數小。
當第5個為取整模式時,最小值和最大值必須為整數。
2.63 MAXIFS函數教程
2.63.1 函數基本參數
2.63.2 應用案例
案例需求,獲取“09班”并且工資小于12000的最高工資,完整公式為:=MAXIFS(C2:C16,A2:A16,I1,C2:C16,"<"&J1)。
圖2.63.1 條件最大值
2.63.3 注意事項
MAXIFS函數條件值必須成對存在。
MAXIFS函數max_range和criteria_range行數或者列數必須相同。
2.64 MINIFS函數教程
2.64.1 函數基本參數
2.64.2 應用案例
函數求“09班”且工資大于12000的最低工資,完整公式為:=MINIFS(C2:C16,A2:A16,I1,C2:C16,">"&J1)
圖2.64.1 求“09班”小于大于12000最低工資
2.64.3 注意事項
MINIFS函數使用注意事項和MAXIFS函數相同,函數條件值必須成對存在。
MMINIFS函數max_range和criteria_range行數或者列數必須相同。
2.65 FILTER函數教程
2.65.1 函數基本參數
2.65.2 應用案例
案例需要過濾出來“09班”所有人員信息,如果未匹配到結果,使用空字符填充,完整公式為:=FILTER(A2:G16,A2:A16=I1,"")。FILTER過濾函數可以實現數據匹配效果,而且是數據多匹配,既有多少條記錄,該函數都能夠給你匹配出來。
圖2.65.1 匹配出來09班所有的記錄
如果想将“09班”并且工資大于12000的所有人員信息匹配出來,可以使用“*”将多個條件拼接起來,完整公式為:=EFFILTER(A2:G16,(A2:A16=I1)*(C2:C16>J1),"")
圖2.65.2 多條件是用“*”進行拼接
2.65.3 注意事項
FILTER函數隻能夠按行對數據進行過濾,如果需要按列對數據進行過濾,可以使用TRANSPOSE函數進行轉置,然後再對數據進行過濾。
FILTER第二個參數,雖然案例之中寫成邏輯判斷的形式,其實第二個參數本質上是邏輯值。例如下圖第二個參數選中H2:H16邏輯值時,數據前三行被過濾出來。
圖2.65.3第二個參數本質為邏輯值
2.66 TEXTJOIN函數教程
2.66.1 函數基本參數
2.66.2 應用案例
TEXTJOIN函數拼接文本非常簡單,拼接文本參數可以為多維數組或者Excel選區,案例完整公式為=TEXTJOIN("-",TRUE,B2:B16,D2:D16,E2:E16)。
如果拼接文本為多維數組,數據遍曆方式為,逐行遍曆。如果想逐列遍曆,可以使用TRANSPOSE将拼接的數據進行轉置,再用TEXTJOIN函數拼接文本。
圖2.66.1 TEXTJOIN拼接文本
2.66.3 注意事項
TEXTJOIN函數拼接文本禁止出現錯誤類型數,如果有錯誤類型數據,函數會報錯。
EFunction插件工具ETCombine函數也能夠實現數據拼接,注意比較和TEXTJOIN函數區别。
2.67 sort函數教程
2.67.1 函數基本參數
2.67.2 應用案例
函數按第1列和第二列排序,第1列升序,第2列升序,則完整公式為:=SORT(A2:G16,I1:J1,K1:L1,FALSE)。
sort_index參數可以為Excel選區,也可以是其他函數返回數組數據。參數3維度必須和參數2相同。
圖2.67.1 按行排序
2.67.3 注意事項
SORT排序函數無特殊使用禁忌,這裡需要對比下和EFunction工具ETSort排序徐函數區别。
2.68 SORTBY函數教程
2.68.1 函數基本參數
2.68.2 應用案例
根據班級和工資對數據進行排序,實現SROT排序函數同樣效果,完整公式為:=EFSORTBY(A2:G16,A2:A16,1,C2:C16,-1)。通過對比可知,兩個函數排序效果完全一樣。
圖2.68.1 根據第1列、第3列隊數據排序
SORTBY 函數根據行對數據排序也非常直觀,将樣例數據轉置後,對轉置後的數據排序,完整公式為:=SORTBY(B18:P24,B18:P18,1,B20:P20,-1)。
圖2.68.2 根據第1行、第3行對數據排序
2.68.3 注意事項
SORTBY函數排序的行或者列必須和數據區域相同,例如根據指定列排序,則指定列的行數必須和排序數據的行數相同。
SORTBY函數排序的行可以不在排序數據區域内,可以在排序數據區域外。
需要注意ETSortBy函數和SORTBY排序函數的區别。
2.69 ARRAYTOTEXT函數教程
2.69.1 函數基本參數
2.69.2 應用案例
函數ARRAYTOTEXT 将左側數據轉化為常量數組形式,完整公式為:=ARRAYTOTEXT(A2:G16,1)。需要注意轉化後的數據不能夠有空單元格。
圖2.69.1 将數組數據轉化為常量數組文本
如果單元格沒有空單元格,數據時可以恢複成數組公式形式。
={"09班","雷秀英",11458.3831061942,"山西",TRUE,"15㎡","合順家園";"02班","李麗",9042.22802859722,"天津","5室3廳5衛",TRUE,"合順家園";"09班","金平",12777.701755979,"内蒙古","4室1廳2衛","180㎡",TRUE;"09班","金平",12777.701755979,"内蒙古","4室1廳2衛","180㎡",TRUE;"01班","魏豔",6682.07975569962,"江蘇","4室1廳2衛","120㎡","海德花園";"06班","仲敏",13836.8376525414,"山西","6室2廳4衛",280,"永安家園";"08班","傅娟",6005.58549209602,"湖北","2室2廳1衛",92777,"綠島家園";"01班","酆桂英",8668.34466926012,"廣東","7室1廳3衛","300㎡","合順家園";"10班","俞平",6439.97549533181,"新疆","2室1廳1衛","115㎡","深南花園";"06班","賀明",14470.4214470766,"江蘇","4室1廳2衛","88㎡","北塢嘉園";"10班","鄒麗",11458.3831061942,"新疆","1室2廳1衛","53㎡","祥祺花園";"05班","董強",6175.64637896457,"湖南","3室2廳2衛","28㎡","拱辰星園";"07班","韶靜",6641.6820857269,"上海","5室2廳4衛","240㎡","佟馨家園";"04班","水敏",7308.19927690341,"湖南","2室2廳1衛","12㎡","大運家園";"08班","丁強",14687.1029986503,"山西","5室2廳2衛","268㎡","清景園"}
圖2.69.2 将轉化後的文本,恢複成數組數據
2.69.3 注意事項
函數ARRAYTOTEXT如果轉化的數據之中有空單元格數據,轉換後的文本數據,不能夠恢複成原始數據形式。
2.70 SEQUENCE函數教程
2.70.1 函數基本參數
2.70.2 應用案例
函數生成5行、6列,初始值為1,步長為-1的等差序列數組,完整公式為:=EFSEQUENCE(5,6,1,-1)。觀察生成的等差序列數組,可以發現生成的數組逐行填充。如果希望生成逐列填充的等差序列數組,可以用TRANSPOSE函數,将數組數據轉置實現。
圖2.70.1 等差序列數組
2.70.3 注意事項
函數SEQUENCE無特殊使用禁忌。需要注意和EFunction函數ETSequence函數對比區别。
2.71 CONCAT函數教程
2.71.1 函數基本參數
2.71.2 應用案例。
案例數據,将數據轉化為文本數據,并拼接起來,完整公式為:=CONCAT(A2:B4,D6:E9,F11:G13),
圖2.71.1 文本數據拼接
2.71.3 注意事項
函數CONCAT可以實現文本、數字和布爾類型數據拼接,如果數據之中存在錯誤類型數據,函數會返回錯誤類型數據,停止轉化文本數。需注意該函數和TEXTJOIN函數的區别和聯系。
2.72 VALUETOTEXT函數教程
2.72.1 函數基本參數
2.72.2 應用案例
函數VALUETOTEXT将選區内的數據轉化為文本格式,完整公式為:=VALUETOTEXT(A2:G16,FALSE),精簡模式下結果數組所有數據都被轉化為文本格式。
圖2.72.1 精簡模式
将第二個參數改為“TRUE”,原始數據之中,文本類型數據将被添加雙引号,完整公式為:VALUETOTEXT(A2:G16,TRUE)。
圖2.72.2 精确模式
2.72.3 注意事項
函數VALUETOTEXT無特殊使用禁忌。
2.73 UNIQUE函數教程
2.73.1 函數基本參數
2.73.2 應用案例
按行提取數據的唯一值,完整公式為=UNIQUE(A2:G16,FALSE,FALSE),相當于數據去重。
圖2.73.1 提取所有數據的唯一值
将最後一個參數該為TRUE,函數功能就變為将數據區域内兩條以上相同記錄的數據都被過濾掉,函數僅僅保留唯一值數據,完整公式為:=UNIQUE(A2:G16,FALSE,TRUE)。
圖2.73.2 提取僅僅出現一次的唯一值
2.73.3 注意事項
UNIQUE為提升數據處理效率,禁止使用整行或者整列引用。
UNIQUE提取唯一值,會根據所有的列提取唯一值。EFunction工具ETUniqueBy函數,能夠根據指定的列提取唯一值。可以對比下兩個函數的差異。
2.75 TEXTSPLIT函數教程
2.75.1 函數基本參數
2.75.2 應用案例
以下文本案例,想将該數據分割成數組數據樣式,完整公式為:=TEXTSPLIT(I1,",",";",FALSE,""),最終結果如下圖所示。TEXTSPLIT函數成功将文本數據還原成原來數據數據方式。
09班,雷秀英,11458.3831061942,山西,2室2廳1衛,15㎡,拱辰星園;02班,李麗,9042.22802859722,天津,5室3廳5衛,300㎡,佟馨家園;08班,傅娟,6005.58549209602,湖北,2室2廳1衛,92777,綠島家園;08班,傅娟,6005.58549209602,湖北,2室2廳1衛,92777,綠島家園;01班,魏豔,6682.07975569962,江蘇,4室1廳2衛,120㎡,海德花園;06班,仲敏,13836.8376525414,山西,6室2廳4衛,280,永安家園;08班,傅娟,6005.58549209602,湖北,2室2廳1衛,92777,綠島家園;01班,酆桂英,8668.34466926012,廣東,7室1廳3衛,300㎡,合順家園;10班,俞平,6439.97549533181,新疆,2室1廳1衛,115㎡,深南花園;06班,賀明,14470.4214470766,江蘇,4室1廳2衛,88㎡,北塢嘉園;10班,鄒麗,11458.3831061942,新疆,1室2廳1衛,53㎡,祥祺花園;05班,董強,6175.64637896457,湖南,3室2廳2衛,28㎡,拱辰星園;07班,韶靜,6641.6820857269,上海,5室2廳4衛,240㎡,佟馨家園;04班,水敏,7308.19927690341,湖南,2室2廳1衛,12㎡,大運家園;08班,丁強,14687.1029986503,山西,5室2廳2衛,268㎡,清景園
圖2.75.1 textsplit函數分割文本
2.75.3 注意事項
TEXTSPLIT函數無特殊使用禁忌。
2.76 TEXTBEFORE函數教程
2.76.1 函數基本參數
2.76.2 應用案例
提取以下文本之中第5個分号“;”之前所有文本,則完整公式為:=TEXTBEFORE(E2,";",5,TRUE)。
chevrolet chevelle malibu;buick skylark 320;plymouth satellite; amc rebel sst;ford torino;ford galaxie 500;chevrolet impala;plymouth fury iii;pontiac catalina;amc ambassador dpl
圖2.76.1 提取指定支付前所有文本
2.76.3 注意事項
TEXTBEFORE函數無特殊使用禁忌。
2.77 TEXTAFTER函數教程
2.77.1 函數基本參數
2.77.2 應用案例
提取以下文本之中第5個分号“;”之後所有文本,則完整公式為:= TEXTAFTER (E2,";",5,TRUE)。
chevrolet chevelle malibu;buick skylark 320;plymouth satellite; amc rebel sst;ford torino;ford galaxie 500;chevrolet impala;plymouth fury iii;pontiac catalina;amc ambassador dpl
圖2.77.1 提取指定文本之後所有文本
2.77.3 注意事項
TEXTAFTER 函數無特殊使用禁忌。
2.78 TOROW函數教程
2.78.1 函數基本參數
2.78.2 應用案例
函數TOROW用法簡單,按行遍曆數據完整公式為:=TOROW(A2:G16,1,TRUE)
圖2.78.1 二維數據轉化為一行
2.10.3 注意事項
函數支持數組公式,在實際應用場景之中,為了提升效率,第二參數盡量不用整列引用。
2.79 TOCOL函數教程
2.79.1 函數基本參數
2.79.2 應用案例
函數TOCOL用法簡單,按列遍曆數據完整公式為:=TOCOL(A2:G16,1,FALSE)。
圖2.79.1 将二維數據轉化為一列數據
2.79.3 注意事項
函數支持數組公式,在實際應用場景之中,為了提升效率,第二參數盡量不用整列引用。
2.80 HSTACK函數教程
2.80.1 函數基本參數
2.80.2 應用案例
利用HSTACK函數,将姓名、工資和面積數據拼接為一個數組數據,完整公式為:=HSTACK(B2:B16,C2:C16,F2:F16)。
圖2.80.1 使用HSTACK函數,将多列數據拼接成一個大數組
2.80.3 注意事項
HSTACK函數,各個拼接數組數據行數應該相同。
2.81 VSTACK函數教程
2.81.1 函數基本參數
2.81.2 應用案例
利用VSTACK函數,将不聯系的數據拼接為一個完整數組數據,完整公式為:=VSTACK(A2:G5,A8:G10,A13:G16)。
圖2.82.2 VSTACK拼接數據
2.81.3 注意事項
VSTACK函數,各個拼接數組數據列數應該相同。
2.82 WRAPROWS函數教程
2.82.1 函數基本參數
2.82.2 應用案例
下圖案例,左邊數據為一維數組,該一維數組也是由二維數組轉化而來,現在需要使用WRAPROWS函數将該一維數組,恢複成二維數組,該轉化完整公式為:=WRAPROWS(H2#,7)。
圖2.82.1将左邊一維數組轉化為7列二維數組
2.82.3 注意事項
WRAPROWS函數無特殊使用禁忌。
2.83 WRAPCOLS函數教程
2.83.1 函數基本參數
2.83.2 應用案例
下圖左邊一維數組為二維數組轉化而來,現在使用WRAPCOLS函數将該一維數組恢複成原來二維數組樣式,完整公式為:=EFWRAPCOLS(H2#,15)。
圖2.83.1 将左邊一維數組轉化為15行二維數組
2.83.3 注意事項
WRAPCOLS函數無特殊使用禁忌。
2.84 TAKE函數教程
2.84.1 函數基本參數
2.84.2 應用案例
提取數組前4行前4列數據,完整公式為:=TAKE(A2:G16,4,4)。
圖2.84.1 提取前4行前4列數據
提取倒數4行,倒數4列數據,完整公式為=TAKE(A2:G16,-4,-4)。
圖2.84.2 提取倒數4行、倒數4列數據
2.84.3 注意事項
TAKE函數用法簡單,無特殊使用禁忌。
2.85 DROP函數教程
2.85.1 函數基本參數
2.85.2 應用案例
想将左側數據前4行、5列數據丢棄,完整公式為=DROP(A2:G16,4,5)。
圖2.85.1 丢棄前4行、5列數據
丢棄後4行、5列數據完整公式為=DROP(A2:G16,-4,-5)。
圖2.85.2 丢棄後4行、後5列數據
2.85.3 注意事項
DROP函數用法簡單,無特殊使用禁忌。
2.86 CHOOSEROWS函數教程
2.86.1 函數基本參數
2.86.2 應用案例
使用CHOOSEROWS函數提取數據數組數據前三行,完整公式為:CHOOSEROWS(A2:G16,1,2,3)
圖2.86.1 提取數組數據前3行
CHOOSEROWS函數配合MATCH函數,實現數據匹配查找功能,完整公式為: =CHOOSEROWS(A2:G16,MATCH(I1,B2:B16,0))。
圖2.86.2 實現數據匹配查找功能
2.86.3 注意事項
函數支持數組公式,在實際應用場景之中,為了提升效率,第二參數盡量不用整列引用。
2.87 CHOOSECOLUMNS函數教程
2.87.1 函數基本參數
2.87.2 應用案例
使用函數提取如下數組數據的第二列和第一列,将兩列數據拼接成一個新數組,完整公式為:=EFCHOOSECOLUMNS(A2:G16,2,1)。
圖2.87.1 提取子數組,實現數據提取
利用CHOOSECOLUMNS函數數據交換能力,實現VLOOKUP函數逆向匹配查找,完整公式為=VLOOKUP(L1,CHOOSECOLUMNS(A2:G16,2,1),2,0)。
圖2.87.2 實現VLOOKUP函數逆向匹配
2.87.3 注意事項
CHOOSECOLUMNS函數提取是的數據列,應該在array數組範圍内。
2.88 EXPAND函數教程
2.61.1 函數基本參數
2.10.2 應用案例
将左邊數據擴充到15行10列,擴充後不足的數據使用“-”填充。完整公式為:=EXPAND(A2:G10,15,10,"-")
圖1 數據擴充
2.10.3 注意事項
EXPAND函數用法簡單,無特殊使用禁忌。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!