一種使用VBA陣列去重的思路

2021-10-02 19:31:27 字數 1888 閱讀 5199

下面這個表是要去重的部分資料,這次我需要做的是

把資料中的日期提取出來去重

日後計算需要用到

為了能夠達到去重的目的,首先要先把日期提取出來,如果只是為了提取日期,那麼可以使用format很方便,今天嘗試用string寫,只是一種嘗試,以便以後處理其他資料,**如下

sub 時間去重()

'把所有的日期資料放到arr

()陣列中,arr陣列的大小等於行數

dim r as integer, rc as integer, str as string,

arr(

) as string

rc =

range

("a1"

).currentregion.rows.count

redim arr

(0 to rc -1)

for r =

2 to rc step 1

str =

cells

(r,"a"

).value

'cells

(r,"g"

).value =

left

(str,10)

arr(r -2)

=left

(str,10)

next r

range

("g2:g"

& rc)

transpose

(arr)

'===

*****=

*****=

*****=

*****=

*****=

*****=

*****=

*****=

*****=

*****=

*****=

*****=

='把arr()

中的資料匯入到key

()中並去重

dim i as integer, j as integer, k as integer, l as integer, m as integer,

key(

1000

) as string

k =0

m =0

for i =

0 to rc -

1 step 1

l =0 for j =

0 to k step 1

if arr

(i)=

key(j) then

l = l +

1 end if

next j

if l =

0 then

key(k)=

arr(i)

k = k +

1 end if

next i

msgbox key(10

)end sub

邏輯是建立了兩個陣列,arr()和key(),arr()陣列是存放所有處理完的資料的陣列,key()是存放去重資料的陣列

一開始key陣列是空的,外迴圈的次數是arr()陣列中元素的數量,內迴圈是key()陣列的元素數量,把arr陣列中的元素依次放到key陣列中與所有元素進行比較,如果比較中發現arr陣列的元素在key陣列中有,那麼就不往key陣列中新增,如果發現arr陣列的這個元素在所有的key陣列中都找不到,那麼就新增到key陣列中,從而最後輸出的key陣列就是去重之後的陣列。

最後msgbox輸出乙個驗證就好了,對於現在的我還不那麼熟練的是類似這種key陣列數量變化中該如何控制迴圈次數,所以花了很多時間。

新手,還得繼續努力啊~

javascript 陣列去重的6種思路

前端在日常開發中或多或少都會碰到有對資料去重的需求,實際上,像是lodash這些工具庫已經有成熟完備的實現,並且可以成熟地運用於生產環境。但是這並不妨礙我們從思維拓展的角度出發,看看去重可以用幾種思路去實現。首先是常規的雙層迴圈比對的思路實現 function doubleloopuniq arr ...

一種方便理解的mysql 去重方法

遇到個問題,240萬的郵箱資料,重複了70萬,這就是怎麼過濾的問題了。大致搜尋了一下,有一種比較土的方法。mysql沒有select into table select from table2 create table new table select from prev table 或者inser...

List集合去重的一種方法

前一段時間們需要對乙個list集合去重,情況是該集合中會出現多個name屬性值相同的,但是其他屬性值不同的資料。在這種情況下,需求要只保留其中乙個就好。我覺得遍歷和hashset都不是我想要的,便採用了一下方式 定義compare類,繼承iequalitycomparer介面 public clas...