精华内容
下载资源
问答
  • jxl 删除excel重复的行

    千次阅读 2014-05-30 11:19:36
    思路:先检索excel文件,找出

    思路:先从前到后检索excel文件,找出重复的行的行号(从0开始),然后删除之;

    注意:使用removeRow(int row)删除多行时,需要从后往前遍历,因为从前往后删除时行号就乱了,跟检索时的行号不一致了,导致误删或漏删,具体见代码第79-82行;


    	/**
    	 * 得到excel中重复的行号,判重标准为第0列数据
    	 * @param filename
    	 * @return
    	 */
    	public static final ArrayList<Integer> getDuplicateRows(String filename) {
    		
    		/**
    		 * 从前往后找出重复的行号
    		 */
    		ArrayList<String> ids = new ArrayList<String>();
    		ArrayList<Integer> duplicateRows = new ArrayList<Integer>();
    
    		File file = new File(filename);
    
    		// 读excel文件
    		if (file.exists() == true) {
    
    			// 文件存在,读取其中原始数据
    			Workbook book = null;
    			try {
    				System.out.println("excel文件存在: " + file.getAbsolutePath());
    				book = Workbook.getWorkbook(file);
    			} catch (BiffException e) {
    				e.printStackTrace();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    			Sheet sheet = book.getSheet(0);
    
    			int rows = sheet.getRows();
    			
    			// 取出excel中的第0列数据
    			for (int i = 0; i < rows; i++) {
    				
    				// 第0列数据
    				Cell idCell = sheet.getCell(0, i);
    				String id = idCell.getContents().trim();
    								
    				if (ids.contains(id) == false) {
    					ids.add(id);
    				} else {
    					duplicateRows.add(i);
    				}
    			}
    			
    			// 关闭文件
    			book.close();
    			
    			// 释放空间
    			ids.clear();
    		} else {
    			System.err.println("文件不存在。。。");
    			return duplicateRows;
    		}
    		
    		return duplicateRows;
    	}
    	
    	/**
    	 * 删除filename文件rowsToRemove中的行
    	 * @param filename
    	 * @param rowsToRemove
    	 * @return
    	 */
    	public static int removeRows(String filename, ArrayList<Integer> rowsToRemove) {
    		Workbook wb = null;
    		WritableWorkbook book = null;
    		WritableSheet wsheet = null;
    		File f = new File(filename);
    
    		try {
    			wb = Workbook.getWorkbook(f);
    			book = Workbook.createWorkbook(f, wb);
    			wsheet = book.getSheet(0);
    			
    			System.out.println("to delete rows: " + rowsToRemove);
    			
    			for (int i = rowsToRemove.size() - 1; i >= 0; i--) {
    				int row = rowsToRemove.get(i);
    				wsheet.removeRow(row);
    			}
    			
    			// 关闭文件
    			book.write();
    			book.close();
    			
    			// 释放空间
    			rowsToRemove.clear();
    
    		} catch (BiffException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} catch (WriteException e) {
    			e.printStackTrace();
    		}
    		
    		return 0;
    	}
    	
    	/**
    	 * 删除某excel中相同的行,从前往后检索,删除后面重复的行
    	 * 判重条件是第0列数据
    	 * @param filename
    	 * @return
    	 */
    	public static int removeDuplicateRows(String filename) {
    		
    		// 从前往后找出重复的行号
    		ArrayList<Integer> duplicateRows = getDuplicateRows(filename);
    		
    		// 根据行号删除重复的行
    		removeRows(filename, duplicateRows);
    		
    		return 0;
    	}


    展开全文
  • 今天一个朋友叫帮她改几个Excel,将表中按某一列查找出重复的,并且只保留一个,想了一下办法很快就搞定了,方法如下:1、首先将表格按照需要查找的那一列排序。2、录制一个新宏,这个宏不用任何操作,将用以下的...
          今天一个朋友叫帮她改几个Excel,将表中按某一列查找出重复的,并且只保留一个,想了一下办法很快就搞定了,方法如下:
          1、首先将表格按照需要查找的那一列排序。
          2、录制一个新宏,这个宏不用任何操作,将用以下的代码来完成。如果愿意可以给个快捷键。
          3、打开宏编辑器,将如下代码贴到宏的SUB里,然后执行即可,执行的时候记得要让比较的第一个单元格做为活动单元格:
              

    ContractedBlock.gifExpandedBlockStart.gifCode
    Sub 你的宏名称()
    = ActiveCell.Row
    = ActiveCell.Column
    Do While Cells(x, Z).Value <> ""
     y 
    = x + 1
        
    Do While Cells(y, Z).Value <> ""
    If (Cells(x, Z).Value = Cells(y, Z).Value) Then
         
    'Cells(x, z).Interior.ColorIndex = 3
         'Cells(y, z).Interior.ColorIndex = 3
         '上面这两行可以将重复的标为红色。
         Rows(y).Delete
       
    End If
      y 
    = y + 1
        
    Loop
     x 
    = x + 1
    Loop
    End Sub

      

    转载于:https://www.cnblogs.com/jcjks/archive/2009/08/30/1556653.html

    展开全文
  • 查看Excel文件中重复的数据 04 . 05 . /// 该方法只是比较编号和客户名称,其他字段没有比较 06 . 07 . /// 08 . 09 . /// string:Excel文件路径 10 . 11 . /// ArrayList:重复组成的动态数组 ...
    复制代码
    publicoverride DataTable GetUserDataDTList(string excelPath)
    02.
    03. {
    04.
    05. excelPath = excelPath.Trim();
    06.
    07. string filename =null;
    08.
    09. try
    10.
    11. {
    12.
    13. filename = System.Configuration.ConfigurationSettings.AppSettings["filename"].ToString();
    14.
    15. }
    16.
    17. catch(Exception ex)
    18.
    19. {
    20.
    21. filename =null;
    22.
    23. throw ex;
    24.
    25. }
    26.
    27. DataTable dt =new DataTable();
    28.
    29. //DataSet ds = new DataSet();
    30.
    31. if (string.IsNullOrEmpty(excelPath))
    32.
    33. {
    34.
    35. dt =null ;
    36.
    37. //ds = null;
    38.
    39. }
    40.
    41. else
    42.
    43. {
    44.
    45. try
    46.
    47. {
    48.
    49. string strConn =@"Provider = Microsoft.ACE.OLEDB.12.0;Data Source="+ excelPath +";Extended Properties = 'Excel 12.0;HDR=Yes;IMEX=1;'";
    50.
    51. using(OleDbConnection oconn =new OleDbConnection(strConn))
    52.
    53. {
    54.
    55. OleDbCommand ocmd =null;
    56.
    57. oconn.Open();
    58.
    59. try
    60.
    61. {
    62.
    63. ocmd =new OleDbCommand("SELECT * FROM ["+filename+"$]", oconn);//在web.config中配置
    64.
    65. OleDbDataAdapter oda =new OleDbDataAdapter(ocmd);
    66.
    67. oda.Fill(dt);
    68.
    69. }
    70.
    71. catch(OleDbException oex)
    72.
    73. {
    74.
    75. dt =null;
    76.
    77. throw oex;
    78.
    79. //ds = null;
    80.
    81. }
    82.
    83. finally
    84.
    85. {
    86.
    87. oconn.Close();
    88.
    89. ocmd.Dispose();
    90.
    91. }
    92.
    93. }
    94.
    95. }
    96.
    97. catch(Exception ex)
    98.
    99. {
    100.
    101. throw ex;
    102.
    103. }
    104.
    105. }
    106.
    107. //return ds.Tables[0];
    108.
    109. return dt;
    110.
    111. }
    复制代码

    说明:该方法需要一个参数用来获取Excel文件的路径,找到后放到一个DataTable中。  对于第二条,为了提高性能,我是这样实现的,每次遍历时只跟它后面的数据比较,因为它前面的数据已经跟它比较过了,没必要它再跟前面的数据比较

    复制代码
    ///<summary>
    02.
    03. /// 查看Excel文件中重复的数据
    04.
    05. /// 该方法只是比较编号和客户名称,其他字段没有比较
    06.
    07. ///</summary>
    08.
    09. ///<param name="excelPath">string:Excel文件路径</param>
    10.
    11. ///<returns>ArrayList:重复行组成的动态数组</returns>
    12.
    13. publicstatic ArrayList arrCFData(string excelPath)
    14.
    15. {
    16.
    17. ArrayList arrUserData =new ArrayList();
    18.
    19. excelPath=excelPath.Trim();
    20.
    21. if (string.IsNullOrEmpty(excelPath))
    22.
    23. {
    24.
    25. arrUserData =null;
    26.
    27. }
    28.
    29. else
    30.
    31. {
    32.
    33. string ret =null;
    34.
    35. DataTable dtCompInfo =null;
    36.
    37. try
    38.
    39. {
    40.
    41. dtCompInfo = DF.DBFactory.GetCompanyDAO().GetUserDataDTList(excelPath);
    42.
    43. if(dtCompInfo!=null&&dtCompInfo.Rows.Count>0)
    44.
    45. {
    46.
    47. int count = dtCompInfo.Rows.Count;
    48.
    49. int x, y;
    50.
    51. for (int i =0; i < count;i++ )
    52.
    53. {
    54.
    55. for (int j = i +1; j < count; j++)
    56.
    57. {
    58.
    59. if (dtCompInfo.Rows[i][0].ToString().Equals(dtCompInfo.Rows[j][0].ToString()) && dtCompInfo.Rows[i][3].ToString().Equals(dtCompInfo.Rows[j][3].ToString()))
    60.
    61. {
    62.
    63. x = i +2;
    64.
    65. y = j +2;
    66.
    67. ret =string.Format("Excel数据中第{0}行和第{1}行数据重复",x, y);
    68.
    69. arrUserData.Add(ret);
    70.
    71. break;
    72.
    73. }
    74.
    75. }
    76.
    77. //arrUserData.Add(dtCompInfo.Rows[i][0].ToString() + "出来吧" + dtCompInfo.Rows[i][3].ToString());
    78.
    79.
    80.
    81. }
    82.
    83. }
    84.
    85. }
    86.
    87. catch(Exception ex)
    88.
    89. {
    90.
    91. ExceptionManager.SaveException(ex, "Company.cs", ex.Message);
    92.
    93. arrUserData =null;
    94.
    95. }
    96.
    97. finally
    98.
    99. {
    100.
    101. dtCompInfo =null;
    102.
    103. }
    104.
    105. }
    106.
    107. return arrUserData;
    108.
    109. }
    复制代码

    转载于:https://www.cnblogs.com/wifi/articles/2744607.html

    展开全文
  • Excel如何找出同一列的重复数据

    千次阅读 2014-11-18 16:58:01
    如果数据在A列,则在B列第一输入:   =IF(COUNTIF(A:A,A2)>1,"重复","")   双击单元格右下角小黑块

    如果数据在A列,则在B列第一行输入公式:

     

    =IF(COUNTIF(A:A,A2)>1,"重复","")

     

    双击单元格右下角的小黑块,填充公式,重复的数据,在单元格中显示“重复”,然后可以通过排序把重复的数据筛选出来

     

    展开全文
  • 快速找出DataTable中的重复行

    千次阅读 2008-07-08 20:49:00
    最近完成了公司内部CRM,感觉收获不少,拿出来给大家分享一下,也方便...快速找出DataTable中的重复行; 3.比较Excel文件中重复行时遇到问题; 4.对“i++”和“i++”重新认识;5.尝试利用事务来插入数据; 解析:
  • 筛选下两列的重复名字(重复名字可能没在一) 步骤: (1)选中两列,点击条件格式--突出显示单元格规则--重复值 结果:
  • Excel 随机抽取不重复n数据

    千次阅读 2020-08-17 11:46:38
    了一下,用Excel内置的数据分析工具——抽样,是...这里的32165,是第一个数据中要索引的范围下界,这里自己根据自己有多少行数据,写相应的行标就好了。 第三步,插入数据就好了,左右各填充至需要的。 =INDEX
  • Excel 去除重复几种常用技巧

    万次阅读 2018-02-26 09:55:52
    所谓的重复项,通常是指在Excel中某些记录在各个字段中都有相同内容(纵向称为字段,横向称为记录),例如下面图中第三数据记录和第五数据记录就是完全相同两条记录,除此以外还有第六和第十也是一组...
  • Excel用公式找出出现次数最多数据

    千次阅读 2014-01-10 12:24:26
    数据源描述,在A列有1000数据,数据有很多重复项,需要找出A列中重复出现次数最多数据,使用以下公式=INDEX($A:$A,MODE(MATCH($A$1:$A$1000,$A$1:$A$1000,0)))MATCH是找出每个数据第一次出现行数...
  • 记录一个刚刚用本‘笨’办法解决数据清洗和数据整理问题 ...如果不用 Python,只用 Excel, 如何找出三个结果中的重复值?(N2-N1视为与N1-N2等同) 我笨办法(不用 VBA) 首先,分别按照编号大小左右排序,再从
  • Excel excel提取不重复

    千次阅读 2014-07-26 16:57:09
    一、INDEX—MATCH=ROW 法=INDEX(A:A,SMALL(IF(MATCH($A$2:$A$11,$A$2:$A$11,0)=...1、对 A 列中的每一项利用 MATCH 函数找出其在 A 列中首次出现的位置,返回相应的行 号。超出列表范围时将返回一个较大的行号,如 6553
  • excel的使用

    2012-11-25 17:06:01
    如果用得到,你还可以利用EXCEL来完成行列式、矩阵各种计算,进行简单积分运算,利用迭代求函数值(如x^2=x^7+4,可用迭代方法求x值),等等,凡是涉及计算方面事,找EXCEL来帮忙,它一定会给你一个满意答案...
  • 如果Admin对象的Id和Username相同 认为Admin重复, 找出adminArrayList中重复的数据,并显示重复数据在集合的序号是多少?本问题是导入Excel时如果有重复,需要报给用户哪重复。 @Test public void listTest(){ ...
  • Excel VBA 重复数据删除 Sub DeleteDuplicates() Dim data, data_dict As Variant ... Rows.Count).End(xlUp).Row '找出数据列中最后数据所在 data = Range("A1:A" & LastRow).Value '将数据赋值给变量 '利
  • Excel两列比较

    2011-08-04 08:07:00
    但是如果去一行的找这个不相同位置,也不好找,尽管SQL能够解决这个问题,但是我想能否通过最简单的Excel来解决这个问题,也就是说把操作前后两列记录拿出来,进行对比,找出不一样记录。 比较A列与B列...
  • excel/word经验笔记

    2017-02-05 12:17:52
    3.利用函数从某列单元格中找出与目标单元格完全一致单元格(单元格匹配) 4.截取单元格内字符 5.隔行取数 6.excel 多行中两列如果同时相同时如何将另一列中数量相加 7.怎么样在excel表格里面每隔一插入一个...
  • Excel 表格核对方法

    2019-02-14 10:59:38
    【例2】下图中,要求找出两列中相同姓名(单列中姓名无重复) 核对方法:条件格式 - 突出显示单元格规则 - 重复值 3、相同数值不一定同行(单列有重复值) 【例3】如下图所示,对比姓名F列...
  • 1.基本概念 2.内容 (4)处理重复数据 A.找出重复数据 - 判断是否有重复数据 import pandas as pd ...print(dupe)#判断哪重复的 结果为true,表明为重复 - 判断有多少个重复数据 import pandas as pd people
  • 使用python查找重复

    2018-07-07 17:51:26
    找出所有重复单词索引,并将重复例句合并。最后将整张词表分割成重复值和非重复值部分。 核心代码 1、使用xlwt和xlrd模块读写Excel 读取Excel的步骤在于,获得所有sheet名字数组,通过名字读取某一个sheet内容...
  • 不通过编程,实现 Excel 数据的 Outer Join 合并。总体思路是先从两块数据中找出具备相同内容的列作为 Key 列,然后把两块数据的 Key 列内容纵向串接在一起,找出重复值并删除相应的行,既得到 Outer Join 结果。
  • Excel中使用VBA来筛选数据

    万次阅读 2004-11-27 15:34:00
    问题大概是这样的,一个很大的Excel文件,其中有些行是重复的,也就是说,有2行是完全一样的,而有些行是不重复的,现在的问题是要找出所有不重复或者重复的行,你没有听明白。你大概考虑了一下,用“VLOOKUP”查找...
  • EXCEL集成工具箱V6.0

    2010-09-11 01:44:37
    【行列奇偶选择】 可视化对当前工作表的行与列进行快速的奇偶行或奇偶列快速选定操作。 【查找与替换】 增强型EXCEL内置查找与替换功能。可以按设置搜索任何字符串(包括*或?符以及公式中包含的某字符),也可以将...
  • 使用数据透视图汇总数百万数据,在不使用图表情况下以图形方式显示数据,使用SmartArt图形绘制流程图和关系图,使用VBA创建图表,将数据绘制到地图中,将图表导出到网页或PowerPoint中,找出图表背后谎言等。...
  • 使用数据透视图汇总数百万数据,在不使用图表情况下以图形方式显示数据,使用SmartArt图形绘制流程图和关系图,使用VBA创建图表,将数据绘制到地图中,将图表导出到网页或PowerPoint中,找出图表背后谎言等。...
  • 使用数据透视图汇总数百万数据,在不使用图表情况下以图形方式显示数据,使用SmartArt图形绘制流程图和关系图,使用VBA创建图表,将数据绘制到地图中,将图表导出到网页或PowerPoint中,找出图表背后谎言等。...
  • 使用数据透视图汇总数百万数据,在不使用图表情况下以图形方式显示数据,使用SmartArt图形绘制流程图和关系图,使用VBA创建图表,将数据绘制到地图中,将图表导出到网页或PowerPoint中,找出图表背后谎言等。...
  • 使用数据透视图汇总数百万数据,在不使用图表情况下以图形方式显示数据,使用SmartArt图形绘制流程图和关系图,使用VBA创建图表,将数据绘制到地图中,将图表导出到网页或PowerPoint中,找出图表背后谎言等。...

空空如也

空空如也

1 2 3 4
收藏数 75
精华内容 30
关键字:

找出excel重复的行