精华内容
下载资源
问答
  • 条件查询
    千次阅读
    2022-06-21 10:47:45

    如何根据医院名称、报表时间和报表类别查询,按定点医院名称、分类进行分组,计算各项费用之和。相关的数据与统计表如下:
    表数据:

    希望点击 "查询" 按钮后就能自动计算,将相应的数据按上面形式填充到 A4:L18 之间的表格。

    可以使用集算器, 按所给条件查询汇总后再被 VBA 调用。
    集算器安装包可去润乾网站下载职场版,运行时需要一个授权,免费版本就够用。

    我们将上述事例实现步骤:
    1. 在集算器新建脚本,命名为 hospital.dfx,设置脚本参数:


    设置参数分别是 Excel 文件名,医院名称、报表日期、报表类别。

    2. 编写脚本:

    AB
    1>name=(if(name!="" && name, name, null))/条件医院名称
    2>pdate=(if(pdate!="" && pdate, date(pdate,"yyyy/MM/dd"), null))/条件报表时间
    3>type=(if(type!="" && type, type, null))/条件报表类别
    4=file(arg1).xlsimport@t(;2).select((name==null || 定点医疗机构名称 ==name) && (pdate==null || 报表时间 ==pdate) && (type==null || 报表类别 == type) && (报表类别) )/根据条件查询, 无条件时用报表类别去掉空记录
    5=A4.groups(定点医疗机构名称, 分类;sum( 发生人次): 发生人次,sum(总费用): 总费用,sum(统筹支付): 统筹支付,sum(IC 卡支付):IC 卡支付,sum(公务员补助): 公务员补助,sum(大额补助): 大额补助,sum(扣减费用): 扣减费用,sum(实际应付): 实际应付 )/按定点医疗机构名称、分类进行分组汇总
    6=A5.group(定点医疗机构名称)/按定点医疗机构名称
    7=A6.news(~;A6.#: 序号, 定点医疗机构名称, 分类, 发生人次, 总费用, 统筹支付,IC 卡支付, 公务员补助, 大额补助, 扣减费用, 实际应付,A6.~.sum( 实际应付): 合计支付 )/按每组生成序号及合计支付处理
    8>A7.run(if( 序号 == 序号 [-1], 序号 = 定点医疗机构名称 = 合计支付 =null))/将每组非首行记录的序号、合计支付改为空
    9return A7/返回值

      3.    设置参数后,调试运行一下,可看到 A4 格值:

    A4报表时间费用所属经办机构定点医疗机构名称报表类别。。。
    2014-08-01思上县社会保险事业局江南市妇幼保健院城镇职工
    2014-08-01湖山港市社会保险事业局江南市妇幼保健院城镇职工
    2014-08-01港口区社会保险事业局江南市妇幼保健院城镇职工
    ….

    也能看到其它格值,在此就不再一一列出。 4.       执行脚本返回结果 :

    A7序号定点医疗机构名称分类发生人次总费用。。。合计支付
    1江南市妇幼保健院住院2929511.3749500.73
    (null)(null)普通门诊24929760.57(null)

    按所提供的三个条件组合查询,对查询结果汇总统计,其中 A7 增加了序号、合计支付。

    4 、加载插件 xll

    在 Excel 下,需要加载集算器插件 ExcelRaq.xll,插件存放在集算器安装目录 raqsoft\esProc\bin 下。若已加载则可跳过此步。

    在 Excel 中通过菜单的文件 --> 选项 --> 加载项 --> 转到 --> 浏览 --> 选择 ExcelRaq.xll 文件, 加载项中勾选 EsprocXll, 此时就启用了 ExcelRaq 插件了。

    5 、编写 VBA 脚本调用集算器代码

    vba 脚本函数为 CommandButton1_Click (),程序根据 hospital.dfx 脚本传递对应的 4 个参数。调用 dfx 脚本后,程序将汇总数据自动填充表格。Application.Run() 中的参数分别是 SPL 接口函数 esproc, 要调用的 d:/app/hospital.dfx 脚本、当前的 Excel 文件、医院名称、报表日期和报表类别。

    由于 vba 脚本函数命名已与按钮关联,只需点击 "查询" 按钮执行脚本,生成效果如下:

    除了最后一行求总支付金额外,其它数据均由 dfx 脚本提供,省去了由于分类数不一致,合计支付计算时,行之间还需要相应处理。

    更多相关内容
  • 本源码例程根据条件动态生成sql语句,执行查询,包括模糊查询
  • 条件查询条件查询条件查询条件查询条件查询条件查询条件查询条件查询条件查询条件查询条件查询条件查询条件查询条件查询条件查询条件查询条件查询条件查询
  • 依据条件动态生成sql语句,执行查询,包括模糊查询
  • C# List多条件查询聚合查询,List条件查询Where与GroupBy聚合查询
  • 该章节我们来学习条件查询,有了条件查询,就可以查找出符合条件的查找记录了。比如说 "10" 和 "20" 部门月薪超过 "2000" 的员工信息,只有条件查询才能帮我们筛选出这种想要的信息记录。
    万叶集
    🎉 隐约雷鸣,阴霾天空。 🎉
    🎉 但盼风雨来,能留你在此。 🎉


    前言
    ✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS - 全栈 赋能的博主 ✌
    🏆 CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 🏆
    📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
    💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬
    🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦


    专栏系列(点击解锁)学习路线(点击解锁)知识定位
    🔥Python全栈白皮书🔥 零基础入门篇 以浅显易懂的方式轻松入门,让你彻底爱上Python的魅力。
    语法进阶篇 主要围绕多线程编程、正则表达式学习、含贴近实战的项目练习 。
    自动化办公篇 实现日常办公软件的自动化操作,节省时间、提高办公效率。
    自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。
    数据库开发实战篇 掌握关系型与非关系数据库知识,提升数据库实战开发能力。
    爬虫入门与实战 更新中
    数据分析篇 更新中
    前端入门+flask 全栈篇 更新中
    django+vue全栈篇 更新中
    拓展-人工智能入门 更新中
    网络安全之路 踩坑篇 记录学习及演练过程中遇到的坑,便于后来居上者
    网安知识扫盲篇 三天打鱼,不深入了解原理,只会让你成为脚本小子。
    vulhub靶场漏洞复现 让漏洞复现变得简单,让安全研究者更加专注于漏洞原理本身。
    shell编程篇 不涉及linux基础,最终案例会偏向于安全加固方向。 [待完结]
    WEB漏洞攻防篇 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
    渗透工具使用集锦 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
    点点点工程师 测试神器 - Charles 软件测试数据包抓包分析神器
    测试神器 - Fiddler 一文学会 fiddle ,学不会倒立吃翔,稀得!
    测试神器 - Jmeter 不仅是性能测试神器,更可用于搭建轻量级接口自动化测试框架。
    RobotFrameWork Python实现的自动化测试利器,该篇章仅介绍UI自动化部分。
    Java实现UI自动化 文档写于2016年,Java实现的UI自动化,仍有借鉴意义。
    MonkeyRunner 该工具目前的应用场景已不多,文档已删,为了排版好看才留着。

    在这里插入图片描述


    该章节我们来学习条件查询,有了条件查询,就可以查找出符合条件的查找记录了。比如说 “10” 和 “20” 部门月薪超过 “2000” 的员工信息,只有条件查询才能帮我们筛选出这种想要的信息记录。



    🐳 条件查询

    很多时候,用户感兴趣的并不是数据表里的全部记录,而只是数据当中能够满足某一种条件或某几种条件的记录。这一类条件要用 WHERE 子句来实现数据的筛选,语法如下:

    SELECT ...... FROM ...... WHERE 条件 [AND|OR] 条件 ......;    
    
    -- 如果 WHERE 子句后面的多个条件必须都满足,使用 AND 关键字,代表 "逻辑与" 关系。
    -- 如果 WHERE 子句后面的多个条件满足一条即可,则使用 OR  关键字,代表 "逻辑或" 关系。
    

    条件查询示例 SQL 如下:

    利用 WHERE 子句 与 AND 关键字,实现条件查询的 “逻辑与” 的结果集展示

    SELECT empno, ename, sal FROM t_emp WHERE deptno=10 AND sal >= 2000 ;
    
    -- 利用 WHERE 子句查询 t_emp 表中 deptno(部门)为 10 ,且月薪大于等于 2000 的员工信息
    

    利用 WHERE 子句 与 AND、OR 关键字,实现条件查询的 “逻辑与”、“逻辑或” 的结果集展示

    SELECT empno, ename, sal FROM t_emp WHERE (deptno=10 OR deptno = 20) AND sal >= 2000 ;
    
    -- 利用 WHERE 子句查询 t_emp 表中 deptno(部门)为 10 或者 20 ,且月薪大于等于 2000 的员工信息
    


    🐳 四类运算符

    使用 WHERE 子句的时候,判断条件是否成立会用到四种运算符,如下:

    序号运算符
    1数学运算符
    2比较运算符
    3逻辑运算符
    4按位运算符


    🐬 数学运算符

    序号表达式意义例子
    1+加法1+2+3
    2-减法5-2-1
    3*乘法5*5
    4/除法230/15
    5%求模10%3

    以上这些和 Python 中的算术运算符是一样的对于我们来说是没有什么难度的。

    数学运算符 SQL 语句示例,如下:

    查询 10 部门中年收入超过 15000 且工龄超过 20年 的员工的信息。

    SELECT empno, ename, sal, hiredate
    FROM t_emp
    WHERE deptno = 10 
    AND (sal + IFNULL(comm,0)) * 12 >=15000
    AND DATEDIFF(NOW(),hiredate)/365 >= 20
    
    -- IFNULL(expr1,expr2):IFNULL 函数的语法,当第一个参数的值为null 的时候,则返回第二个参数的值
    -- DATEDIFF(expr1,expr2):DATEDIFF 函数的语法,计算第一个日期与第二个日期的偏差时间差
    -- NOW():NOW 函数可以获得当前日期
    


    🐬 比较运算符 - 1

    序号表达式意义例子
    1>大于sal > 3500
    2>=大于等于sal >=3500
    3<小于sal <3000
    4<=小于等于sal <=3000
    5=等于deptno = 10
    6!=不等于deptno != 30
    7IN包含deptno IN (10, 20, 30)

    这些比较运算符的用法呢与 Python 中的比较运算符用法是一样的,没有什么可解释的。接下来我们就编写一个查询语句,去查询 10、 20、 30 部门里 1985年以前入职的,而且不能是 "SALESMAN" 职位的员工。

    SQL例句如下:

    SELECT empno, ename, sal, deptno, hiredate
    FROM t_emp
    WHERE deptno IN (10, 20, 30) 
    AND job != 'SALESMAN' AND hiredate < '1985-01-01';
    


    🐬 比较运算符 - 2

    序号表达式意义例子
    8IS NULL为空comm IS NULL
    9IS NOT NULL不为空comm IS NOT NULL
    10BETWEEN AND范围sal BETWEEN 2000 AND 3000
    11LIKE模糊查询ename like “A”
    12REGEXP正则表达式ename REGEXP “[a-zA-Z]{4}”

    SQL 语句示例如下:(查找 “comm” 字段为 “NULL” ,月薪在 2000 到 3000 之间,且姓名中包含有 “A” 字符 的员工信息)

    SELECT  ename, sal, comm
    FROM t_emp
    WHERE comm IS NULL
    AND sal BETWEEN 2000 AND 3000 AND ename LIKE "%A%";
    

    再给大家演示一个 正则表达式 的SQL 语句案例:(这里大家需要新增一条 ename 字段为中文的数据【通过图形操作点击 "+" 号即可完成】)

    SELECT ename, sal, comm
    FROM t_emp
    WHERE comm IS NOT NULL
    AND sal BETWEEN 2000 AND 3000 
    AND ename REGEXP "^[\\u4e00-\\u9fa5]{2,4}$";
    
    -- REGEXP:正则表达式匹配的是中文的字符集范围,且中文的长度是 2-4 
    


    🐬 逻辑运算符

    逻辑运算符是用来定义表达式之间的逻辑关系,见下表:

    序号表达式意义例子
    1AND与关系sal > 3500 AND comm IS NULL
    2OR或关系empno = 7935 OR deptno =20
    3NOT非关系NOT deptno =20
    4XOR异或关系sal > 2000 XOR comm IS NULL

    PS:"XOR" 需要注意的地方是,只有当两个 条件都为 TRUE 或者 FLASE 的情况下才会返回 TRUE 或者 FLASE ;当两个条件不一致的情况下则返回 FLASE 。


    接下来看一个 “XOR” 异或关系的 SQL 语句示例:

    SELECT deptno, ename, sal
    FROM t_emp
    WHERE NOT deptno IN(10, 20) XOR sal >= 2000;
    


    🐬 按位运算符(也叫做二进制按位运算)

    二进制按位运算的本质是将参与运算的两个操作数,按照对应的二进制数逐位进行逻辑运算;所以做 按位运算 之前,会先将操作数变成二进制数,然后进行位运算,计算的结果再从二进制变为十进制输出。(二进制运算在 MySQL 中运用的特别的少,所以这里简单的介绍一下,按位运算符就好了。)

    运算符作用
    &按位与
    |按位或
    ^按位异或
    !取反
    <<左移
    >>右移

    按位运算SQL参考示例如下:



    🐬 WHERE 子句的注意事项

    在 WHERE 子句中,条件执行的顺序是从左到右的。所以我们应该把索引条件,或者筛选掉记录条件最多的条件卸载最左侧。

    示例如下:

    SELECT empno, ename 
    FROM t_emp 
    WHERE ename = "FORD" AND sal >= 2000;
    
    -- 如果说 ename 字段有索引的话,那么索引字段一定要写在条件的左侧,这样可以提高数据集的查询效率。
    
    SELECT empno, ename 
    FROM t_emp 
    WHERE deptno = 10 AND sal >= 2000;
    
    -- 从数据表中我们知道月薪大于等于 2000 的人有很多,但是在 10编号 部门的人员却不多。
    -- 所以通过先筛选部门可以筛选掉大量的数据,如此也是可以提高数据集的查询效率的。
    


    🐬 各种子句的执行顺序

    在 SQL 语句中,各种字句的执行顺序的优先级如下

    FROM ---> WHERE ---> SELECT ---> ORDER BY ---> LIMIT
    




    展开全文
  • C#按条件查询

    2012-09-16 18:29:50
    按照条件组合进行查询,数据库是ACCESS,源于一个项目中的查询页面
  • android中内嵌轻量级数据库sqlite,涉及到的操作无外乎增删改查,今天就来说一说其中的查找操作,更多的时候我们用到的查找是要按条件查找的 例如表的结构如下:
  • 最近在Excel微信学习交流群中收到某位学员的问题咨询,问题是如何返回单据编号和物料长代码对应的含税数额。如下表: 其实这位学员的问题就是excel的多条件...第一 excellookup多条件查询 函数公式:=LOOKU...

    最近在Excel微信学习交流群中收到某位学员的问题咨询,问题是如何返回单据编号和物料长代码对应的含税数额。如下表:

     

    其实这位学员的问题就是excel的多条件查找问题。

    excel的多条件查找

     

    下面通过一个实例跟大家分享一下常用的3种excel多条件查找函数。

    下表是某电商公司的客户投诉表,现在需要通过A表中的客户姓名与地区两个条件来查询B表中的产品型号,返回到A表的E列中。

    下面是三种excel双条件查找返回的方法,依次来看:

     

    第一 excellookup多条件查询

    excel多条件查找函数

    函数公式:=LOOKUP(1,0/(A3=$I$3:$I$19)*(B3=$J$3:$J$19),$K$3:$K$19)

    公式解析:首先通过A3单元格与B表I列数据做对比,同时用B3单元格与B表J列信息做对比。

    在excel中如果两个单元格对比,相等则返回TRUE,在四则运算中用1表示。如果不相等则返回FALSE,使用0表示。

     

    那么(A3=$I$3:$I$19)*(B3=$J$3:$J$19)这部分运算的结果就只有0或者1两种情况,因为只有0*1、1*1、1*0这三种情况。

     

    按照二分法原理,lookup函数会在二分位处查找符合条件的数据。大家都知道lookup函数想要精准查找那么这组数值必须要升序,但实际上这组数据运算结果0和1的顺序是混乱的。

     

    所以就想到了用0来除以0和1的方式来区分。由于分母不能为0,所以0/0返回的是错误,0/1返回的结果为0。Lookup函数在查找的时候是忽略错误的,所以只有数据运算结果为1的公式满足条件。

     

    那么我们就很好理解0/(A3=$I$3:$I$19)*(B3=$J$3:$J$19)的目的就是将正确结果用0表示,其他的变成错误值,利用函数查找忽略错误这个特点完成查找。

     

    总结:本函数由于使用了二分法原理查找,所以如果数据量较大时运算会很慢。

     

    第二 vlookup多条件查找

     

    vlookup函数是我们最常用的函数,vlookup函数主要用于垂直方向上向右查找。如下图:

    excel多条件查找函数

    使用G2单元格在A列中查找,如果查找到对应单元格则返回A列向右第二列的数据。简而言之:=VLOOKUP(查找什么,在哪查找,从条件所在列算起找到后返回对应的第几列数据,精确或模糊查找)。

     

    那vlookup如何才能完成多条件查询呢?。

    还以客户投诉表为例,按照姓名&地区来匹配产品型号返回到E里中。

    其实我们是可以将A、B两表中插入辅助列,将姓名和地区都合并到一个单元格中然后使用vlookup来完成。

    但是插入2个辅助列后整个表列数发生变动,在工作中往往单元格中有很多公式,如果列数发生变化将直接导致表格中函数公式运算结果错误。所以添加辅助列的方式虽然简单,但不是最好的方式。

     

    那么不用辅助列如何才能完成多条件查询呢?

     

    首先我们查找值合并很简单,输入函数vlookup时第一个参数可以写成A3&B3,即可将A3、B3两个单元格内容合并,作为查找值。

    现在问题查找区域也需要做合并。

     

    如果把两列内容合并在一起,可输入公式=H2:H19&I2:I19,按ctrl+shift+回车生成结果,然后下拉公式,这样两个条件就变成了一个。

    接下来通过IF函数提取对应的J列数据,可输入公式=IF({0,1},H2:H19&I2:I19,J2:J19),按ctrl+shift+回车生成结果,然后下拉公式,{0,1}表示逻辑值{FALSE,TRUE}。

    下面我们详细来解析一下:

    首先在excel中0表示错误,1以及其他所有数值表示正确。如下表示例:

    通过上面的例子我看到如果IF判断0则返回错误,判断1则返回正确。

    现在我们可以将公式拆分为以下两种情况:

    IF(0, H2:H19&I2:I19,J2:J19),0表示FALSE,所以只能返回J列数据。

    IF(1, H2:H19&I2:I19,J2:J19),1表示TRUE,所以只能返回H列和I列合并结果。

    那么IF({0,1},H2:H19&I2:I19,J2:J19)怎么理解呢?

    既然是数组公式,那么可以将它理解为同时返回两组数据,0对应的是J2:J19,1对应的H2:H19&I2:I19,构建了两列数据。

    最后我们使用vlookup函数完成嵌套,=VLOOKUP(A3&B3,IF({1,0},H3:H20&I3:I20,J3:J20),2,0),这里我们就可以理解为用A3&B3在H3:H20&I3:I20中查找对应J3:J20中的数据。因为公式中IF({1,0},H3:H20&I3:I20,J3:J20)返回的顺序是先返回H3:H20&I3:I20再返回J3:J20。

    注意:很多人不明白为什么嵌套的时候IF第一参数又变成了{1,0},因为这里我们需要返回的是H和I合并结果作为查找区域。PS:所有数组公式完成输入后要使用数组三键ctrl+shift+ener来返回运算结果!

     

    这样我们不用辅助列也能通过vlookup函数完成多条件查询。

     

    第三 OFFSET+MATCH函数公式

    很多excel高手都知道offset可以当vlookup函数使用,但职场新人大多都不了解。

    下面举例跟大家分享一下通过offset函数完成多条件查询。

    函数公式:{=OFFSET($J$2,MATCH(A3&B3,$H$3:$H$19&$I$3:$I$19,0),)}

    公式解析:

    完成多条件查询第一步先要确定A表中姓名&地区合并后对应在B表中姓名&地区的顺序。这里我们通过MATCH来完成,我们用个简单的例子说明。

    =MATCH(A2,E:E,0)表示使用A2单元格在E列中查找,0表示精确查找、1小于、-1大于,通常情况下都是精确查找。

    MATCH(A3&B3,$H$3:$H$19&$I$3:$I$19,0)表示将A3与B3合并作为查找内容,H列和I列合并作为查找区域,0表示精确查找。

     

    确定顺序后我们通过OFFSET函数以顺序数据作为偏移行数返回对应数值。

    OFFSET函数的功能是以指定的单元格引用为参照系,通过给定偏移量得到新的引用。

    返回的引用可以为一个单元格区域。并可以指定返回的行数或列数。Reference 作为偏移量参照系的引用区域。Reference 必须为对单元格或相连单元格区域的引用;否则,函数 OFFSET 返回错误值#VALUE!。

    =OFFSET(J2,1,0,1,1)表示以J2单元格作为参照物向下偏移1行,向右偏移0列,返回1行1列数据区域。

    =OFFSET($J$2,MATCH(A3&B3,$H$3:$H$19&$I$3:$I$19,0),)表示以$J$2为参照单元格,通过MATCH查找出来顺序作为向下偏移的行数,偏移列数量省略表示不偏移,第三个、第四个参数省略表示只返回一个单元格区域。

     

    下面我们来总结一下本篇excel双条件查找返回的三种方式的利弊。LOOKUP函数使用过程中运算较慢;VLOOKUP函数使用IF({0,1})数组公式,理解上存在一定难度;OFFSET+MATCH函数公式简单,可以作为首选方案。

    展开全文
  • excel中多个条件查找,涉及到XLOOKUP函数和VLOOKUP函数的使用。例如我们将某个坐标的信息输入到表格中,但是我们只需要其中一部分坐标的信息的时候,我们可以用到此方法。
  • 2.1 先看单条件查询,可能出现的结果 (提前考虑你的函数要返回什么样的结果,会报错么?) 单一条件查询包含下面3种情况 情况1:存在0个符合条件得数据,查不到的情况: 要考虑函数的返回值时什么?返回最后一个...

    备注:

    • 本文只涉及单元格 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 多条件查询方法:数组公式

     


     

     

     

     

     

     

     

     

    展开全文
  • SQL条件查询

    千次阅读 2021-08-24 09:50:21
    条件查询1.基本语法2.按条件表达式筛选3.按逻辑表达式筛选4.模糊查询4.1 like4.2 between and4.3 in4.4 is null4.5 安全等于 <=>4.6 is null 和 <=>对比 1.基本语法 select 查询列表 from 表名 where ...
  • linux中怎么条件查询

    千次阅读 2021-05-16 05:44:21
    在linux中可以通过“find”命令实现条件查询,其语法如“find / -name file”,用于指定目录搜索,参数“-name”表目标名字。Linux中条件查找的命令是find命令。Linux-文件搜索命令find的操作使用方法如下:1、全盘...
  • sql条件查询

    千次阅读 2022-04-10 16:05:45
    今天给大家介绍的是sql的条件查询,下面直接结合例子说明: 一、 简单条件运算符 1、=(等于) 2、>(大于) 3、<(小于) 4、<>(不等于) 5、>=(大于等于) 6、<=(小于等于) 二、 逻辑...
  • VBA实现EXCEL多表格多条件查询 For i = 1 To Workbooks.Count For Each c In Sheets(i).UsedRange If c.Value >= 150 And c.Value c1 = c1 + c.Value n = n + 1 End If ‘更多条件…… Next Next
  • MySQL 条件查询

    千次阅读 2021-12-27 09:52:55
    MySQL 条件查询
  • VBA实现多条件查询

    千次阅读 2022-04-19 12:38:33
    1、代码部分(可使用宏进行录制高级筛选): Sub chaxun() Columns("A:M").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ ...(2)单条件查询: (3)多条件查询: 3、总结: excel表...
  • 以下图表格为例,在介绍多条件查询方法之前,先来了解下VLOOKUP函数的基础用法,用一句话介绍就是,VLOOKUP函数是在垂直方向上向右查找。 各种教程中,VLOOKUP函数的语法结构都是英文,不太好理解,用...
  • 易语言源码多表多条件查询的例程.rar
  • excel-LOOKUP函数多条件查找

    千次阅读 2021-01-27 17:15:46
    ** **精准查询(FALSE/0)结果展示:** 语法: LOOKUP(查找值,查找区域,结果区域) 注意: Lookup() 多条件查找时无需排序,正常LOOKUP函数要求“查找区域”中的值必须按升序排列,因为是二分法原理 举例: LOOKUP...
  • vue 条件查询列表

    千次阅读 2022-03-18 11:18:01
    1、页面必须事一个表单 2、筛选条件3、列表查询结果 4、分页 3、data 中声明对象 4、再methods中写方法,使用该方法优化参数,请求数据列表
  • grep命令多条件查找

    2021-04-21 21:04:18
    Linux grep 命令用于查找文件里符合条件的字符串 示例:查找历史输入 //与 history | grep 'cd' | grep 'make' //或 history | grep 'cd\|make' //使用转义字符转为'或'符号。 history | grep -E 'cd|make' //使用...
  • 按关键词匹配 match query.filter(User.name.match('wendy')) 实际应用:在Python FastAPI框架中,如何利用 sqlalchemy 实现 多条件查询,当某个条件为空时就忽略该条件,所有条件为空时就查询全部 #!/usr/bin/...
  • python3 -sqlite3限制条件查询

    千次阅读 2021-03-06 18:36:49
    请注意10,11,24行的代码,是本条博客的精华,逻辑并不难,就是有些小语法问题比较纠结,记录一下。import jsonimport sqlite3import reimport argparsedef Get(db_file):conn = sqlite3.connect(db_file)cur = conn....
  • params:过滤条件,类型为对象; const productFilter = (data, params) => data.filter(item => Object.keys(params).every(key => item[key] && item[key].includes(params[key]))) 参数说明: data:原始数据,...
  • 1 多条件查询 LOOKUP(1,0/(A1:A22=15),B1:B22) LOOKUP(1,0/((A1:A25=15)*(C1:C25="A")),D:D) LOOKUP(1,0/((A1:A22=15)*(C1:C22="A")*(E1:E22=170)),A:A) 2 查找最后一个非空单元格 LOOKUP(1,0/(A1:A22<&...
  • linux grep多条件查询

    千次阅读 2021-07-19 16:47:28
    grep -E ‘a|b’ //满足a 或b 都行 grep a | grep b //需同时满足a b
  • ifind 条件1 条件2 find 条件1 -a 条件2 find 条件2 -and 条件2 2.or find 条件1 -or 条件 2 grep 1.and grep-E'pattern1.*pattern2'filename (利用正则的原理)?? greppattern1filename |greppattern2 ...
  • 大家好,我是天空之城,今天给大家带来小福利,带你快速入门index+match多条件查询和跨表查询 首先是index+match的多条件查询公式 =INDEX($D$2:$D$10,MATCH(H2&I2,$B$2:$B$10&$C$2:$C$10,0)) 为了便于理解...
  • Pandas简明教程:六、Pandas条件查询

    千次阅读 2020-07-28 13:26:24
    文章目录1、基本方法2、高级查询3、 可用于修改内容的`where`方法4、条件检索进阶:快速的查询方法`query`5、其它检索方法简述 目前大家公认的一个说法是:Python的用户主要集中在数据分析和机器学习这两类人群。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,764,497
精华内容 705,798
关键字:

条件查询

友情链接: opencv.rar