Excel處理數據用到的一些公式和VBA腳本


最近工作中用到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)格式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM