ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3973|回复: 13

分别提取重复和不重复的行到另外两个表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-11-6 10:12 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

 问题:
   对“原始数据”表中的数据共有48列,有若干行,现要求对其整整行进行比较。
   要求:
   1、把“原始数据”表中整行完全一样的的挑选出来(重复的数据无论有几个都只保留一个),放在“重复数据”表中。
   2、把不重复的挑选出来,放在“不重复数据”表中。
   说明:
   所谓整行相同,就是指这一行的所有的列对应的数字都相同!也就
是这样的,假如第一行与第二行数据相同,那么就是要求:

A1=A21、B1=B2、C1=C2、D1=D2、....直到最后一列也相同,就表示这两行是相同的!

A1=A21应该是A1=A2

dPW8IoIk.rar (88.03 KB, 下载次数: 15)
[此贴子已经被lenghonghai于2007-11-7 10:07:01编辑过]

Ehmv0gVC.rar

88.03 KB, 下载次数: 16

分别提取重复和不重复的行的到另外两个表

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-11-6 10:13 | 显示全部楼层

下面是我在网上搜索到的一些资料,看看能不能利用一下!

'比较A列行与行之间是否有重复,有则将重复单元格变灰色
        Dim   index   As   Long               '行号
        Dim   temp   As   String             '当前单元格上一单元格值,作比较用
        Dim   strRangeA   As   String   'A列单元格
        Dim   strColor   As   Integer   '颜色
       
        temp   =   " "
        strColor   =   15
       
        For   index   =   1   To   65536
               
                strRangeA   =   "A "   +   CStr(index)
               
                If   Range(strRangeA).Value   =   " "   Then
                        Exit   Sub
                End   If
               
                If   temp   =   Range(strRangeA).Value   Then
               
                        Range(strRangeA).Select
                        With   Selection.Interior
                                .ColorIndex   =   strColor
                                .Pattern   =   xlSolid
                        End   With
   
                End   If
                temp   =   Range(strRangeA).Value
        Next

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-11-6 10:14 | 显示全部楼层
DeRoshia那种方法其实很慢的。我自己找到了一个内部函数。
那就是用“COUNTIF”

  For   i   =   dealerStart   To   dealerEnd
                currentDealerId   =   wsInput1.Range( "A "   &   i).Text
                currentProductType   =   wsInput1.Range( "C "   &   i).Text
               
                If   currentDealerId   < >   " "   Then
                        &apos; &apos;检验是否有重复的经销商
                        wsDataSource.Range(isRepeat).Formula   =   "=COUNTIF(firstSheet!A "   &   i   +   1   &   ":A "   &   dealerEnd   &   ", " " "   +   currentDealerId   +   " " ") "
                          If   wsDataSource.Range(isRepeat).Value2   =   1   Then
                                        MsgBox   firstSheet   &   "   第 "   &   i   &   "行   相同《经销商编号》的记录已经存在! "
                                        errRng   =   "A "   &   i
                                        GoTo   FunctionEnd
                          End   If

                End   If
        Next   i

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-11-6 10:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不用VBA即可实现
用countif配合自动筛选

假设数据共9列(A~I)
第一行为标题行
其中A与C列为关键列
取J与K列为辅助列(列名分别为辅1       辅2)

在J2格写入公式     =A2   &   C2
并填充J列(这一步用于生成对重复数据的识别列)

在K2格写入公式     =countif(J$2:J2,j2)
填充K列

此时K列中大于1的行都是重复行
打开自动筛选
选出大于1的行
全部删除

打完收工

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-11-6 11:27 | 显示全部楼层
QUOTE:
以下是引用lenghonghai在2007-11-6 10:22:23的发言:

 所谓整行相同,就是指这一行的所有的列对应的数字都相同!

这句话指的是什么?

是这一行所有的数据都一样吗?

是这样的,假如第一行与第二行数据相同,那么就是要求:

A1=A21、B1=B2、C1=C2、D1=D2、....直到最后一列也相同,就表示这两行是相同的!

TA的精华主题

TA的得分主题

发表于 2007-11-7 10:34 | 显示全部楼层
看得很模糊,能做个完成后的样子来理解吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-11-10 09:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用oobird在2007-11-7 10:34:06的发言:
看得很模糊,能做个完成后的样子来理解吗?

谢谢版主,这个问题也是一个网友问我的,我要他完善一下!

TA的精华主题

TA的得分主题

发表于 2007-11-10 11:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
WxgnDrtR.rar (89.17 KB, 下载次数: 145)
这是依目前的理解写的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-11-10 12:29 | 显示全部楼层
QUOTE:
以下是引用oobird在2007-11-10 11:03:14的发言:

这是依目前的理解写的。

谢谢oobird版主。看看先!

TA的精华主题

TA的得分主题

发表于 2007-11-10 14:44 | 显示全部楼层

请教版主下面代码红的是什么意思!为什么要这样!谢谢

If Not d2.exists(s) Then
    d2.Add s, i: d.Remove (s): s = ""
          End If
          End If
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-22 18:36 , Processed in 0.043412 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表