如何在excel中使用vba完成這個操作

時間 2022-04-22 09:50:04

1樓:匿名使用者

sub 整理() '第1行是表頭,資料從a2開始

zh = range("a100000").end(xlup).row '資料最後行號

arr = range("a2:d" & zh) '單元格區域賦值給陣列

h = 1 '初始化陣列行號

for i = 2 to zh - 1 '陣列迴圈

if arr(i, 1) = arr(h, 1) and arr(i, 2) = arr(h, 2) then '**日期都相同則執行

if arr(h, 3) * arr(i, 3) < 0 then '符號不相同則執行

arr(h, 4) = abs(arr(h, 4) - arr(i, 4)) '變動比例相減取絕對值

else '符號相同執行

arr(h, 4) = arr(h, 4) + arr(i, 4) '變動比例相加

end if

arr(h, 3) = arr(h, 3) + arr(i, 3) '變動數量相加

else '否則執行

h = h + 1 '陣列行號+1

arr(h, 1) = arr(i, 1) '資料向上移動

arr(h, 2) = arr(i, 2) '資料向上移動

arr(h, 3) = arr(i, 3) '資料向上移動

arr(h, 4) = arr(i, 4) '資料向上移動

end if

next i

range("a2:d" & zh).clear '清除原來的資料

range("a2:d" & h + 1) = arr '新資料賦值給單元格區域

end sub

2樓:落葉l無情

sub a() '假設「**」所在位置為a1

for i = 2 to 7000

if cells(i, "a") = "" then exit for

if cells(i, "a") = cells(i + 1, "a") and cells(i, "b") = cells(i + 1, "b") then

m = cells(i, "c") * cells(i + 1, "c") / abs(cells(i, "c") * cells(i + 1, "c"))

cells(i, "d") = abs(cells(i, "d") + m * cells(i + 1, "d"))

cells(i, "c") = cells(i, "c") + cells(i + 1, "c")

range((i + 1) & ":" & (i + 1)).delete

'i=i-1  '若要合併連續相同的多行,請將這句行首的註釋符號去掉

end if

next

end sub

3樓:匿名使用者

幾千行的話,建議使用字典和陣列進行操作。只是變動比例也可以這樣直接累加嗎?

如何在excel中使用高階篩選,如何將excel中資料內容進行高階篩選

點選資料 篩選 自動篩選,在第三列的開機率右下角地黑色三角形點選自定義,在第一個框中選擇大於或等於,第二個框中輸入98.6,確定就行了 你可以在c列 即開機率 列的最後輸入 開機率,然後在該單元格的下方單元格輸入 98.6,點選資料 篩選 高階篩選,在資料區域中輸入篩選的範圍,在條件區域中選擇你剛才...

如何在火狐中使用Onenote,如何在Windows系統中使用OneNote

開啟chrome 位址列的右邊 的那一個 控制當前頁的圖示 選擇列印或者直接按組合鍵 ctrl p 彈出列印選擇框 選擇印表機 中的 傳送至onenote就ok了 ie中和firefox中都可以這樣。這個需要根據不同版本的firefox可以新增不同的onenote,我的新增方法如下 1 將firef...

excel 如何在excel中使空白行自動承接上行內容

本例向大家介紹如何在excel通過基礎操作方法批量快速填充空白單元格為上一行的內容。在excel中插入空白行,如何使空白行自動複製前一行的公式? 我今天重新看bai了一下提問,du發現提問者zhi的意圖不是我原先理解的那麼dao簡單,提 專問者是想,要求別人在插入屬空白行的時候,會自動在空白行內產生...