ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 关于数组合并的问题,请教各位高手!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-8-21 13:34 | 显示全部楼层 |阅读模式
诚恳请教各位大侠:

有两个一维数组,如下:

arr = Array(1, 2, 3, 4)
brr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)

希望通过代码生成一维数组:Crr,Crr如下,请问代码如何写。其实主要目的就是将两个数组的相同项从brr中移除

crr = Array(5, 6, 7, 8, 9)


谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-21 14:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
自己顶一下!

TA的精华主题

TA的得分主题

发表于 2018-8-21 14:25 | 显示全部楼层
Sub vf()
    arr = Array(1, 2, 3, 4)
    brr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
    s = Join(arr, "-")
    Dim crr()
    For i = 1 To UBound(brr)
        If InStr(s, brr(i)) = 0 Then
            k = k + 1
            ReDim Preserve crr(1 To k)
            crr(k) = brr(i)
        End If
    Next
    Stop
End Sub

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-21 14:36 | 显示全部楼层
jiangxiaoyun 发表于 2018-8-21 14:25
Sub vf()
    arr = Array(1, 2, 3, 4)
    brr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)

非常感谢,测试成功。这个问题我想了2天了,一直困在想用2个循环的方法来解决。

TA的精华主题

TA的得分主题

发表于 2018-8-21 14:56 来自手机 | 显示全部楼层
sub CC()
Set d=Createobject("scriPting.diCtionary")
set d1 =CreateObjeCt("SCriPting.diCtiOnary")
Arr=ArrAy(1,2,3,4)
Brr=ArrAy(1,2,3,4,5,6,7,8,9)
FOr i=0 tO ubOund(arr)
d(arr(i))=""
next
For J=0 to ubOund(brr)
if nOt d.exists(brr(j)) Then
d1.Add brr(j),""
crr=d1.Keys
end if
next
end Sub


"

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-8-21 15:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
A5585202 发表于 2018-8-21 14:36
非常感谢,测试成功。这个问题我想了2天了,一直困在想用2个循环的方法来解决。

用两个循环也没坏啊,用instr函数就得注意44和4这样的差别。

TA的精华主题

TA的得分主题

发表于 2018-8-21 15:06 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-21 15:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
iwangyi 发表于 2018-8-21 14:56
sub CC()
Set d=Createobject("scriPting.diCtionary")
set d1 =CreateObjeCt("SCriPting.diCtiOnary")
...

谢谢,经过测试ok,字典还是很强大的!

TA的精华主题

TA的得分主题

发表于 2018-8-21 15:09 | 显示全部楼层
Sub t()
    Dim arr, brr, i&, dic As Object, k
    Set dic = CreateObject("scripting.dictionary")
        arr = Array(1, 2, 3, 4)
        brr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
    For i = 0 To UBound(brr)
        dic(brr(i)) = ""
    Next
    For Each k In arr
        If dic.exists(k) Then
            dic.Remove (k)
        End If
    Next
    crr = dic.keys
End Sub

TA的精华主题

TA的得分主题

发表于 2018-8-21 21:14 | 显示全部楼层
  1. Sub main()
  2.     arr = Array(1, 2, 3, 4)
  3.     brr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
  4.     s = "[" & Join(brr, ",") & "]": c = "[" & Join(arr, ",") & "]"
  5.     Set js = CreateObject("MSScriptControl.ScriptControl")
  6.     js.Language = "JavaScript"
  7.     j = "a=" & s & ";b=" & c & ";t=[];p=[];for(i=0;i<b.length;i++){t[b[i]]=true;};for(i=0;i<a.length;i++){if(!t[a[i]]){p.push(a[i]);}};p"
  8.     crr = Split(js.eval(j), ",")
  9.     Stop
  10. End Sub
复制代码

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

本版积分规则

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

GMT+8, 2025-1-12 12:10 , Processed in 0.028987 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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