最近工作中用到EXCEL統計處理一些數據,正好之前有自學了一段時間的EXCEL,這次正好用上。為了加深印象,以后方便翻閱,就記錄下來。這篇會不斷補充。
IF 多條件判斷返回值
IF(logical_test, [value_if_true], [value_if_false])
示例: 小於500,且未到期的,返回“補款”
IF(AND(A2<500,B2="未到期"),"補款","")
職稱為工程師或高工的,返回“滿足”
IF(OR(C3="工程師", C3="高工"),"滿足","")
說明:兩個條件同時成立用AND,任一個成立用OR函數。
IFS 多場景判斷返回值
IFS(logical_test1,value_if_true1, logical_test2, value_if_true2, ...)
示例:
在一列中,根據不同的判斷條件,給出符合條件的值

IFERROR 把公式產生的錯誤值顯示為自定義值
IFERROR(value, value_if_error) 第一個參數為需要判斷的計算式,第二個參數為當第一個參數出錯時要返回的值。
示例:成績低於60,不及格
IFERROR(A2>=60,"不及格")
COUNTIF 單條件計數
COUNTIF(range, criteria)
示例:統計E列工資大於6000的人員數
COUNTIF(E:E, ">6000")
COUNTIF(E:E, ">"&M9) 假設M9單元格內容為6000
COUNTIFS 多條件計數
COUNTIFS(criteria_range1, criteria1, criteria_range2, criteria2, ...)
示例:統計屬於銷售部門,工資大於6000的員工人數
COUNTIFS(D:D, "銷售", E:E, ">6000")
SUMIF 按條件在查找區域進行查找,並返回查找區域對應的數據區域中數值的和
SUMIF(range, criteria, [sum_range])
示例:當不指定SUM_RANGE時,將直接對RANGE區域求和
SUMIF(C:C, ">1000"), 對大於1000的單元格求和
SUMIF(B:B, "果汁", C:C), 對B列為果汁對應的C列銷量求和
SUMIFS 多條件組合的數據求和
SUMIFS(sum_range, criteria_range1, criteria1, criteria_range2, criteria2, ...)
示例: 統計生產部門,男性工資的總和
SUMIFS(K:K, D:D, "生產", C:C, "男")
AVERAGEIF, AVERAGEIFS和SUMIF, SUMIFS類似
VLOOKUP, HLOOKUP 搜索用戶查找范圍中首列(或首行)中滿足條件的數據,並根據指定的列號(行號)返回對應的值。VLOOKUP對列數據按行進行查找,HLOOKUP對行數據按列查找
VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
HLOOKUP(lookup_value, table_array, row_index_num, [range_lookup])
[range_lookup]默認值為1或TRUE,使用模糊匹配方式進行查找。如果設置成0或FALSE,使用精確查找,同時支持無序查找。
示例:查找員工號為2267的員工姓名
VLOOKUP("2267", A1:D4, 2)

LEN 返回文本串的字符個數
LEN(text)
SUBSTITUTE 將目標文本中指定的字符串替換為新的字符串
SUBSTITUTE(text, old_text, new_text, instance_num)
示例:
將第二個狐替換成虎
SUBSTITUTE("狐假狐威", "狐", "虎", 2)
計算單元格中MANUAL字符的個數
(LEN(J13)-LEN(SUBSTITUTE(J13,"MANUAL",)))/LEN("MANUAL")

INDEX 根據給定的一個范圍(區域引用或數組)中指定的行號和列號來返回一個值,如果源數據是區域,則返回單元格引用;如果源范圍是數組,則返回數組中的某個值。
INDEX(reference, row_num, [column_num], [area_num])
INDEX(array, row_num, [column_num])
示例:從左側的數據表隔行提取,生成新的工作表
E4:INDEX($C$3:$C$8, ROW(A2)*2-1)
F4:INDEX($C$3:$C$8,ROW(A2)*2)

SMALL 取指定的第N小的值
SMALL(array, K)
示例:
取第一小的值
SMALL({10,15,20},1.5)等同於SMALLSMALL({10,15,20},1),結果為10
LARGE 取指定的第N大的值,與SMALL相反
VBA
示例:
在一列中,填入其他一列需求名中的ID號,ID號會是重復的,但在另外一個OtherSheet中已經有B列對應所有的ID號。先模糊匹配上ID號,再返回ID號為單元格值。
E17=VaildReq(OtherSheet!B:B,B17)

VBA代碼:
Function VaildReq(rng1 As Range, s As String) As String Dim Arr1 Dim r As Long r = rng1.End(xlDown).Row - rng1.Row + 1 Arr1 = rng1.Resize(r, 1) Dim i As Long For i = 1 To UBound(Arr1) If InStr(s, Arr1(i, 1)) Then If VaildReq = "" Then VaildReq = Arr1(i, 1) Else VaildReq = s End If Next End Function
當EXCEL添加了VBA代碼時,保存EXCEL得另存為 EXCEL啟用宏的工作簿(*.xlsm)格式。
