ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请大师写一个两列数据去除数据并集的程序

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-10-30 14:30 | 显示全部楼层 |阅读模式
请大师写一个两列数据去除数据并集,并把得到的新数据写入txt格式的文件并打开的VBA程序,谢谢,详见附件。
工作簿3.rar (6.55 KB, 下载次数: 13)

TA的精华主题

TA的得分主题

发表于 2014-10-30 14:41 | 显示全部楼层
表格内容看明白,都是关于需求中后半部分没有看明白
可以考虑使用下字典的

TA的精华主题

TA的得分主题

发表于 2014-10-30 14:47 | 显示全部楼层
Sub 按钮1_Click()
    Application.ScreenUpdating = False
    Set d = CreateObject("scripting.dictionary")
    arr = [d4].CurrentRegion
    For j = 1 To 2
        For i = 1 To UBound(arr)
            If Len(arr(i, j)) > 0 Then
                If d.exists(arr(i, j)) Then
                    d.Remove arr(i, j)
                Else
                    d(arr(i, j)) = ""
                End If
            End If
        Next i
    Next j
    [g4].Resize(d.Count) = WorksheetFunction.Transpose(d.keys)
    Application.ScreenUpdating = True
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-10-30 14:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
具体见附件内容
结果跟你的有出入,增加了第一列的数据

工作簿3.zip

14.34 KB, 下载次数: 15

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-30 15:23 | 显示全部楼层
liulang0808 发表于 2014-10-30 14:47
Sub 按钮1_Click()
    Application.ScreenUpdating = False
    Set d = CreateObject("scripting.dicti ...

您好  程序返回的结果不对  您看看示例中 ,我要的结果是  从数据B中 去掉数据A,把剩下的写入到单元格,如果可能,就把D.KEYS的内容,输出到文本文件中,谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-30 16:21 | 显示全部楼层
liulang0808 发表于 2014-10-30 14:47
Sub 按钮1_Click()
    Application.ScreenUpdating = False
    Set d = CreateObject("scripting.dicti ...

程序虽然有点儿问题  仔细看了看  也能正常使用 谢谢

TA的精华主题

TA的得分主题

发表于 2014-10-30 19:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
hjqiang888 发表于 2014-10-30 16:21
程序虽然有点儿问题  仔细看了看  也能正常使用 谢谢

可以简单调整下 ,把第二列数据读入字典,

TA的精华主题

TA的得分主题

发表于 2014-10-30 20:02 | 显示全部楼层
  1. Sub test()
  2. '需要安装ACTIVERUBY ,下载地址 http://www.artonx.org/data/asr/Ruby-2.1.1.msi
  3. Set ojs = CreateObject("scriptcontrol"): ojs.Language = "rubyscript"
  4. y = ojs.eval("def aa(aa,bb);$aa=aa.flatten;$bb=bb.flatten;end")
  5. y = ojs.Run("aa", Sheet1.Range("d4", [d4].End(4)).Value, Range("e4", [e4].End(4)).Value)
  6. y = ojs.eval("Dir.chdir('" & ThisWorkbook.Path & "');f=File.new('1.txt','w');f.puts ($bb-$aa).map(&:to_i);f.close")
  7. y = ojs.eval("($bb-$aa).zip")
  8. [g4].Resize(UBound(y) + 1) = y
  9. Set ojs = Nothing
  10. 'Stop
  11. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-30 22:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
bluexuemei 发表于 2014-10-30 20:02

您好  程序写的非常好 有两个小问题,请问一下怎么处理呢?
1:源数据中 数据如果是文本型的数字,比如 出现002时  程序处理完后,变成了2,怎么让数据仍输出为002。
2:写入文本文件后,怎么调整一下格式,每行10个数,依次向下写入,谢谢!
很抱歉,今天的分用完了,明天补上。

TA的精华主题

TA的得分主题

发表于 2014-10-31 08:29 | 显示全部楼层
  1. Sub test()
  2. '需要安装ACTIVERUBY ,下载地址 http://www.artonx.org/data/asr/Ruby-2.1.1.msi
  3. Set ojs = CreateObject("scriptcontrol"): ojs.Language = "rubyscript"
  4. y = ojs.eval("def aa(aa,bb);$aa=aa.flatten;$bb=bb.flatten;end")
  5. y = ojs.Run("aa", Sheet1.Range("d4", [d4].End(4)).Value, Range("e4", [e4].End(4)).Value)
  6. y = ojs.eval("Dir.chdir('" & ThisWorkbook.Path & "');f=File.new('1.txt','w');f.puts ($bb-$aa).map(&:to_i);f.close")
  7. y = ojs.eval("($bb-$aa).each_slice(10).to_a")
  8. [i4].Resize(UBound(y) + 1, UBound(y, 2) + 1).NumberFormat = "@"
  9. [i4].Resize(UBound(y) + 1, UBound(y, 2) + 1) = y
  10. Set ojs = Nothing
  11. 'Stop
  12. End Sub
复制代码

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-19 22:25 , Processed in 0.046531 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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