當前位置:首頁 » 網路管理 » 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表格區域。