EXCEL,如何进行查找,单条件和多条件查询

备注:

  • 本文只涉及单元格 cells   range 等查询
  • 不涉及 find() 等函数公式对 字符串 string的查找

 

1 什么是查找? inputs----f(x)----outputs

1.1 你的目的

  • 你要查什么?
  • 查符合条件的(1或多个)单元格在哪儿?
  • 查符合条件的(1或多个)单元格的值是什么?
  • 查符合条件的(1或多个)单元格有没有
  • 查符合条件的(1或多个)单元格的其他

 

1.2 你的预期(先验预期,先验结果)

1.2.1 先要考虑用函数查询可能出现的结果

  • 查符合条件的(1或多个)单元格在哪儿?
  • 查符合条件的(1或多个)单元格的值是什么?
  • 查符合条件的(1或多个)单元格有没有
  • 查符合条件的(1或多个)单元格的其他

 

1.2.2 扩大思维宽度,完整的考虑问题

以上的分支,其实只是1个子集

  • if 如果查不到呢?怎么办,返回什么?
  • if 如果能查到,且是唯一的结果,返回所要的内容(是否有,序号,内容,等待...)
  • if 如果能查到,多个符合要求的结果,你是要多个?还是要1个(如果是要1个,要哪个呢?....)

 

1.2.3 考虑如何处理这些不同的输出

  • if 如果查不到呢?怎么办,返回什么?
  • 这个函数会报错么?
  • 这个函数会返回一个符合要求的最大值,以期最解决查找目标?比如lookup() ,这个是我需要的吗?这个特性可以故意利用吗?
  • if 如果能查到,且是唯一的结果,返回所要的内容(是否有,序号,内容,等待...)
  • 查符合条件的(1或多个)单元格在哪儿?  用match() 可以查一维数据(单行/单列)的相对或绝对位置(行序号号,列序号等)
  • 查符合条件的(1或多个)单元格的值是什么? 用vlookup()等查第1个,或lookup()查最后1个
  • 查符合条件的(1或多个)单元格有没有,用if() countif()
  • 查符合条件的(1或多个)单元格的其他, 用if() 因为if()可以定义多种返回类型
  • if 如果能查到,多个符合要求的结果,你是要多个?还是要1个(如果是要1个,要哪个呢?....)
  • 如果有多个符合要求的返回值,你是要多个,还是要1个?
  •       如果是要多个,那就用数组公式,数组存起来
  •       如果是要1个,你用的这个函数是否可以选择要的是哪个?
  •              如果是用large()等处理,可选择返回的是哪个?
  •             如果用的是vlookup()等处理,默认会返回符合条件第1个,无法挑选

 

1.2.4 如果是查多个,需要用数组公式

下面详细再说

 

1.2.5  上述原理解释

  • inputs:输入,原始数据
  • 函数/公式:处理过程
  • outputs: 输出,输出结果

 

1.3 哪些会影响输出的结果

1 .3.1 raw_data 和 f(x) 的关系

  • 数据+查询目的+查询函数,可能有很多种不同的组合

 

1.3.2 会影响查询结果的重要因素,查询数据区存在几种情况:不同的排序!

排序,排序,还是排序!!!(数值 数组才考虑排序,且不在乎重复,只在乎排序)

  • 升序数值(不在乎重复)
  • 降序数值(不在乎重复)
  • 乱序

 

1.3.3  使用的函数和参数不同

比如 match(1,range,0)  match(1,range,1) match(1,range,-1)

 

1.3.4 其他

  • 比如
  • 原始数据错误
  • 拼写错误
  • 函数错误等等

 

2 EXCEL查找数据的基础方法:菜单查找

  • crtl+F 查找
  • 注意:查找数据,查找公式
  • 注意:查找下一个  查找全部
  • 注意:查找,查找全部
  • 替换功能
  • 筛选功能

 

 

3 单条件查询

 

3.1 if()

  • if() 是最基础的判断函数,基础的基础
  • IF(B9=L$5,L$5)  或 IF(B9=L$5,row(L$5))
  • 最弱的地方:每次只能判断1个数据,多个数据判断,需要往下拖公式 (和数组公式组合用有奇效~)
  • 最强的地方:if() 基础而强大,如果能找到,后面true的地方,些row(A1)  或 =A1 取行数,内容都可以

 

3.2 match()

  • match() 这个函数本身只适合一维(也就是1行或1列的情况,但可以和其他函数组合使用处理2维数据)
  • 只适合取行号(绝对或相对的)
  • 可以取绝对行号,或者相对 行序号,看match() 内部本身怎么写
  • 函数返回结果:如果有多个,只能返回第一个符合条件的值的行号
  • match(,0)   match(,1)   match(,-1) 
  • match(,0) ,如果可以查到显示行序号,查不到显示为#NA
  • match(,1) 

需要升序排列(从小到大),如果可以查到显示行序号
如果要查的目标,比最小的还小,查不到显示为#NA
如果要查的目标,比最大的还大,则会显示最接近(最大/最末尾的)的值

  • match(,-1) 

需要降序排列(从大到小),如果可以查到显示行序号
如果要查的目标,比最小的还小,则会显示最接近(最小/最末尾的)的值
如果要查的目标,比最大的还大,查不到显示为#NA

 

3.3 match()和其他函数的套用

index() 和 match() 联合使用

  • 因为 match() 可以取得行号(绝对/相对行序号)
  • index() 可以匹配着用 绝对/相对行号 
  • INDEX(D9:D28,MATCH(J5,B9:B28,0))
  • 也是自由数组偏移
  • 只能查到第1个

 

3.4 vlookup()

  • vlookup只适合查内容,尤其是偏移的其他列的内容
  • 但取不了行号等
  • 函数返回结果:只能查到符合条件的第1个

 

3.5 hlookup()

  • 类vlookup()

 

3.6 lookup()

  • 无比强大,也相当麻烦
  • 最大的优势:返回的是符合条件的最后1个数据(直接使用需要升序排列)
  • 原理是二分法查数据
  • lookup() 中间过程会用到序号(绝对的或相对的)
  • LOOKUP(H5,B9:B28,D9:D28)
  • LOOKUP(H5,B:B,D:D)

lookup() 使用注意点

  • 需要用lookup() 查询的时候,要查询的数组,必须是升序的。(目标数组可以不用),如果不是升序,会出现错误
  • 如果lookup() 数据升序,且查不到目标值,不会报错,函数会返回最后一个值的序号。
  • 这个最好的就是,允许数组自由偏移。
  • 既不需要vlookup()那样从左边第1列查起,也不需要2列对齐,但2列最好数据个数相同。

lookup() 的特殊写法

  • lookup()有一种特殊写法,可以无视 查询数组是否排序
  • lookup(1,0/(a:a=15,b:b))

lookup() 的特殊用法---查多列

  • 如果 lookup() 查找的是多列,那么会自动按区间匹配,<=的合适区间
  • LOOKUP(G21,B9:C13)

 

3.7 数组公式{if()} 也可以用于单一条件查询

  • 数组公式
  • 这里通过先计算数组,中转过程,最后得到1个值
  • =INDEX(C:C,IF(B9:B28=N5,ROW(B9:B28)))
  • 这里得到的是1个数组,但得到数组并不是目的
  • =INDEX(C:C,LARGE(IF(B9:B28=N5,ROW(B9:B28)),2))
  • 得到数组只是中间过程,最终还是要得到数值

 

举例,用这个看计算过程

INDEX(C9:C28,IF(B9:B28=看计算给N5,ROW(B9:B28)))

 

 

 

4 多条件查询

4.1 EXCEL的内置单个函数,sumifs() 或 countifs(),只能返回 或 查到的个数

  • 并且是按内容查找
  • 并且只支持单列,单行,也是一维的!

 

  • 比如下面得2个,多条件查询
  • SUMIFS(C10:C29,A10:A29,G6,B10:B29,G7)
  • COUNTIFS(A10:A29,I6,B10:B29,I7)

 

4.2 match()和其他函数的套用

  • 虽然match() 也只支持单行,单列。选范围就报错。
  • 但是match() 可以和其他函数结合,match()只查单行,单列内容
  • index(match())   查行/列 偏移
  • indirect("r",match(),"c",match(),false)   用r1c1去查找行列交叉的
  • match(match())
  • vlookup(match())

 

 

4.3 按内容查找,按行列号查找,按行列序号查询

  • 根据内容去查找 , 比如 sumifs()  countifs()
  • 根据行列号去查找  indirect("r",match(),"c",match(),false) 
  • 根据行列号偏移去查找 vlookup(match())

 

 

4.4 笨办法:就是加辅助列。从而多条件转1条件,不完美,但是好用。

  • 下面得例子
  • 直接生成一个辅助列,把   "条件1"& "识别特征"&" 条件2"  作为新得查询条件,就从多条件转为1条件了。
  • MATCH(K6&"and"&K7,D10:D29,0)
  • VLOOKUP(M6&"and"&M7,D10:D29,1,FALSE)

 

5 多条件查询方法:数组公式

 


 

 

 

 

 

 

 

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
第1篇 Excel基本功能 • 冻结窗格 • 名称框定位 • 区域名称显示 • 多表区域设置格式 • 自动填充功能 • 数据的格式化 • 设置数字格式 • 数据类型转换 • 自定义数字格式 • 数据的填充复制 • 数据的查找替换 • 格式查找替换 • 数据中含通配符的查找 • 表格边框设置立体效果 • 如何在Excel自动扩展格式 • 如何在Excel自动套用格式 • 自定义工具栏 • 非连续区域集中打印 • 设置打印标题 第2篇 使用公式和函数 • 使用简公式计算产品销售利润 • 使用相对和绝对引用计算产品销售额与利润 • 多表区域引用 • 利用混合引用制作九九乘法表 • INDEX函数和SUMIF函数特殊情况下的易失性 • Excel公式结果的检验和验证 • 创建Excel动态名称来实现采购数据的动态引用 • 成绩检索表-Excel名称代替引用 • Excel图表中使用名称 • 相对引用和混合引用定义名称 • 借用“列表”定义动态名称 • Excel工作表复制的名称问题 • 利用文本比较标识首次出现的记录 • 更改数据字母大小写 • 利用MID 函数提取身份证号码中的8 位生日数字 • 使用文本提取函数进行数字分列 • 使用查找函数拆分空格分隔的数据 • 实现EAN-13条码的校验位的算法 • 利用文本查找函数进行模糊查找 • 利用SEARCHB 函数分离全半角字符 • 利用FIND 函数提取连续数字 • 统计开奖号码中不重复数字个数 • 取得零件规格中的最后序号 • 利用TEXT函数格式化设备编号 • 从身份证号码中提取员工的生日信息 • 使用TEXT 函数显示中文格式的年份 • 将数值转换为商业发票中的中文大写金额 • 生成中文大写金额 • 利用CELL 函数取得动态工作表标签名称 • 利用MOD 函数生成数字校验码 • 利用MOD 函数实现培训反馈表中票数求和 • 利用取舍函数生成重复个数的自然数序列 • 按照特定条件进行取舍计算 • 利用取舍函数解决四舍六入问题 • 产生50~100 的随机整数 • 利用随机函数仅生成数字和字母 • 利用随机函数实现考试座位随机编排 • 日计帐中的余额累计 • 计扣个人所得税 • 统计月末考试中大于等于平均分的总分 • 利用CHAR 函数生成A~Z 序列 • 利用DATE 函数生成指定日期 • 利用运算符计算日期相差天数 • 利用日期函数计算公民年龄 • 利用日期函数计算员工退休日期 • 计算上月的天数 • 计算目标日期所在季度的最后一天 • 返回目标日期是全年中的第几天 • 判断是否为闰年 • DATEDIF函数基本用法 • 利用日期函数计算员工工龄 • 计算指定日期的星期值 • 计算上月月末日期的星期 • 指定某月的第几周的天数 • 推算出指定年份的母亲节和父亲节日期 • 计算上个月的考勤天数 • 计算基金赎回入账日期 • 加班时间的累加 • 计算车间工人工时 • 员工加班时间的舍入计算 • 使用VLOOKUP 函数进行员工信息查询 • 利用HLOOKUP 函数查询产品月销售量 • 查找某员工是否登记在员工信息表中 • 判断员工公积金是否重复提缴 • 查询申购基金的申购手续费 • 从成绩明细表中查询学员总成绩 • 利用LOOKUP 函数实现无序查询 • 取得最后非空元格数值 • 利用行列号函数生成永恒的序号 • 查询员工信息表中所有人事信息 • 利用INDIRECT函数动态统计产品销量 • 利用OFFSET函数产生区域引用 • 利用INDEX函数隔行提取数据 • 多条件组合查询资料 • 利用INDEX函数结合MATCH函数进行向左查找 • 实现根据学员成绩查询等级 • 确定工资中最后一名员工的位置 • 根据工资表生成工资条 • 利用CHOOSE函数重新生成内存数组 • 利用查找函数进行多表数据标识 • 实现多区域联合判断求值 • VLOOKUP函数实现向左查询 • 从生产配件编号中提取连续的数字编码 • 利用MATCH 函数提取连续数值 • 查询并汇总各产品销售额 • 利用MATCH函数汇总最后3 天的产品销售额 • 利用RANK函数实现按班级进行动态排名 • 利用COUNT函数统计培训反馈表中的平均票数 • 动态引用商品进货明细表 • 统计培训课程表中各部门的授课数 • 统计进货量大于5小于10的型号数量 • 标注各种水果第1次出售日期 • 查询重复输入员工身份证 • COUNTIF函数使用通配符统计示例 • 汇总指定公司的产品季度销量 • 统计二季度手机销量情况 • 利用SUMIF 函数实现多表汇总 • 按区间统计数值个数 • 学员英语成绩分段统计人数 • 计算比赛评分表中频率最高的分值 • 利用极值函数限定销售价格 • 取得不重复的第2 个最低报价 • 统计各科成绩大于等于平均分的总平均分 • 计算体操比赛的选手得分 • 统计年度培训完成情况表 • 在筛选条件下生成连续序号 • 按学员成绩进行排名 • 根据比赛成绩实现中国式排名 • 根据学员成绩的百分比占比划分等级 • 统计购买商品的不重复VIP 用户数 • 商品月度销量统计汇总 • 统计足彩数据中最多连胜场数 • 利与复利的比较 • 终值系数和现值系数 • 普通年金终值和现值的计算过程 • 预付年金终值和现值的计算过程 • 递延年金终值和现值的计算过程 • 年金终值系数表和年金现值系数表 • 名义利率与实际利率 • 整存整取 • 零存整取(一) • 零存整取(二) • 房屋的价值(一) • 房屋的价值(二) • 买卖房屋的利润率 • 投资经营房屋的利润率 • 多久才能拥有100万(一) • 多久才能拥有100万(二) • 孩子上大学的学费(一) • 孩子上大学的学费(二) • 孩子上大学的学费(三) • 利用Excel财务函数计算住房按揭还款计划 • 相同间隔时间序列的现金流量净现值 • 相同间隔时间序列的现金流量内部收益率 • 不规则时间序列和现金流量的净现值与内部收益率 • 考虑融资成本和再投资收益的内部收益率 • 直线折旧法 • 年限总和折旧法 • 固定余额递减折旧法 • 双倍余额递减折旧法 • 可变余额递减法的累计折旧 • 累计到第2年第3 季度中期的累计折旧 • CONVERT函数的应用 • 使用CONVERT函数应注意正确书写 • 多元格数组公式计算销售金额 • 元格数组公式计算销售总额 • 两个一维数组的乘法运算 • 两个一维数组的连接运算 • 使用两个一维数组构造二维数组 • 部门评价等级转换 • 使用MMULT 函数计算产品结构指数 • 产生1-10 的自然数垂直序列和水平序列 • 等比例构造一维循环数组 • SUMIF函数对产品产量进行逐行汇总 • 利用MMULT函数实现数组累加 • 将销售明细表中合并元格填充地区名称 • 将二维数组按列转换为一维数组 • 数组公式实现条件求和 • 计算一周中内存采购的平均价格 • 统计各品牌的商品销量汇总 • 利用COUNT函数代替SUM 函数统计不重复记录 • 标识零件规格号中的非法数据 • 将中文大写日期转换成日期序列 • 实现按日期和客户名查询数据 • 按条件实现总表拆分到分表 • 按比赛成绩进行降序排列 • 对员工信息表中员工姓名排序 • 从培训课程安排表中提取讲师部门 • 从商品明细表中提取唯一品牌名称 • 根据商品和品牌确定唯一品牌名称 • 多维引用示例的数据来源 • 利用INDIRECT函数返回对多表区域的引用 • 求金额最大的费用项目 • 提取无重复的水果清 • 计算按原始股折算的某股票最高价格 • 计算用餐记录分摊实例 • 计算最好成绩和的最优成绩实例 • 跨多表条件求和 • 宏表函数取得工作表标签名称 • 标识商品销售表中红色字体的记录 • 按照商品采购表中的数值格式显示查询结果 • 提取指定元格的公式表达式 • 根据立方体指定参数计算公式结果 • 提取固定字符间隔的零件规格号 第3篇 创建图表和图形 • 图表种类 • 柱形图 • 条形图 • 折线图 • 饼图 • XY散点图 • 面积图 • 圆环图 • 雷达图 • 曲面图 • 气泡图 • 股价图 • 圆柱图、圆柱图和棱锥图 • 自定义图表类型 • 线-柱图 • 两轴折线图 • 对数图 • 组合图 • 创建自定义图表 • 添加误差线 • 设置轴格式 • 分类坐标轴标签 • 空元格的绘制方式 • 设置个数据点格式 • 设置透明色 • 多工作表数据作图 • 添加趋势线 • 设置三维图表 • 数字条件格式 • 设置坐标轴的交点 • 使用次坐标轴 • 图表上的文本框 • 图表的组合 • Microsoft Graph图表 • 图表转为图片 • 设置自动筛选 • 添加辅助行 • 定义名称 • 数据透视图 • 使用Excel VBA • 添加水平线 • 添加垂直线 • 复合饼图 • 等高线图 • 直方图 • 排列图 • 控制图 • 动态对比图 • 动态股票图 • XY散点折线图的内插值计算 • 自选图形种类 • 插入自选图形 • 添加文本 • 自选图形绘制线条和连接符 • 旋转和翻转 • 对齐和分布 • 自动靠齐 • 设置叠放次序 • 设置组合 • 设置阴影 • 设置三维效果 • 设置超链接 • 制作室内平面图 • Excel图形 • Excel工作表背景 • 插入图片到Excel工作表 • 图片的调整 • 裁剪图片 • 旋转图片 • 设置图片的透明色 • 插入动态图片 • 制作组织结构图 • 流程图 • 循环图 • 射线图 • 棱锥图 • 维恩图 • 目标图 • 创建艺术字 • 插入剪贴画 第4篇 使用Excel进行数据分析 • 数据列表的实例 • 使用记录为数据列表命名动态名称 • 数据列表按行排序 • 含有公式的数据排序 • 简排序的例子 • 自定义排序 • “关系或”条件的高级筛选 • “关系与”条件的高级筛选 • 利用高级筛选选择不重复的记录 • 三个“关系或”条件的高级筛选 • 使用计算条件Excel高级筛选 • 同时使用“关系与”和“关系或”的Excel高级筛选 • 创建分类汇总 • 列表 • Excel分列功能 • 使用“导入外部数据”功能导入标准工时数据 • Microsoft Query检索数据源 • 销售数据清 • 定义名称创建动态数据透视表 • 分页显示数据透视表 • 使用数据列表功能创建动态数据透视表 • 按日期或时间项组合 • 按数字项组合 • 指定项组合 • 创建计算字段 • 添加下计算项 • 获取Excel数据透视表数据 • 创建复合范围的Excel数据透视表 • 数据透视图 • 模拟运算表 • 变量求解 • 规划求解 • 分析工具库 第5篇 使用Excel的高级功能 • 设置元格数值条件 • 设置公式条件 • 复制删除条件格式 • 应用示例 • 优先顺序 • Excel数据有效性允许的条件 • 定位复制删除Excel数据有效性 • 数据有效性的高级应用 • 数据有效性的高级应用_多表不重复输入 • 分级显示 • 合并计算 第6篇 使用Excel进行协同 • Excel元格引用建立链接统计奖金总额 • 超链接实例 • 创建Excel动态超链接 • 发布(不)具有交互性的网页_Excel的交互性 • 创建Web查询 • Excel和ASP • Excel与XML数据 • Excel与其他应用程序共享数据 • 使用Excel工作组 第7篇 Excel自动化 • 录制宏 • VBA语言基础 • 与Excel进行交互 • Excel的自定义函数 • 如何操作Excel工作簿、工作表和元格 • 工作表的Change事件 • 工作表中高亮显示行和列 • 文件保存提醒 • 关闭工作簿是恢复Excel默认设置 • 设置Excel工作簿打开时的界面 • VBA事件激活的顺序 • VBA事件的激活与禁止 • 插入命令按钮 • 使用命令按钮设置元格格式 • 使用复选框控件制作多选调查问卷 • 使用选项按钮控件制作项调查问卷 • 使用组合框控件制作调查问卷 • 使用文本框控件快速录入三位数字 • Excel工作簿中插入用户窗体 • 在用户窗体中插入控件 • 为窗体控件添加事件代码 • 用户窗体的QueryClose事件和Terminate事件
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值