精华内容
下载资源
问答
  • 其实我本来对EXCEL是一窍不通的,直到我舅舅给了一串大概1500多行的药品供应目录让帮他我查找。当他告诉他们平时都是花1~2天人工填写查找的时候,我当时就惊呆了,心想EXCEL设计者肯定已经哭晕在厕所,大家竟然都...

        其实我本来对EXCEL是一窍不通的,直到我舅舅给了一串大概1500多行的药品供应目录让帮他我查找。当他告诉他们平时都是花1~2天人工填写查找的时候,我当时就惊呆了,心想EXCEL设计者肯定已经哭晕在厕所,大家竟然都不用便捷的公式来完成,于是乎我就开始上手了。  



       首先应该明确需求,拥有一个包含药品名称、规格、供应商、价格的数据库A,表A如下。从表A中我们可以发现,同一药品,同一规格具有多个供应商,所以这一定是一个多结果查找。

        
       需要根据医院需求的药品清单,补全一下清单表格B,表B如下。从表B中我们可以发现,B列所代表的通用名并不是该行数据的KEY,KEY是序列号,B列、C列、D列只不过是查找条件之一而已,需要根绝名称、剂型、规格等多个条件来查找企业信息、报价信息等。所以这是一个多条件查找过程。


       
        以上我们明确了本次任务是完成多条件多结果查找,首先应该建立一新的工作环境(Work Space),简单的说就是新建一个EXCEL文件,并把两张表导入Sheet1、Sheet2分页中去,这样方便引用,是个良好的习惯。导入方法如下,右击左下角的Sheet1分页,选择移动或复制
    查找
        为了解决问题,我们先从简单的方面入手,多条件多结果查找首先需要完成查找的基本功能,查找所用的函数一般是VLOOKUP,意思是在一列(vertical)中找到(Look up)符合条件的第一个值并返回,语法规格为
                            =VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
    譬如=VLOOKUP($O4,Sheet3!$H:$I,2,0),其中$O4表示查找内容是O4单元框的内容,查找范围是Sheet3!$H:$I,即表二的H到I列,2表示查找到相应行之后,返回O列右边第二列的内容,0是查找类型。符号$表示固定,因为随着公式下拉,数字4会依次增加,变为O4,O5,O5,而随着右拉列号会依次增加,变为O4,P4等,符号$的左右就保证右拉时列号O不会改变。
    多条件查找 
        当查找结果为多个时,我们首先的想法可能是按照C语言,使用&符号,当然,可是肯定行不通的。正统方法是利用数组,这种方法先不理它...
        另一种方法更直接一些,建立一个辅助列,将多条件化为单条件,设需要满足的条件是E3、F3,我们只需要建立辅助列,令他的值为=E3&F3,满足该辅助列的单一条件就能实现满足多条件的需求。如下图所示例如H列,令H2=A2&C2,建立辅助列,对H列查找就能满足多条件查找的需求。


    多结果查找
          但是适用VLOOKUP函数只能返回第一个结果,不符合多结果查找的要求。为了解决多结果查找,我们需要适用INDEX   SMALL  IF 组合函数。通过IF条件语句,遍历找到所有符合条件的行,并返回该行的序号
                           =IF(Sheet2!$E2:$E1335=Sheet1!$F3,ROW(Sheet2!$E2:$E1335),4^8)
        其中Sheet2:$E2:$E1335=Sheet1!$F3是判断条件,在表二的E列中,找到等于表一中F3单元格内容的行,返回行号ROW(Sheet2!$E2:$E1335),否则返回4^8=65535数值。找到所有符合条件的结果后,将他们排序,并按照行输出(右拉)
     =INDEX(Sheet2!$G:$G,SMALL(IF(Sheet2!$E2:$E1335=Sheet1!$F3,ROW(Sheet2!$E2:$E1335),4^8),COLUMN(A1)))&""
         其中SMALL仅仅对所有结果从小到大排序,而INDEX则将结果一一输出,按列输出COLUMN,按行输出则是ROW。先做个小实验,如下图。在A列中查找C1=1的值,D1输入公式=INDEX($B:$B,SMALL(IF($A$1:$A$1000=$C1,ROW($1:$1000),4^8),COLUMN(A1)))&"",输入后按下CRTL+ENTER(使结果为数组),再右拉可以得到结果。

          将这种方法运用到药品企业价格查找的实例中去,如下图所示,这里只右拉了3格,最多显示了3家企业,O列为条件查找辅助列,P~R为相应的企业,S~V为相应的价格。至此我们完成了多条件和多结果的查找。收尾工作需要把辅助列删除,并且把得到的结果赋值-选择性粘贴-数值,以防移动后出现没有reference的情况。


    多行多列变一列
         开开心心地把这个表格交给我舅舅,准备听几句夸奖的话,结果他说不行啊,这不同企业和价格必须在一列显示啊,这样才方便比对价格作出选择。于是我就愁了,要怎么才能把这种多行多列的数据变为一列呢?解决办法当然是有的。使用OFFSET函数
    =OFFSET(($U$3),INT((ROW(A1)-1)/4),MOD(ROW(A1)-1,4))
           其中4代表了多行多列中的列个数,我最后每种药品最多列出4家供应商,对于使用者请按自己情况改变该数字,$U$3是多行多列的最左上角数值。运用到我们得实例中去,其中I~L是多行多列矩阵,在F3中输入公式并下拉,得到一列。


        
    每行增加行
           因为一种药品对应了4家供应商,所以每种药品必须占4行,才能和上诉的一列正确对应上,这时我们需要使原有的每行间隔三行。这种苦力活当然不可能一个个增加,必须是批量操作的。
           这种方法可以按照下图的辅助列排序方法,最后一步用的是快捷键排序,没显示出来,这种方法适合每行空多行。


    或者是

         我用的方法是如下建立辅助列,定位空值后插入行,当然还是前两种比较好。



    最后应用到实例中,得到结果

          把之前多行多列变一列得到的4个为一组的单列复制到后面一行,就能得到最终的结果

    删除空白行
         许多没有供给公司和药品序号的行就是完全的空白行,这些影响观看,需要删除,建立辅助列,判断A和F同时为空时,赋值#N/A,CRTL+F替换#N/A为空值,F5定位空值,删除空值,可以达到要求,最终结果如下



    展开全文
  • Oracle 更新多行多列

    2019-11-04 23:37:07
    一使用情况  本情况适用于,表a和表b有唯一关联字段时期关联关系为1对1.且需求为:在关联字段相等情况瞎,用表b的字段值更新表a的字段值。...加油明天会更好,今天我学会了怎么去更新多行多列不是吗...  

    一使用情况

      本情况适用于,表a和表b有唯一关联字段时期关联关系为1对1.且需求为:在关联字段相等情况瞎,用表b的字段值更新表a的字段值。

    二 语法

    ---建立表A

    CREAT A(

    A1 VARCHAR(BYTE 10),

    A2 VARCHAR(BYTE 10),

    A3 VARCHAR(BYTE 10),

    A4 VARCHAR(BYTE 10),

    );

    --建立表B

    CREAT B(

    B1 VARCHAR(BYTE 10),

    B2 VARCHAR(BYTE 10),

    B3 VARCHAR(BYTE 10),

    B4 VARCHAR(BYTE 10),

    );

    UPDATE A SET (A1,A2,A3)=(

    SELECT B1,B2,B3.B4 --此处和表A字段对应

    FROM B WHERE A1=B,B1 -- 满足一对一关联关系

    )

    WHERE EXISTS( SELECT 1 FROM B WHERE B.B1=A1);--此处避免表b没有关联关系造成A表被更新的全是null的情况

    三忠告

    我在写这个文章的前5分钟,因为没有调试成功报错子查询返回多条记录的错误而怀疑此语法和逻辑的问题。经过向前辈请教,前辈提醒报错子查询返回多条,那么语法就没有错误。犯了在错误中着急而失去查找问题不去用逻辑排查的问题。可能在调试过程中你也会遇到此类问题,请耐心查找是否关系真的一对一。因为字段信息太多,我调试的存储过程可能有其他的限制条件没有care到。

     

    四结束语

    上诉内容也是我在网上按照需求收索并进行尝试,并且向前辈请教。如有写错的地方请谅解,但是整体思路和语法是没有问题,本文章的内容全部手敲,但是我站在了前辈们的脚踝处看世界。也感谢那些乐于奉献的前辈们。加油明天会更好,今天我学会了怎么去更新多行多列不是吗...

     

    展开全文
  • 问题:如何在Matlab中,将图例绘制成多行多列的? 查找资料过程中发现, 1)有的方法要求多个plot中横坐标具有相同的长度 比如:https://blog.csdn.net/xgf415/article/details/56480011 2)高版本中,部分函数...

    问题:如何在Matlab中,将图例绘制成多行多列的?

    查找资料过程中发现,

    1)有的方法要求多个plot中横坐标具有相同的长度

    比如:https://blog.csdn.net/xgf415/article/details/56480011

    2)高版本中,部分函数报错(应该可以改正)

    比如:https://blog.csdn.net/faaronzheng/article/details/46793523

    本文根据需要找到一个可靠的解决方法,现整理如下:

    优点:每个plot互相独立;代码量少,易于操作;

    参考:https://blog.csdn.net/davyhwang/article/details/37660073

    程序示例:第一行一个图例,第二行两个图例且水平放置;

    %%功能:绘制多个legend
    figure;
    x = 1:10;
    p1 = plot(x,2.*x,'k-');  %真实RUL
    hold on;
    p2 = plot(x,4.*x,'b-');  %改进距离度量
    p3 = plot(x,8.*x,'r-');  %余弦相似度+距离
    
    % ============= Legend 1 :
    hg1 = legend('第一条');
    set(hg1,'FontSize',12,'Location', 'SouthOutside','box','off');  
    %注:将legend放在图外面时,Legend 1不能通过鼠标移动,只能通过代码调整位置 
    % ============= Legend 2 :
    ah2 = axes('position',get(gca,'position'),'visible','off');
    hg2 = legend(ah2, [p2 p3], '第二条', '第三条');
    set(hg2,'FontSize',12,'Location', 'SouthOutside',...
            'Orientation','horizontal','box','off');

    说明:

    1)第一个图例只需获取legend的句柄,然后对齐进行设置;

    2)后面的图例均需要三行即

    ah2 = axes('position',get(gca,'position'),'visible','off');      %固定写法,只需更改返回值。必须有!!!

    hg2 = legend(ah2, [p2 p3], '第二条', '第三条');                 %绘制图例,[p2 p3]表示绘制哪几个曲线的图例

    set(hg2,...)                                                                       %设置各种参数

    比如:再添加一个图例

    ah3 = axes('position',get(gca,'position'),'visible','off');
    hg3 = legend(ah3, [p4 p5 p6], '第四条', '第五条','第六条');
    set(hg3,'FontSize',12,'Location', 'SouthOutside',...
            'Orientation','horizontal','box','off');

    通过绘制多个legend,达到m行n列的图例效果;

    进一步,在figure的“图像属性”状态下,可以进行更多的操作。

     

     

     

    展开全文
  • 工作表的一个区域中有很值,我们很容易用min或者max函数找出这个区域的最小值或者最大值,但是,要确定这个值的位置就比较难了,因为match函数或者vlookup(或者hlookup)函数都是对单行或者单列进行操作的。...

    iamlaosong文

    工作表的一个区域中有很多值,我们很容易用min或者max函数找出这个区域的最小值或者最大值,但是,要确定这个值的位置就比较难了,因为match函数或者vlookup(或者hlookup)函数都是对单行或者单列进行操作的。要确定这个值的位置,需要用到数组公式,我们看下面的数组公式:

     {=ADDRESS(
              MAX(IF(A1:R18=MIN(A1:R18),ROW(A1:R18))),
              MAX(IF(A1:R18=MIN(A1:R18),COLUMN(A1:R18)))) }
    这个公式返回A1:R18这个区域内最小值的位置,返回的结果可能类似这样:$H$4,就是这个最小值所在的单元格。下面分析一下这个公式的含义:

    最外层的address函数是把行列值转换为单元格地址的一般表示方式,address(4,8)=$H$4,所以,公式中的两个max函数返回的是最小值所在位置的最大行号和最大列号,其中if函数就是判断区域内每个单元格是否等于最小值,相等就返回行号或者列号,否则返回false,逐一比较的结果是返回多个值(区域中有多少个单元格就返回多少个值),然后max含返回其中最大的,当然也可以用min函数返回最小的。

    上面的公式稍作分解,就可以返回行号:

    {=MAX(IF(A1:R18=MIN(A1:R18),ROW(A1:R18)))}

    或者返回列号

    {=MAX(IF(A1:R18=MIN(A1:R18),COLUMN(A1:R18)))}


    所谓的数组公式,就是指定范围内的多个数据逐一进行计算,然后在这些结果中挑选(比如max)或者合成(比如sum)为一个结果返回;或者事先选择多个单元格然后输入数组公式,最后返回多个结果保存在这些单元格中。

    最后,数组公式在输入后,要以Ctrl+Shift+Enter来结束公式,这样结束的数组公式看起来比普通公式外面多一组{},也就是花式大括号。

    展开全文
  • 数据由单列或单行编辑成多行多列

    千次阅读 2014-05-15 10:16:09
    以下例子由单列变成多行多列为l原始数据只有一
  • 前段时间我需要一个2行2的RadioGrou
  • 列子查询则是指查询返回数据的自查询语句 快捷建表 create table 表名 as select * from 表名 create table emp1 sa select * from emp  insert into 表名 select * from 表名 insert in...
  • ArrayList多行多列的使用

    千次阅读 2011-09-24 14:05:02
    import java.util.ArrayList; public class Test { ... public static void main(String[] args) { ... // 第一 ...// 第一行,第一 ... System.out.println(" 第二行,第二:" + element2);  } }
  • 13.子查询返回多行多列的数据

    万次阅读 2017-02-17 11:27:15
     出公司各个部门的经理的姓名、薪金、部门名称、部门人数、部门平均工资。 步骤1:查找每个部门经理的姓名和薪金。 select ename,sal from emp where job='MANAGER'; 步骤2:连接dept表,查询部门名称。 select...
  • 在 keymap 中查找 column selection mode
  • 用gvim写代码时,如果想要复制多行,然后粘贴。 看到一个方便的操作方法: step1. 将光标移动到要复制的文本开始的地方,按V(是大写V)进入可视模式。 step2. 将光标移动到要复制的文本的结束的地方,按y复制。此时...
  • 表子查询(Table Subquery):返回一个虚拟表(多行多列)的子查询,行子查询是表子查询的一个特例。 2. 标量子查询 标量子查询的结果就像一个常量一样,可以用于 SELECT 、 WHERE 、 GROUP BY 、 HAVING 以及 ...
  • 点击DIV CSS查找内容,或登录"问答平台"提交你问题。 CMS学习网() 部分文章来源于互联网,版权归属于原作者。本站所有转载文章言论不代表本站观点,如是侵犯了原作者的权利请发邮件联系站长 (442446040@qq.com)...
  • 一、Excel表格怎么把一列数据转换为多行多列数据(EXCEL2019) 例如:将一列60个数据转换为5行12列。 1、首先,在B1格输入“源数据 起始数据的单元格代号”,C1格输入“源数据 第二个数据的单元格代号”,然后选中B1...
  • 想要把Excel的数据用Word转成... 然后我们在顶部的菜单栏中找到“替换”,点击它就会弹出一个窗口,我们在查找内容后面粘贴上刚刚复制的内容,是空白的哦,然后再下方的替换为后面我们要输入“^p”,最后点击“全部替..
  • SQL不重复查找数据及把一列多行内容拼成一行 如下表: 表名:Test ID RowID Col1 Col2 1 1 A A 2 1 B A 3 1 A B 4 1 C B 1,查找表中字段重复的...
  • excel查找并返回多行数据

    千次阅读 2018-03-22 09:04:00
    表二的D列为辅助,先在该返回张三在表一中的逐行行号。 D2=MATCH(A$2,OFFSET(Sheet1!A:A,D1,,ROWS(Sheet1!A:A)-D1),)+D1 B2=INDEX(Sheet1!B:B,$D2) B2公式复制到C2   然后将B2:D2公式向下复制。 ...
  • pandas读取和更换单个值,单列,单行,多列多行【loc、iloc、at、iat的用法】 一、取出单个值和更换单个值 import pandas as pd df1 = pd.DataFrame([['Snow','M',22],['Tyrion','M',32],['Sansa','F',18],['...
  • 填写需要查找的值,或者选择需要查找的值所在的单元格。 match_range 匹配区域。必填字段。选取lookup_value的查找区域,也就是你要在哪里找lookup_value。通常选取一整列。 return_range 返回区域。...
  • Sublime text3 编辑(多行编辑)

    千次阅读 2019-08-08 11:18:00
    使用正则匹配达到多行编辑 快捷键:Ctrl + H 输入^,然后Find All,查找所有的行首 ,接下来批量首行修改 输入$,然后Find All,查找所有的行尾,接下来批量末行修改 注意:需要打开正则匹配才可以查找所有的行尾...
  • 如何从个EXCEL批量提取符合条件的多行数据或指定行的数据----提取数据的绿色工具excelfb,支持提取行、提取,提取满足条件的上几行 本工具可以按一个关键字、个关键字或汉字描述的条件进行查找,展示出整行...
  • 1、做透视表统计 2、设置显示格式 3、取消分类汇总 4、拷贝到原数据后面 5、排序
  • SQL Server 在进行数据迁移和报表处理的时候遇到将一列多行数据拼接为一个字符串的情形,查找相关的资料整理如下,提供两种方法。  Table:SC Student Course 张三 大学语文 ...
  • SQL 查询一列多行返回一行

    千次阅读 2015-11-26 14:57:43
    查询表: id title 1 title1 2 title2 3 title3 要求现实: title1,title2,title3 select stuff((select ','+title from tb for xml path('')),1,1,'')
  • 列子查询是指查询返回数据的子查询语句 查询SMITH的部门和岗位完全相同的所有雇员,不含SMITH本人 select ename from emp where (deptno,job)=(select deptno,job from emp where ename='SMITH') ...
  • LabVIEW多列列表框背景颜色操作

    千次阅读 2017-08-07 17:27:09
    多列列表框概述在很多情况下我们需要在表格中某一列查找一些指定的元素,并且想让其显示为指定的颜色,此时就可以利用多列列表框的一些属性来解决这一问题。
  • 目的:就是把黄色区域变成红色区域的样子。 第一步:在C1输入:=INDEX(A:A,SMALL(IF(MATCH($A$1:$A$2500&"",$A$1:$A$2500&"",0)=ROW($A$1:$A$2500),ROW($A$1:$A$2500),4^8),ROW(A1))) ...
  • 可能很多人在使用VLOOKUP的时候,对于条件时,则会使用辅助进行查找,那么不使用辅助是否也可以呢? 答案是:必须可以。 问题处理: 1.使用辅助 2.不使用辅助的操作如下: 公式:=VLOOKUP(条件1&...
  • shell sed多行文本处理

    千次阅读 2019-06-03 08:03:14
    3.sed多行文本处理 问题 本案例要求使用sed工具来完成下列任务操作: 修改主机名配置文件 修改hosts文件,添加两条映射记录:192.168.4.5 与 svr5.tarena.com、svr5,还有119.75.217.56与www.baidu.com 方案 sed...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 58,816
精华内容 23,526
关键字:

多行多列查找