设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2981|回复: 7
打印 上一主题 下一主题

[基础应用] 如何把两个文件里重复的部分删除?

[复制链接]
跳转到指定楼层
1#
发表于 2006-11-6 23:50:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
EXCEL文件A,B和C,A包含了B和C,B和C的内容可能有重复。请教如何把A里面的B和C的内容删除,只显示BC没有的内容?

第一次来这里,望高手说详细点,我不太熟悉EXCEL。谢谢了。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2006-11-7 04:00:00 | 只看该作者
EXCEL中有很多sheet, 不知你说B/C表中是不是其中一个? sheet可删除的
3#
 楼主| 发表于 2006-11-7 22:12:00 | 只看该作者
每个文件里只有一个sheet。

也可以说ABC各是一个sheet

我要删的是A里面的数据,这些数据是和B或者C相同了,所以要删除。
4#
发表于 2006-11-8 06:17:00 | 只看该作者
既然A表为最全的数据, 何不用筛选功能? B/C表均能通过定义筛选条件而得出
5#
发表于 2006-11-8 07:00:00 | 只看该作者


这里只是写了从A中删除与B相同的内容,C同理。需删除的内容被我改成了#####,当然也可以直接删除改成.value = ""即可。不过完全变为空的话会影响找最后一行或列的命令。待高手指点。

Sub findsame()
Set mysheet1 = Workbooks("A.xls").Sheets(1)
Set mysheet2 = Workbooks("B.xls").Sheets(1)
'find lastcell and lastcolumn in A
Alastcell = mysheet1.Range("a1").End(xlDown).Row
Alastcolumn = mysheet1.Range("a1").End(xlToRight).Column
' find lastcell and lastcolumn in B
Blastcell = mysheet2.Range("a1").End(xlDown).Row
Blastcolumn = mysheet2.Range("a1").End(xlToRight).Column
For i = 1 To Alastcell
    For j = 1 To Alastcolumn
        For m = 1 To Blastcell
            For k = 1 To Blastcolumn
                If mysheet1.Cells(i, j).Value = mysheet2.Cells(m, k).Value Then
                mysheet1.Cells(i, j).Value = "#####"
                GoTo forj
                End If
                Next k
            Next m
forj:
        Next j
    Next i
End Sub
6#
发表于 2006-11-8 08:41:00 | 只看该作者
LZ可以试试这个方法,若你的数据非常大非常多,就比较适合你的了,将B中含有的所有字符从文件A中都删除掉.缺点是A B文件每个单元都将被冲头找到尾。 请高手改进。

Sub Makro1()
For Each x In Workbooks("B.xls").Sheets(1).Cells
    Workbooks("A.xls").Sheets(1).Cells.Replace What:=x, Replacement:="", LookAt:=xlWhole
Next
End Sub
7#
发表于 2006-11-9 03:31:00 | 只看该作者
又加工了一下,这样写就不会全部单元查找了,只处理已用区域,LZ可以试试。

Sub Makro1()
Set A_usedArea = Workbooks("A.xls").Sheets(1).UsedRange
Set B_usedArea = Workbooks("B.xls").Sheets(1).UsedRange
Set C_usedArea = Workbooks("C.xls").Sheets(1).UsedRange
For Each x In B_usedArea
    A_usedArea.Replace What:=x, Replacement:="", LookAt:=xlWhole, MatchCase:=True
Next
For Each x In C_usedArea
    A_usedArea.Replace What:=x, Replacement:="", LookAt:=xlWhole, MatchCase:=True
Next
End Sub

[此贴子已经被作者于2006-11-8 19:47:20编辑过]

8#
 楼主| 发表于 2006-11-9 23:10:00 | 只看该作者
不是很明白,这些语句要用在什么里面呢?怎么使用?

4楼所说的筛选功能我试过了,但我只能把A里面和B不同的部分删了,怪。

麻烦高手们说详细点,我对EXCEL只是能简单的操作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-26 02:39 , Processed in 0.081629 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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