VBA讓Excel資料去重,數量相加

2021-10-09 11:37:00 字數 2613 閱讀 1045

之前做過用用vba來篩選資料,去重的相關工作,但是後面給忘記了,最近需要用到,又重新寫了乙個。鑑於此,還是做乙個歸納,以後再需要的時候也方便一些。

vba主要用在excel中,別的就不說了,只說excel中的情況

乙個是篩重。篩重簡單的說就是將**中的很多重複的資料進行歸納,特別是我們在選型的時候會經常用到。

在我們在設計的時候,會先把按鈕啊、開關之類的先乙個個的寫出來,然後對應每個按鈕選定乙個按鈕的型號,對應每個電機選定電機的型號,這樣的話,在修改和檢視起來就非常簡單。但是在最後下採購單的時候就需要把型號一樣的進行彙總,對同乙個型號的列乙個專案,後面做乙個數量上的累加就行了。比如說,啟動按鈕用的是a型號,停止按鈕用的也是a型號,下採購單的時候,就需要在前面列乙個(名稱:按鈕,型號:a,數量:2)就行了,不用單獨拆出來。

簡要說下具體使用:

第一步,先把需要統計的資料找出來。比如,下面乙個例子:
private

sub commandbutton2_click(

)dim i as

integer

for i =5to

500if sheets("採購清單_test").cells(i, "i") <> "" then

if sheets("採購清單_test").cells(i, "k") = "乙供" then

cells(i,

"d")

= sheets("採購清單_test").cells(i, "i")

cells(i,

"c")

= sheets("採購清單_test").cells(i, "g")

endif

endif

next

endsub

在上面的例子中,就是把《採購清單_test》這個**中k裡面寫的是「乙供」的找出來。當然,我這個**中的k列寫的是這個零件是甲方供貨還是乙方供貨。在這個專案裡面我們是乙方,我們就需要下標註為乙方的採購單。在新的**裡面,d列是將舊**的第i列的資料複製過來,c列是把舊**的g列的資料複製過來。在我的舊**裡面i列是型號,g列是數量。

經過這個程式,我們就把需要採購的東西都篩選到我的新**中了,當然我這個是從第五行開始篩選,一直篩到第五百行,而實際上我的資料不到三百行。

因為從舊**複製過來的資料沒有進行任何處理。所以,在舊**中是屬於甲方供貨的那些行就是空白行,這樣就需要把空白行給剔除掉,讓新的**中的資料從上到下排列。具體的方法如下。

第二步,將複製過來的資料,從上往下乙個挨著乙個排列在一起。
private

sub commandbutton3_click(

)dim i, j, k, l, m, n as

integer

k =5 n =

5for i =5to

500if cells(i,

"d")

<>

""then

cells(k,

"f")

= cells(i,

"d")

cells(k,

"e")

= cells(i,

"c")

k = k +

1end

ifnext

endsub

經過這個過程,每兩行的資料之間就沒有空行了。

第三步,就是對已經篩選出來的資料進行整合了。同樣的型號歸到同一類中。看下面的例子:
private

sub commandbutton1_click(

)dim i, j, k, l, m, n as

integer

k =5

n =5

for i =5to

500 cells(i,

"g")=""

cells(i,

"h")=""

next

for i =5to

500if cells(i,

"f")

<>

""then

m =2for j =5to

500if cells(j,

"g")

= cells(i,

"f")

then

cells(j,

"h")

= cells(j,

"h")

+ cells(i,

"e")

m =1end

ifnext

endif

if m =

2then

cells(n,

"g")

= cells(i,

"f")

cells(n,

"h")

= cells(i,

"e")

n = n +

1 m =

1end

ifnext

endsub

當然,這個例子裡面,就是把相同型號的放到同一行,在數量上面是相同型號的資料的總和。

oracle資料庫查詢去重資料

oracle資料庫查詢重複的資料 1.在日常的使用中,專案中常常會遇到有某乙個字段存在多條重複的資料,但是在查詢的時候我們只需要查詢出一條即可,在查詢oralce的時候可以用 row number over partition by 去重欄位1,去重欄位2 order by 去重欄位1,去重欄位2 ...

初識VBA 用VBA簡單處理excel資料

所有的程式語言都是一樣滴,好喜歡解決問題的工作!雖然現在做的很簡單。開啟excel中使用vba的方法,工具欄 開發工具 vb,這就是個直接可以用的程式設計環境好嘛!然後第一次使用vb語言,用習慣了物件導向語言之後,再用這種過程 括號的語言竟然不習慣了 上學時候學的c語言都還給老師了嘛!悲愴臉 一頓查...

一千萬條資料去重 資料庫資料去重方法

資料庫資料去重方法 在大量資料庫資料處理的時候,發現很多重複項,這些重複項給工作帶來很多不便,那麼,怎麼才能更快的去重呢,有沒有好的資料庫資料去重方法呢,下面給大家推薦幾種資料庫資料去重方法,簡單的了解下吧。假設現在資料庫中有乙個人員表 user 表中包括 主鍵id,姓名 身份證號碼 等字段。由於程...