当前位置:首页 » 网络管理 » vba如何删除数组中重复的元素
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

vba如何删除数组中重复的元素

发布时间: 2022-06-17 14:22:41

❶ vb如何去掉重复的数组元素

你的意思是不是有一个数组,里面的元素可能有重复的。
比如数组a。里面有5个值,其中有3个是重复的?
如果这样的话,很好办哦。
新建一个数组b,然后遍历要去除的数组a,
从a中把每一个都取出来,和新建的b里面的去比,如果有相同的,则不放入b,
否则就放入数组b,直到循环结束。

❷ VBA去掉重复数据

dim b(9) as double
for i =0 to 9
b(i)=a(i)
for j=o to i-1
if b(j)=a(i) then
n=n+1
b(j)=-1
end if
next
next
代码运行结束后就知道有几个值为-1的项了,重新为数组赋值即可。
dim c
redim c(9-n) as double
以下代码你自己写吧。

❸ 关于如何去除数组中重复项

数组去重,就是在数组中查找相同的元素,保留其中一个,去除其他元素的程。

从这句话揭示了数组去重的两个关键因素:

找到重复项

去除重复项

本文告诉你在遇到去重问题时该如何思考,并以 JavaScript 为例,进行详细解释。使用 JavaScript 示例主要是因为它环境比较好找,而且直接对象 (Plain Object) 用起来很方便。

JavaScript 的环境:Node.js 或者浏览器的开发者控制台。

找到重复项
找到重复项最关键的算法是判定元素是否相同。判定相同,说起来似乎很简单 —— 用比较运算符就好了嘛!真的这么简单吗?

用 JavaScript 来举个例:

const a = { v: 10 };
const b = { v: 10 };
肉眼观察,这里的a和b相同吧?但是 JavaScript 不这么认为:

console.log(a == b); // false
console.log(a === b); // false
肉眼观察和程序比较使用了不同的判断方法。肉眼观察很直接的采用了字符串比对的方法,而程序压根没管是不是数据相同,只是直接判断它们是不是同一个对象的引用。我们一般会更倾向于使用符合人眼直观判断的方法,所以可能会想到使用JSON.stringify()把对象变成字符串来判断:

console.log(JSON.stringify(a) === JSON.stringify(b)); // true
现在如果我们把a和b略作改变,又该如何?

const a = { v: 10, n: "1" };
const b = { n: "1", v: 10 };
乍一看,a和b不同。用JSON.stringify()的结果来比对,也确实不同。但是仔细一看,他们的属性是完全相同的,唯一的区别在于属性的顺序不一样。那么到底顺序应不应该作为一个判断相同的依据呢?

这个问题现在真没法回答。“该如何”取决于我们的目标,也就是业务需求。

从上面的例子我们可以了解:判断相同并不是一个简单的事情,根据不同的业务要求,需要选择不同的判断方法;而不同的判断方法,可能产生不同的判断结果。

接下来先讲讲常见的判断方法。

最直接的:比较运算符
比较运算符主要用于比较基本类型的值,比如字符串、数、布尔等。

普通比较运算符 (==) 在比较不同类型的值时,会先把它们转换为相同类型再来比较;而严格比较运算符 (===) 则更为严格,会直接将类型不同值判定为不同。这些都是基本的 JavaScript 语法知识。现代开发中为了能更好的利用工具,除极少数特殊情况外,都应该使用===来进行判断。尤其是在 TypeScript 中,几乎都不会出现==了。

JavaScript 中,比较运算符不会比较对象属性,只会比较对象的引用是否相同。如果要比较对象具体信息,需要用到接下来讲到的方法。

❹ Vba数组去重复请教

字典最合适,代码如下:
Sub AA()
arr = Range("B2:B10")
Set d = CreateObject("scripting.dictionary")
For i = 1 To UBound(arr)
d(arr(i, 1)) = ""
Next
[C2].Resize(d.Count) = Application.Transpose(d.keys)
Set d = Nothing
End Sub

❺ VB中如何删除数组变量中重复的元素

Private Function NewArray(ByRef b() As Integer)
Dim Temp() As Integer
Dim H As Integer, I As Integer, J As Integer, K As Integer
Dim IsNew As Boolean

H = UBound(b())
ReDim Temp(0) '如果你原数组元素数量是万个级别的,就直接ReDim Temp(H),下面 ReDim Preserve Temp(K) 去掉
Temp(0) = b(0)

For I = 0 To H
IsNew = True
For J = 0 To K
If Temp(J) = b(I) Then
IsNew = False
Exit For
End If
Next J
If IsNew Then
K = K + 1
ReDim Preserve Temp(K)
Temp(K) = b(I)
End If
Next I

ReDim b(K)
For I = 0 To K
b(I) = Temp(I)
Next I
Erase Temp()
End Function

'调用

'dim b() as integer
'dim I as integer
'dim OutputStr as String
'redim b(Ubound(a()))
'for I=0 TO Ubound(a())
' b(I)=a(I)
'next I
'NewArray(b())
'返回的b()为除重后的数组,可以根据你的需要显示、输出数组a()、b()。

❻ vba 怎么除去数组中的重复数据

Sub zidian()
Dim d, r, ar, i
Set d = CreateObject("scripting.dictionary")
r = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
ar = Range("a2:a" & r)
For i = 1 To UBound(ar)
d(ar(i, 1)) = ""
Next
[c2].Resize(d.Count, 1) = Application.Transpose(d.keys)
Set d = Nothing
End Sub


❼ Excel VBA如何删除数组中重复的值

使用集合Collection的key唯一性除去重复的值
Sub A()
Dim A(1 To 100)
Dim b As New Collection
Dim i As Integer

A(1) = 1
A(2) = 3
A(3) = 5
A(4) = 7
A(5) = 3
A(6) = 5
A(7) = 2
On Error Resume Next
For i = 1 To 100
b.Add A(i), Str(A(i))
Next i
For i = 1 To b.Count
A(i) = b(i)
Next i
End Sub

❽ VBA删除重复值

你直接说你要做什么吧,一般没人用Collection,EXcelhome论坛上几乎没有人用Collection。
你写这么烂的程序,浪费我半小时调试时间,真不值。
我们去重就两种方法,要么用excel数据菜单里自带的‘删除重复值’,录制个宏自己改;要么用字典,值写进去就OK,再把d.keys给回数组或excel表格区域。