plsql粘贴excel大数据

2014-02-15 12:31:05 xuke6677 阅读数 8343

测试共同条件: 
数据总数为110011条,每条数据条数为19个字段。 
电脑配置为:P4 2.67GHz,1G内存。 

一、POI、JXL、FastExcel比较 
POI、JXL、FastExcel均为java第三方开源导出Excel的开源项目。 

导出方案一:一次性全部导出到一个Excel文件中。 
实际情况均报OutOfMemery错误,以下数据为报OutOfMemery数据时,数据到的最大数据数目,如表1所示: 
表1:报OutOfMemery错误时所能处理的数据量 
                                    FastExecl POI    JXL 
10000数据/sheet          37465     28996 42270 
5000数据/sheet             39096     31487 46270 
3000数据/sheet             39000 32493 47860 
小结: 
多分sheet能一定程度上减少内存的使用,但是均因为程序中创建的Cell(即为Excel中的一个单元格)无法释放,消耗大量内存,导致OutOfMemery错误;JXL表现最好,创建Cell内存使用较少。 

导出方案二:先分多个Excel文件将数据全部导出,然后对多个Excel文件进行合并。 
首先,测试将全部数据导出所用的时间,如表2所示,数据均测试三次取平均。 
表2:导出全部数据所用时间 
                              FastExecl POI JXL 
10000数据/文件          68s       33s 30s 
5000数据/文件             68s       32s 33s 
3000数据/文件             59s       33s 39s 
小结: 
均成功导出Excel文件,原因是导出一个Excel文件,释放所占用的创建Cell的内存。 
FastExecl表现最差,POI表现稳定,JXL随着数据的增大,速度一定程度上增快。 

然后,进行整合,由于将多Excel合并成一个Excel文件的功能只有POI所有,故使用POI测试,结果如表3所示。 
注:数据量大合并还会报OutOfMemery错误,故合并总数据量以5万为准。 
表3:合并5万数据所用时间 
时间 
10000数据/文件 11s 
5000数据/文件 11s 
3000数据/文件 11s 
小结: 
使用POI对文件进行合并速度较快,但有数据量的限制。 


总结:方案二比较可行,但是数据量有限制,为5万条。 


二、导出XML 的电子表格 
如果是用poi或者jxl之类的,大量数据肯定会内存溢出。因为,它们都是一次在内存生成整个excel对象。poi最新版本倒是支持excel2007写临时文件,但是2003不能用。有一种做法就是不以excel的形式导出,如:Excel另存为XML格式,以此XML为模板,将需要导出的内容拼接为XML字符串按顺序写到一个后缀为xls的文件中。也能用Excel打开的,但是这种情况适用于导出的是数据列表,如果有公式、图表之类的就不适用了。这种方式导出几十W都没问题。简而言之就是拼接符合Excel格式的XML字符串写到一个你想写到的地方,直接response中写到用户浏览器也可以啊。你随便找个简单的Excel另存为XML,就能理解我说的了。
POI或者JXL的话把服务器内存占满,导死服务器是肯定会发生的,跟数据条数还有字段个数都有关系。如果不对导出请求做并发限制,那结果会更严重。如果要跟踪内存占用情况的话用jprofile监控下内存,做下代码级优化,但是效果不会改善多少的。

导出的格式类似为纯文本,能实现大数据量的存储,并能实现分Sheet查看,且能添加简单的样式,符合项目要求。经实际测试Excel2003和Excel2007均能识别并正常打开查看。使用时间测试如表4所示,数据均测试3次取平均。 
表4:生成全部数据所用时间 
                                  时间 
10000数据/sheet    28.0秒 
20000数据/sheet    30.1秒 
30000数据/sheet    28.1秒 
40000数据/sheet    26.5秒 
50000数据/sheet    28.2秒 
55000数据/sheet    26.8秒 
59000数据/sheet    30.1秒 
59500数据/sheet    发生假死机现象 
60000数据/sheet    发生假死机现象 

但是导出的数据为XML不是纯正的Excel文件,如使用Excel文件的xls后缀保存,打开文件会弹出警告,但不影响阅读。 
且经实际测试,在Access2007和Access2003中可通过导入外部数据的方式,将导出的XML导入进Access数据库。 

三、总结 
项目要求是大数据量导出Excel文件,POI、JXL、FastExcel不能完全满足要求;使用XML 的电子表格导出实现了大数据量导出,但是格式为XML不是纯正的Excel文件,为曲线救国。两种导出形式的比较,如表5所示。 
表5:合并5万数据所用时间 
                           POI、JXL、FastExcel    XML 的电子表格 
导出数据格式                 为纯Execl文件                为XML文件 
导出数据量                         小                            较大 
能否分Sheet                      能                            能 
能否添加样式                      能                            能 
能否添加图片                      POI 能                      不能 
导出数据能否导入Access       能                            能



四、将excel转html 
因每个excel最多放5万条,所以他把这1000万条记录记录放到了200个excel文件里。用时40分钟。 
采用基本的jdbc技术+io流。 
1.先进一个excel文件。填上要的表头和两条记录。然后另存为网页a.html。 
2.用记事本打开网页a.html,就看到源代码。把源代码分成三部分:头+记录行+尾。 
3.用jdbc访问数据库,循环遍历,每5万条,用io流写文件,格式为"xxx.xls”。 
a.html的头代码+记录行代码(已经被5万条替换)+尾代码。


没有看太懂你的意思, 用html是干什么?


用java的io写txt格式的文件,大家都会吧? 

其实,也可以用java的io写xls格式的文件的。关键是你得按一定的excel文件格式写,才能保证生成的是excel文件。 

这个格式怎样得到呢?方法是这样: 

你先建一个excel文件,如a.xls。填上两条伪数据。然后另存为网页,即htm格式,如a.htm。 

然后,用记事本打开htm格式的a.htm,这样excel文件格式代码就暴露在你面前。 

剩下的事,呵呵,就是把a.htm源代码的伪数据部分,替成数据库里的数据,然后把替换后的整个a.htm源代码,用java的io写成一个后缀为xls的文件。就打完收工了。 

注意:为了不给内存增加压力,要把a.htm源代码分成三部分:头(伪数据部分 前的代码) + 伪数据部分 + 尾(伪数据部分 后的代码)。 
先把 头 写到文件,并flush。然后是 伪数据部分 ,替一条数据库里的记录就写到文件里,并flush。最后把 尾 写到文件,并flush。


五、这里有另一个解决方案,这里讨论简单的解决方案


大数据量导出Excel的方案,顾名思义是要导出大量的数据,
大量数据导出本身就带有风险,因为很大的数据量比如*G的文件根本不可能用
excel来打开,就算打开了也是无法查看的,
我们做一个简单的计算
excel 07之前每个标签最多有256*65536的数据量,好像最多也是256个标签,
也就是说最多可以存储65536*65536个字段的数据量,也差不多能满足一般的数据的存储。。(有点矛盾)
但是存了这么多数据的电子表格能打开吗?。。。
下面说说导出这么大量数据的解决方案,在另一个文章里提到的方式就不用再提了。

1、用csv导出
写一个导出数据的程序,把需要的数据导出,并把输出结果输出到csv文件,每个字段之间做好分隔符,
这样可以直接打开就是excel来打开的。
如果非要存到excel里,还有一种办法,
新建一个excel文件,选择一个标签, 然后在菜单栏里选择 数据->导入外部数据->外部数据
弹出文件选择框,选择csv文件,弹出 【文件导入向导】 选择 【分隔符号】下一步,
然后接下来的对话框里选择自己定义好的分隔符 比如【;】【###】等,选择后下面的
数据预览里就可以看到数据分割后的结果,选择完成,然后选择一个标签中的某个单元格就可以。
2、使用toad工具
toad支持主流的数据库,像oracle,mysql,mssql等,下载对应的软件安装。
新建一个查询窗口,写好sql语句后执行。
在查询结果里选中需要导出的数据,右键选中export 之类的菜单,具体步骤就不用细说了,
可以直接导出为excel,还有其他的一些文件格式。有时间再总结一下,本人电脑没装toad工具
所以不能一步一步的说怎么导出,但是确实可行的方法,而且我自己也测试过,而且导出时很灵活,
设定分隔符什么的,如果需要格式化数据,,那就在sql语句里直接格式化,都格式化成字符串格式,
这样导出时处理起来比较方便,比如oracle德 to_char,concat 之类的函数。反正需要根据自己的需要
灵活的应用就好了。
3、其他数据浏览工具
比如oracle的plsql ,写一个sql语句,得出结果之后把所有数据选中,直接复制,ctrl+c也可以。
新建一个excel文档,直接粘贴,一般都是已经分割好的,一个单元格一个字段的数据,excel可以识别一般的
分隔符,比如 ; \t 等分隔符,如果不行 就按照1中的办法,
就是繁琐一些,但是很好用。
最近总结出来的就是这些,以后有更好的办法就直接分享。

2016-09-09 21:56:01 ayang1986 阅读数 10724

 http://blog.itpub.net/24496241/viewspace-740917/

1、格式化SQL语句
在使用 PL/SQL Developer的SQL Window时,有时候输入的SQL语句太长或太乱,希望能用比较通用的写法格式话一下,这样看起来会好看些,也好分析;
使用方法:选中需要格式化的SQL语句,然后点击工具栏的PL/SQL beautifier按钮即可。
2、oralce精简客户端的使用(待测)
要想PL/SQL连接oracle数据库,除了PL/SQL Developer 之外还需要Oracle客户端,有一个更方便的方法就是使用Oracle精简客户端,很多地方可以下载,文件很小,耗资源也少。安装完成后修改安装目录下的/Oracle/ora90/network/ADMIN/tnsnames.ora文件:
格式如下:
  DATABASE_NAME =
   (DESCRIPTION =
    (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
    (CONNECT_DATA =
     #(SERVICE_NAME = dealer)
     (SID = SID_NAME)
     #(SERVER = DEDICATED)
    )
  )
3、查看执行计划
在使用PL/SQL Developer的SQL Window时,有时候输入的SQL语句执行的效率,分析下表结构,如何可以提高查询的效率,可以通过查看Oracle提供的执行计划;
使用方法:选中需要分析的SQL语句,然后点击工具栏的Explain plan按钮(即执行计划),或者直接按F5即可。
4、格式化SQL语句
在使用 PL/SQL Developer的SQL Window时,有时候输入的SQL语句太长或太乱,希望能用比较通用的写法格式话一下,这样看起来会好看些,也好分析;
使用方法:选中需要格式化的SQL语句,然后点击工具栏的PL/SQL beautifier按钮即可。
5、执行单条SQL语句
在使用 PL/SQL Developer的SQL Window时,按F8键,PL/SQL Developer默认是执行该窗口的所有SQL语句,需要设置为鼠标所在的那条SQL语句,即执行当前SQL语句;
设置方法:PL/SQL Developer 7.1.2 -->tools->Preferences-->Window types-->SQL Window ,勾上“AutoSelect Statement” 即可。
6、PL/SQL Developer记住登陆密码
在使用PL/SQL Developer时,为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码;
设置方法:PL/SQL Developer 7.1.2 ->tools->Preferences->Oracle->Logon History , “Store history”是默认勾选的,勾上“Store with password” 即可,重新登录在输入一次密码则记住了。
7、PL/SQL Beautifier(PL/SQL 美化器/格式化)
PLD 6以上版本有对DML代码格式化的功能。在SQL Window或Program Window中选中部分代码(如果不选则对整个窗口的代码操作),在菜单中选Edit -> PL/SQL Beautifier,得到格式化的代码。对于非法的DML语句或DDL语句,PLD将会在下方状态栏提示PL/SQL Beautifier could not parse text。在缺省的状态下,PLD会把DML语句的每一个字段都排在单独的一行,这样不方便查看。在菜单中选Edit  PL/SQL Beautifier Options,进入Preferences窗口,选择Edit,进入配置文件编辑界面:在标签栏选DML,在窗口中部的Select, Insert和Update组框中把Fit选中,然后点击Save,把配置文件保存到PLD的安装目录下,点击Close关闭。在Rules file中输入配置文件所在位置,点击OK,完成配置文件切换。这时再对代码进行格式化,就可以使每一个字段尽可能的在一行上了。
8、关键字自动大写
Tools->Preferences->Editor,将Keyword case选择Uppercase。
9、快捷键定义的位置
选中需要定义的Item,然后按一个快捷键组合即可,如果所按的快捷键已有定义,会有提示,这时候Cancel,另外选择快捷键组合即可;通常情况下,打开PLSQL Developer后,最经常干的事就是打开SQL Window和Command Window,就给这两个操作定义了快捷键, ALT+S 和 ALT + C,这样拿鼠标点三下的事情只需要按一下键。
设置方法:菜单Tools->Preferences->User Interface->Key configuration
注意:如果设置了快捷键不起作用,回到Tools -> Preferences -> Key Configuration界面,点击最上方的"Default Administrator"右边的"..."按钮,在弹出的"Preference Set"界面中,对"Personal Preferences"以及下面的"Definition"->"Description"进行一下设置
10、自定义Object的顺序以及登录后默认自动选中My Objec
默认情况下,PL/SQL Developer登录后,Brower里会选择All objects,
如果你登录的用户是dba,要展开tables目录,正常情况都需要Wait几秒钟,
而选择My Objects后响应速率则是以毫秒计算的。
设置方法:  Tools菜单 -> Object Brower Filters,会打开Define Browser Filters界面,  选中"My Objects",并勾选 "Default" 设为默认即可。
 Tools菜单 -> Object Brower Folders,会打开Define Browser Folders界面,这里可以把经常用到的几个目录(比如:Tables Views Seq Functions Procedures)移得靠上一点,并加上颜色区分,这样你的平均寻表时间会大大缩短,试试看。
11、去掉注释的斜体样式
菜单Tools -> Preferences -> User Interface->Editor 在右边的界面中"Syntax Highlighting"下,去掉"Comment"右边的"Italic"的勾选.
12、保存上次登录布局
在window(窗口)菜单中有个save layout(保存版面)项,设置好窗口布局后,选一下此项就保存你当前的窗口布局了,下次启动就不用再设置了
13、调试存储过程
在使用PL/SQL Developer操作 Oracle时,有时候调用某些存储过程,或者调试存储过程;
调用存储过程的方法:首先,在PL/SQL Developer左边的Browser中选择Procedures,查找需要调用的存储过程;然后,选中调试的存储过程,点击右键,选择Test,在弹出来的Test scrīpt窗口中,对于定义为in类型的参数,需要给该参数的Value输入值;最后点击上面的条数按钮:Start debugger 或者按F9;最后点击:RUN 或者Ctrl+R
14、右键菜单
在PL/SQL Developer(下面简称PLD)中的每一个文本编辑窗口,如SQL Window,Command Window和Porgram Window,右键点击某个对象名称,会弹出一个包含操作对象命令的菜单,我们这里称之为右键菜单。
对象类型可以是表,视图,同义词,存储过程和函数等。根据对象类型的不同,弹出的菜单也有区别。表和视图有View, Edit, Rename, Drop, Query data 和Edit data等功能。View和Edit分别是查看和修改表的结构信息,如字段,主键,索引和约束等。Query data相当于新打开一个窗口,并执行select * from 表。Edit data相当于新打开一个窗口,并执行select * from 表 for update。存储过程和函数有Test功能,选中后可以进入调试状态。有时由于PLD识别错误,右键点击对象并不能出来正确的菜单,可以在对象所在的 DDL或DML语句的前面,加上分号,这样PLD就能正确的判断出对象的类型
15、Select for Update
有时我们需要把一些数据导入数据库中,如果用UE拼Insert语句,会比较麻烦,而且操作性不强。PLD的SQL Window可以查询,新增,修改和删除表的内容。查询自不必说,而新增,删除和修改,只需在select语句后加入for update,对表进行行级锁定,然后点击窗口的锁型图标,即可进入编辑状态。下面介绍一下如何从Excel中提取文本插入到数据库中我们的Excel文件中有三列:在数据库中建立临时表:create table t1 (cino varchar2(100), contno varchar2(100), loanno varchar2(100))然后在SQL Window中输入select t1 for update,并点击锁型鼠标,进入编辑状态:用鼠标点击第一行的输入窗口,这时PLD会死锁几秒钟,然后可以见到光标在第一行的输入框中闪动,用鼠标把 CINO, CONTNO, LOANNO选中:进入Excel中,把需要插入数据库的内容选中,然后切换到PLD,按Ctrl + V:点击√,然后再点击Commit按钮,则数据提交到表t1中,执行select * from t1可以看到内容:
16、TNS Names
菜单Help->Support Info->TNS Names,可以查看Oracle的tnsnames.ora。
17、Copy to Excel
在SQL Window中执行Select语句,在结果出来以后,右键点击下面的数据区,选择Copy to Excel,可以把数据区的记录原样拷贝到Excel中。但有两点需要注意:一,field中不能以=开始,否则Excel会误认为是函数;二,数字不要超过17位,否则后面的位数将会置为0,但可以通过在数字前加‘来使Excel认为该field是文本,同时对于数据库中Numbe类型的字段,最好用 to_char输出,不然可能会显示不正常
18、保持上次打开的SQL脚本
重新进入PL/SQL Developer时,Window List能打开上次退出时的文档:
1) 将菜单Tools->Window list选项勾上;
2) Tools->Perferences->User Interface->Options的右边,将"Autosave desktop"勾选.
3) 退出PL/SQL Developer重新进入.
19、快速找到已知表名的表或其他对象
在Tools菜单中,勾选上Object Browser,将对象浏览器打开,
双击对象浏览器中的某个对象所处的文件夹,
比如表都是在Tables文件夹中,
然后以尽快的速度输入表名,即可找到以你输入的几个字母开头的对象了
20、快速关闭打开于Windows List中的文档窗口
按住Shift键,左键点击需要关闭的文档窗口.
21、PL/SQL DEVELOPER中的专用复制(Special Copy)
如果你正在用 PL/SQL Developer 写 SQL 和 PL/SQL 代码,随后你又要在其它工具里使用代码,例如象 3GL 这样的程序设计语言,那么你可能需要把这些代码转换为稍微不同的格式。
让我们假设你已经在 PL/SQL Developer 里写了并测试了这样一个SQL 语句:
  select  deptno, sum(sal) mgr_sal
  from  emp
  where  job = 'MANAGER'
  group by deptno
  order by mgr_sal desc
例如,如果你要在Borland Delphi 里使用这个语句,你可能需要象这样的格式:
  SQL := 'select deptno, sum(sal) mgr_sal from emp' + #13#10 +
    'where job = ''MANAGER''' + #13#10 +
    'group by deptno' + #13#10 +
    'order by mgr_sal desc';
为了这个目的,在PL/SQL DEVELOPER中选中已写好的SQL语句,鼠标右键,在弹出的菜单中找到 Special Copy。这个功能有一个子菜单,它显示了所有被定义的专用复制格式。在选择了格式之后,被转换的代码就被储存在剪贴板上了,这样你就可以粘贴它到相应工具的编辑器里了。

专用复制格式被定义在 PL/SQL Developer 安装目录下的 SpecialCopy 子目录里。你可以改变预先确定的复制格式或者添加新的复制格式。仅仅简单地添加一个带有 .copy 扩展名的文本文件就可以了,它包含了一个针对 PL/SQL 代码第一行的变量(<line_1>)、一个针对 PL/SQL 代码最后一行的变量(<line_N>)和一个针对所有其它行的变量(<line_*>)。下面是一个针对 Borland Delphi 的例子:
  ;PL/SQL Developer SpecialCopy definition for Borland Delphi
  ;<line_1> for first line
  ;<line_*> for all other lines
  ;<line_N> for last line
  ;
  SQL := '<line_1>' + #13#10 +
  '<line_*>' + #13#10 +
  '<line_n>';
第一行需要为指派到 SQL 的变量加上前言,接下来需要有一个 CR/LF 对。最后一行不需要有CR/LF 对,但需要用分号来终止。所有其它行仅仅需要 CR/LF 接在后面。如果 <line_1> 和 <line_n> 都与 <line_*> 一样,你可以忽略它们。在一些语言里,你需要对特定的字符使用换码序列。例如,在 C++ 里,你要对 tab字符(ASCII 码为 9)使用 \t 。要定义这些换码序列,请使用 #define 关键词:
  #define char(9) = \t
  #define \ = \\
  String("<line_1>\n") +
  String("<line_*>\n") +
  String("<line_n>");
你还可以使用 "#define compress"来指出你要从结果里移除所有多余的空字符(空格、制表符和换行)。注意,.copy 文件的名字将被包括在菜单里,所以你应该使用描述性的文件名。
22、在PL/SQL DEVELOPER中复制行记录的简便方法
(1) 单击要拷贝的行记录左边的黑色小三角,该行被选中,右键复制。
(2) 粘贴至记事本里,然后复制刚才粘贴的内容。(该步骤不知何故不能缺)
(3) 单击新记录左边的黑色小三角,右键粘贴即可。
23、在窗口标题栏内显示文件的完全路径
Tools->Preferences->User Interface->Options
勾选"Show complete file path in windows titles"
24、双击即显示表数据
鼠标双击表或者视图时的默认响应实在让我感到失望,因为我最关心的是表结构和数据,但是双击后这两件事情都没有发生,也许默认响应是高手们需要的,但对我来说查看数据和表结构是最主要的,其他的我不关心。不过好的是这是可以设置的,你可以给鼠标双击和拖放绑定需要的事件,比如:双击编辑数据,拖放显示表结构,Yeah!
设置方法:  菜单Tools -> Preferences -> Object Browser,在右侧,为不同的Object Type绑定双击和拖放操作。
25、AutoReplace自动替换功能
Tools->Preferences->Editor->AutoReplace->选上Enabled,并Edit文件,加入以下内容:
sf=SELECT * FROM
scf=SELECT COUNT(*) FROM
s=SELECT
f=FROM
w=WHERE
d=DELETE
u=UPDATE
i=INSERT INTO
v=VALUES

26、还原成老版本统一切换用户功能

plsql9以后,同一个plsql支持多用户了,对于有些用户来说还不是太习惯,那么怎么调整为单用户呢?

工具》首选项》连接》Multiple Connections 下面的Allow multiple connections选项取消勾选,就可以还原成老版本那样同一用户登录了

请大家慎用PL/SQL Developer 9.0的Multiple simultaneous connections功能

9.0开始新增了下面特性:

Enhancements in PL/SQL Developer 9.0
====================================
Multiple simultaneous connections
* New Connection List
* XLSX format support (Excel 2007 / 2010) for the SQL Window and Report
也就是每个windows都可以有自己的连接,不必受限于一个。这样确实省却了在多个PL/SQL Developer进程间的切换,但也带来一个严重的潜在问题:你运行SQL或脚本的时候没注意选错了windows,一个drop或trunctae、update将生产库里面的数据给清了,哭去吧。。。

有此顾虑的同学们,请一定在【参数】设置中,将此选项禁用:

[Tools] -> [preferences] ->[connection]->[Multiple connections] :“Allow Multiple connections”

2019-11-09 10:40:10 qq_40233706 阅读数 39

 

1,通过PLSQL手动复制粘贴到ORACLE数据表中;

2,使用EXCEL批量制作SQL脚本,然后拿到数据库中执行;

3,使用PLSQL工具导入;

4,通过JAVA代码编程的方式解析EXCEL数据;

注:当然了,有的时候可能用户提供的不是EXCEL,是 .CSV、 .TXT等等格式,可以考虑先将其转换或者导入到EXCEL中,然后进行相关操作,或者直接操作。

----------------------------

相关扩展链接:

EXCEL批量制作SQL脚本    https://www.cnblogs.com/lotusto/articles/5723741.html

使用PLSQL工具导入            https://blog.csdn.net/chenyuangege/article/details/80530923

手动复制粘贴到ORACLE数据表中       https://blog.csdn.net/jarniyy/article/details/51438150

 JAVA代码编程 解析EXCEL数据           https://www.cnblogs.com/hhhshct/p/7255915.html
 

2018-05-20 13:49:47 wcqlwyt 阅读数 9442
原文地址为:EXCEL 一组数据筛选出重复的数据/去重

一:EXCEL 2007使用

在Excel2007中快速删除重复记录的方法

 

http://www.pconline.com.cn/pcedu/soft/office/excel/0712/1176340.html

 

在Excel中录入数据后,我们一般用高级筛选来处理删除重复的记录,Excel 2007保留了这个功能,同时又增加了一个“删除重复项”按钮,使操作更加简单、灵活。

 

  一、传统方法:使用高级筛选

  步骤如下:

  1.单击数据区,选中其中的任一个单元格。如果只是针对其中部分字段和记录进行筛选,可先选中这部分区域。注意:只对连续选中的矩形区域有效。

  2.单击“数据”标签,再单击下面工具栏中的“排序与筛选”区中的“高级”按钮,如图1。

图1 排序与筛选功能选择

  3.在弹出的“高级筛选”对话框中选中“选择不重复的记录”复选项,在列表区域框中将自动出现筛选区域的范围,查看是否正确,不正确可用鼠标拖动重新选择;此外,可选择筛选结果的显示方式,这里选择的是“在原有区域显示筛选结果”。如图2。

图2 设置高级筛选

  4.单击“确定”按钮,筛选完成,完全相同的记录除第一个被保留外,其他的均被删除。如图3。

 

  二、删除重复项

  Excel2007中增加了一个“删除重复项”按钮,用它来删除重复记录更加容易。步骤如下:

  1.单击选中数据区中的任一个单元格。

  2.单击“数据”标签,再单击其下工具栏中“排序与筛选”区中的“删除重复项”按钮,如图4。

图4 单击“删除重复项”按钮

  3.在弹出的“删除重复项”对话框选择要检查的字段。为了对比第一种方法,此处只选择前三项,如图5。

图5 设置删除重复项

  4.单击“确定”按钮,只要前三个字段完全相同的记录除第一个外全部被删除,如图6,再次单击“确定”按钮,确认结果。

 

 

注意:

此文中第一种删除并不是真正的删除,而是将多余的重复数据给隐藏了,只保留了重复项的第一行数据

如下图:

原始数据

 

后来执行此文中第一种删除操作后结果

 

 

 

二:EXCEL2003/2007通用

http://zhidao.baidu.com/question/26019437.html

问:EXCEL中一组数据如何筛选出重复的数据,还有二组数据中找出相同的数据?

答:

假设你需要查找的数据在B列。 

首先将B列数据列排序(目的是将重复数据排在一起)

——在该列右边插入一列空白列(B列)

——在B列的第一个单元格输入公式[假设无标题,=IF(A1=A2,"重复","")]

——用鼠标向下拖动复制到你需要的单元格(凡是重复的数据就显示"重复"字样,不重复就不显示)

——然后在首行插入一行并选定——数据——筛选——自动筛选(在下拉菜单中选择“重复”,所有重复数据的行集中排列在一起)

——删除有“重复”字样的行——删除刚才插入的C列。

——复制删选后的结果,选择性粘贴(仅数值)到其他地方(A12)。
——选择性粘贴结果就是所需要的结果。

 

结果如下:

 


转载请注明本文地址:EXCEL 一组数据筛选出重复的数据/去重

svn使用教程

阅读数 90