Guest User

Untitled

a guest
Jan 17th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. Function ArrayUnique(ByVal aArrayIn As Variant) As Variant
  2. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  3. ' ArrayUnique
  4. ' This function removes duplicated values from a single dimension array
  5. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  6. Dim aArrayOut() As Variant
  7. Dim bFlag As Boolean
  8. Dim vIn As Variant
  9. Dim vOut As Variant
  10. Dim i%, j%, k%
  11.  
  12. ReDim aArrayOut(LBound(aArrayIn) To UBound(aArrayIn))
  13. i = LBound(aArrayIn)
  14. j = i
  15.  
  16. For Each vIn In aArrayIn
  17. For k = j To i - 1
  18. If vIn = aArrayOut(k) Then bFlag = True: Exit For
  19. Next
  20. If Not bFlag Then aArrayOut(i) = vIn: i = i + 1
  21. bFlag = False
  22. Next
  23.  
  24. If i <> UBound(aArrayIn) Then ReDim Preserve aArrayOut(LBound(aArrayIn) To i - 1)
  25. ArrayUnique = aArrayOut
  26. End Function
  27.  
  28. Sub test()
  29. Dim arm(11, 1) As Variant
  30. Dim tempar() As Variant
  31. ReDim tempar(0 To UBound(arm, 1), 0 To UBound(arm, 2)) As Variant
  32.  
  33. arm(0, 0) = "banana"
  34. arm(1, 0) = "banana"
  35. arm(2, 0) = "banana"
  36. arm(3, 0) = "apple"
  37. arm(4, 0) = "apple"
  38. arm(5, 0) = "banana"
  39. arm(6, 0) = "cucumber"
  40. arm(7, 0) = "cucumber"
  41. arm(8, 0) = "cucumber"
  42. arm(9, 0) = "apple"
  43. arm(10, 0) = "cucumber"
  44. arm(11, 0) = "a"
  45.  
  46. arm(0, 1) = 5
  47. arm(1, 1) = 4
  48. arm(2, 1) = 3
  49. arm(3, 1) = 2
  50. arm(4, 1) = 5
  51. arm(5, 1) = 3
  52. arm(6, 1) = 2
  53. arm(7, 1) = 4
  54. arm(8, 1) = 5
  55. arm(9, 1) = 1
  56. arm(10, 1) = 1
  57. arm(11, 1) = 3
  58.  
  59. tempar() = unqfiladv(arm)
  60.  
  61. End Sub
  62.  
  63. Function unqfiladv(ByVal aArIn As Variant) As Variant
  64. Dim aArOut() As Variant
  65. Dim vexFlag As Boolean
  66. Dim vIn As Variant
  67. Dim i%, j%, k%
  68. ReDim aArOut(LBound(aArIn, 1) To UBound(aArIn, 1), LBound(aArIn, 2) To UBound(aArIn, 2))
  69. i = LBound(aArIn, 1)
  70. j = i
  71. For Each vIn In aArIn
  72. For k = j To i - 1
  73. If vIn = aArOut(k, 0) Then vexFlag = True: Exit For
  74. Next k
  75. If Not vexFlag Then
  76. aArOut(i, 0) = vIn
  77. 'aArOut(i, 1) = ?
  78. i = i + 1
  79. vexFlag = False
  80. End If
  81. Next
  82. If i <> UBound(aArIn, 1) Then ReDim Preserve aArOut(LBound(aArIn, 1) To i - 1)
  83. unqfiladv = aArOut
  84. End Function
Add Comment
Please, Sign In to add comment