Function merge_skill1()

Dim dict1 As Object
    Set dict1 = CreateObject("scripting.dictionary")
    Dim arr1()
    Dim arr2()
    Dim arr3()
    Dim arr4()
    'array1 array2
    '先来技能数量和id
    g20 = Application.Match("技能数量", Worksheets("petbag").Range("2:2"), 0)
    g21 = Application.Match("技能1", Worksheets("petbag").Range("2:2"), 0)
    skill_count_s01 = Application.index(Worksheets("petbag").Columns(g20), Application.Match(s01, Worksheets("petbag").Range("a:a"), 0))
    skill_count_s02 = Application.index(Worksheets("petbag").Columns(g20), Application.Match(s02, Worksheets("petbag").Range("a:a"), 0))
     
     ReDim arr1(skill_count_s01 - 1)
     For i = 1 To skill_count_s01
         skill_id_s01 = Application.index(Worksheets("petbag").Columns(g21), Application.Match(s01, Worksheets("petbag").Range("a:a"), 0)).Offset(0, i - 1)
         arr1(i - 1) = skill_id_s01                    '下标越界? arr1(i) 没有考虑 dim arr1这种,默认index从0开始,要注意
         Debug.Print "arr1(" & i - 1 & ")=" & arr1(i - 1)
     Next

ReDim arr2(skill_count_s02 - 1)
     For i = 1 To skill_count_s02
         skill_id_s02 = Application.index(Worksheets("petbag").Columns(g21), Application.Match(s02, Worksheets("petbag").Range("a:a"), 0)).Offset(0, i - 1)
         arr2(i - 1) = skill_id_s02
         Debug.Print "arr2(" & i - 1 & ")=" & arr2(i - 1)
     Next
     
'数组合并
'       arr3 = Union(arr1, arr2)  'union 只适合工作表函数
    ReDim arr3(UBound(arr1))
    For i = 0 To UBound(arr1)
        arr3(i) = arr1(i)
'            Debug.Print "arr3(" & i & ")=" & arr3(i)
    Next
    ReDim Preserve arr3(UBound(arr1) + UBound(arr2) + 1)  '因为index从0开始
    For i = UBound(arr1) + 1 To UBound(arr1) + UBound(arr2) + 1
        arr3(i) = arr2(i - UBound(arr1) - 1)
'            Debug.Print "arr3(" & i & ")=" & arr3(i)
    Next
    For i = LBound(arr3) To UBound(arr3)
         Debug.Print "arr3(" & i & ")=" & arr3(i)
    Next
       
'dict1去重

For Each i In arr3
        dict1(i) = ""
      Next

'遍历字典

X = 1
     For Each i In dict1.keys()
         ReDim Preserve arr4(1 To X)     '每次改数组都要先redim    redim 时记得一定要考虑是否 preserve !!!
         arr4(X) = i
         X = X + 1
     Next

'   For i = 1 To UBound(arr4)
'      Debug.Print "arr4(" & i & ")=" & arr4(i)
'   Next

For i = 1 To UBound(arr4)
            g30 = Application.Match("技能名", Worksheets("Petskill").Range("2:2"), 0)
            g31 = Application.Match("技能效果", Worksheets("Petskill").Range("2:2"), 0)
            g32 = Application.Match("技能图标", Worksheets("Petskill").Range("2:2"), 0)
            g33 = Application.Match("品质", Worksheets("Petskill").Range("2:2"), 0)

skill_name_s01 = Application.index(Worksheets("Petskill").Columns(g30), Application.Match(arr4(i), Worksheets("Petskill").Range("a:a"), 0))
            skill_pro_s01 = Application.index(Worksheets("Petskill").Columns(g31), Application.Match(arr4(i), Worksheets("Petskill").Range("a:a"), 0))
            skill_icon_s01 = Application.index(Worksheets("Petskill").Columns(g32), Application.Match(arr4(i), Worksheets("Petskill").Range("a:a"), 0))
            skill_type_s01 = Application.index(Worksheets("Petskill").Columns(g33), Application.Match(arr4(i), Worksheets("Petskill").Range("a:a"), 0))

'          Debug.Print "skill_name_s01= " & skill_name_s01
'          Debug.Print "skill_pro_s01= " & skill_pro_s01
'          Debug.Print "skill_icon_s01= " & skill_icon_s01

'其实如果已经先写到表里,可以不用dict,直接读表,复用上面的显示函数
           '还是要利用dict的去重效果,然后再存表里,是可以的。只是不直接从dict读,而是从表里再读

Controls("image" & i + 40).PictureSizeMode = fmPictureSizeModeZoom
            Controls("image" & i + 40).Picture = LoadPicture(ThisWorkbook.Path & "\res\skill\" & skill_icon_s01 & ".jpg")
            Controls("image" & i + 40).ControlTipText = skill_name_s01 & "  " & skill_pro_s01
            
            
            If skill_type_s01 = 1 Then
               Controls("image" & i + 40).BorderColor = RGB(0, 0, 255)
            ElseIf skill_type_s01 = 2 Then
               Controls("image" & i + 40).BorderColor = RGB(255, 165, 0)
            Else
               Debug.Print "品质有错"
            End If
            
      Next
     Call merge_skill2(UBound(arr4), arr4)

'字典的显示

End Function

VBA 数组合并 和 用dict 去重数组相关推荐

  1. php数组合并 要保持两个数组的键名都不变

    php数组合并 要保持两个数组的键名都不变 array_merge会使键名发生变化. 用 + 号最简单,且不会改变数组的键名 $a = array("a" => " ...

  2. php把这两个二维数组合并,两个二维数组的合并

    合并前的数组a: array (size=3) 0 => array (size=2) 'id' => string '113' (length=3) 'email' => stri ...

  3. java 数组合并_JAVA将多个数组合并成一个数组

    /** * @author xuekun *动态接收参数 *将给的数组合并成一个数组 *转载请注明出处 */ public static File[] arrayCopy(File[]... arra ...

  4. php两个数组合并 不使用函数,php数组合并array_merge()函数使用注意事项

    array_merge()函数在php中是对数据进行合并的,可以把多个数组合成一个数组,并且不改变原数组的值了,但今天我在使用array_merge合并数组时碰到几个小细节上的问题,下面我举例子给各位 ...

  5. 数组合并,将两个数组合并为一个数组显示

    将两个数组中的属性放到一个数组中 var arr1=[ {name: 'merchant', value: '1'}, {name: 'customer', value: '2'} ] var arr ...

  6. php 递归合并类 call,PHP多个数组合并(递归的进行)

    /** * 对多个数组进行递归合并 返回新的数组 * 如果多个数组中有相同的键则会覆盖 * * @return type Array */ function multimerge() { $arrs ...

  7. ZZULIOJ 1124: 两个有序数组合并

    两个有序数组合并 题目描述 已知数组a中有m个按升序序排列的元素,数组b中有n个降序排列的元素,编程将a与b中的所有元素按降序存入数组c中. 输入 输入有两行,第一行首先是一个正整数m,然后是m个整数 ...

  8. PHP数组合并的常见问题

    一维数组的合并 <?php$arr1=array("a","b","c");$arr2=array("c",&qu ...

  9. 有序数组合并及等长数组对位穿插

    将两个本身有序的数组合并为一个新的数组的方法 const arr1 = [11,15,18,23,26],arr2 = [11,19,21,25,27];let mergeTwoArr = (arr1 ...

最新文章

  1. 使用data uri将图片内嵌到html中
  2. 基于MATLAB的语音信号的时域特性分析(一)——分帧、窗函数
  3. 数据结构-队(C语言代码)
  4. 软件的安装(包括yum仓库与源码包的安装)
  5. effective c++_【阅读笔记】Effective C++()
  6. Git本地与远程配对命令:两种 一种是在推送push时候配对 一种是新建分支checkout -b时候配对
  7. 事物 @Transactional
  8. 服务器图纸被自动删除,JavaWeb项目图片消失的原因之一————服务器上图片目录被误删...
  9. 前端学HTTP之网络基础
  10. icem密度盒怎么设置_ICEM-自动体网格生成[精].ppt
  11. php 域名被劫持,域名被劫持怎么办
  12. php selectradio和checkbox默认选择的实现方法
  13. Java模拟微信发红包,一看就会
  14. mac播客播放器:Moon FM for Mac
  15. opencv海思平台移植解决warning: ../../lib/libopencv_imgproc.so, needed by ../lib/libopencv_imgcodecs.so, not
  16. HDOJ 1282 回文数猜想
  17. 大流量滤芯保安过滤器
  18. 基于ESP8266+433射频控制系统
  19. 我觉得项目经理,应该涨工资
  20. 关于在python中安装turtle出现的一些问题

热门文章

  1. 亿级流量架构演进实战 | 从零构建亿级流量API网关 02
  2. Matlab的CPU占用率太高
  3. ARTONE的艺术美学:为笔记本注入时尚灵魂
  4. SpringBoot与Mybatis的点歌项目(基础)
  5. 头歌C++ 第8章 虚函数与多态性
  6. (每日一练c++)CC28 买卖股票的最好时机 iii
  7. 某百货公司为了促销,采用购物打折的办法。
  8. css三角形之美与品优购项目
  9. 95598.cn停电公告采集
  10. 【测绘图槽】 07 人偶测量师捉弄路人