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)格式。

时间: 2024-10-24 17:34:53

Excel处理数据用到的一些公式和VBA脚本的相关文章

获取Excel部分数据并很据项目要求计算适宜性等级综合指数判断该地区的土壤适宜性

代码运行前请先导入jxl架包,以下代码仅供学习参考: 下图为项目中的Excel: ExcelTest02类代码如下: // 读取Excel的类 import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; public class ExcelTest02 { /* *该代码需要先获得exce

Excel表格数据导入到SQLServer数据库

转载:http://blog.csdn.net/lishuangzhe7047/article/details/8797416 步骤: 1,选择要插入的数据库--右键--任务--导入数据 2,点击下一步,选择数据源,excel文件路径,和版本信息(注:使用2010及以上版本的office,请先将格式转换为03 或07格式的以便识别) 3,选择目标数据库 4,执行成功 5,查看导入数据,可以重命名 以上就是数据库导入excel文件的步骤,数据库导出数据同理. 很多系统都给我们做好了不同格式文件的导

EXCEL规范数据输入教程-验证身份证号

EXCEL日常工作中经常会输入身份证号码,一不小心就可能出错,今天大飞老师就分享这样一个示例EXCEL规范数据输入教程-验证身份证号. 我们首先要保证在EXCEL中能正确输入身份证号码(PS:身份证号18位,直接输入就会变成科学计数法形式1.235E+17),可以通过两种方式.方式一:单引号+身份证号码如:'123456789111111111,方式二:先改变单元格类型为文本格式,然后再输入身份证号码. 我们要学习一个EXCEL函数LEN,可以返回字符的个数,我们填写一个身份证号码,通过LEN可

Python实用技巧:从Excel读取数据并绘制成图像

本文主要阐述如何使用python从excel读取数据,并用matplotlib绘制成二维图像. 主要知识点为: 使用xlrd扩展包读取excel数据 使用matplotlib绘制二维图像 美化图像,添加标注,注释,显示Latex风格公式,坐标点处透明化处理等技巧 适合人群:适合具有Python基础的用户,对于需要书写实验报告,学位论文,发表文章,做PPT报告的学员具有较大价值. 开发准备 打开Xfce终端,下载并安装的相关依赖 . $ sudo apt-get update $ sudo apt

把Excel的数据导入到数据库

将Excel作为数据源,将数据导入数据库,是SSIS的一个简单的应用,下图是示例Excel,数据列是code和name 第一部分,Excel中的数据类型是数值类型 1,使用SSDT创建一个package,创建Excel data source component,SSDT会在Connection Managers中创建一个Excel的connection 由于示例Excel的首行是列名,所以需要勾选"First row has column names",Excel connectio

由excel经纬度数据生成等值线过程

1.准备数据 2.转换成要素类,名称为xy1 3.定义投影 至此,将excel点数据导入的工作已经完成. 接下来,生成等值线: 1.克里金插值(Kriging) 2.生成等值线 由excel经纬度数据生成等值线过程,布布扣,bubuko.com

技巧一:Delphi XE3 Excel导入数据到StringGrid

procedure TDataEditDrFrm.btn8Click(Sender: TObject);varexcelx,excely:string;ExcelApp:Variant;workBook:OleVariant;excelRowCount,excelColumnCount:longint;i,j,row,row1:integer; begin row1:=1; pb1.Min:=0; dlgOpen1.Filter:='Excel文件|*.xls|*.xlsx'; if dlgOp

Java通过POI技术操作Excel(3)----数据导出

在之前的博客中,总结了Excel模板生成和Excel数据录入,然后剩最后一个模块,数据库中数据读取,在之前的基础上我们来看这一模块,应该已经非常容易了,接下来简单的介绍一下: 这里我们仍然以jsp+servlet为例,对SqlServer2005数据库进行操作,如下都是基本步骤: 1.连接数据库:2.根据sql语句获取数据库中值:3.将值进行导出操作: 首先,我们来记性数据库的连接,这个相信接触过java的人都不会陌生,我就不赘述了 1 public class DataBase { 2 pri

java导出数据库里的数据至Excel进行数据备份

调用部分: package com.otdrmsys.action; import com.otdrmsys.util.ResultSetToExcel; public class ExcelExport { public static void main(String[] args) { // String fileName = "otdr";//文件名,不带路径,不带.xls后缀 // String [] coloumItems = {"otdr编号",&quo