1樓:網友
因為你這樣是刪除了單元格,所以下面的會自動向上移動,導致原來第2個變成了第1個,程式卻只能往下讀,也就是讀到了原來的第3個。
為了讓程式每次重新開始,要進行初始化。把程式改下:
dim a as integer
for a = 1 to 21
if range("a" &a) =a" thena = 0end if
next缺點是如果資料量很大,會增加運算時間,可是小弟我就會這點東西,想不出好的改善方法了。不好意思。
2樓:網友
你可以更改一下的迴圈結構。
如 for i=21 to 1 step -1if cells(i,1)="a" thenrows(i).delete
end if
next從最後一行向上迴圈。
vba 刪除活動單元格的值為零的行
3樓:網友
注意是你的迴圈錯了,弄成倒序的就ok了。
解釋下:你現在的迴圈是順序的,比如你刪除了第二行,那麼原來的第三行就是現在的第二行了,原來的第四行就是現在的第三行了,所以你這樣執行下去肯定會有些行其實沒有取到,而使得你刪除不乾淨。如果倒序就不會影響到其他的行的。
4樓:網友
不能全部刪除的原因是,比如你第3-5行的j列都是0,當執行了j3時刪除了第3行,接著原來的j4變成了j3,但程式緊接著會執行到j4,這樣的第3行的空就被忽略了。你可以多執行幾次你的**,或者採用樓上的朋友說的倒序方法寫程式即可。
5樓:
你可以按f8逐步觀察**的執行,定位錯誤原因。
6樓:網友
可能 那幾行的格式不是數值格式。你可以逐行檢查一下。
vba刪除重複行並知道刪除了多少行
7樓:網友
1。為什麼x就代表了刪除行的行數?
這裡是因為for i = range("a66564").end(xlup).row to 1 step -1 這個迴圈 而且x 的增寬冊加1 是放在。
rows(i).delete
這裡的 就代表了 我查詢a66564 這個範圍內的所有行,並將重複的行刪除了然後刪除一行 x就加 1
2。為什麼要寫個x+1?
這是因為rows(i).delete 是一行一行的刪除,所以要用+1
3。為什麼寫成x+2,就變了刪除行的2倍,x+3就是三倍,明明是+號,不是乘號啊?
這是問 x預設是0 當你+2 變成了 x = 0+2 --x=2---x=x+2 --x=2+2 --4 是不是成了2的倍數了 因為你的x一直局巧襪都是2 2 的相加,同理3也是。
完畢桐激,希望你明白。
8樓:班碧白
x 是在if 語句中蠢桐肢,符合條件就加1. 最後的x,就是重複的行。
二個結構 首先是遍歷所有的行從最後一行開始帶世。
這個遍歷套了乙個if, 判斷是否有重複。
有重複則刪除一行,並計數為+1, 初始值為0.
要弄清楚結構,放**都是原因的。可以f8逐輪友步執行看看, 就明白了。
9樓:匿名使用者
這是乙個迴圈,x就是計友灶數器。每個迴圈中,x+1就是x累加一次轎滲。如果每次列加2次或者3次,當然就好帆扮會變成2倍或者3倍了。
vba中刪除行
10樓:俎厹絢
注意:1,第一行如果是有2點的,執行程式後,請手動刪除,如果不是,直接執行程式即可;
2,程式中有兩句可根據實際情況改動;(1)for x = 1 to 50 中的50表示行數,根據你的實際行數,換上即可;(2)rows("2:50").select中的50同(1)。
3,程式只能執行一次,如執行兩次有可能會誤操作(如新加入有2點的行則除外),所以執行前請備份**。
sub macro1()
dim x as integer
columns("f:f").select
shift:=xltoright
for x = 1 to 50
cells(x, 6).select
=len(rc[-1])-len(substitute(rc[-1],""."",""""))"
next x
range("f1").select
field:=2, criteria1:="2"
rows("2:50").select
shift:=xlup
columns("f:f").select
shift:=xltoleft
end sub
篩選並刪除含特定字元的行的值,與某行相同的值 求vba
11樓:網友
sub 刪除指定內容行()
dim fincell as range
on error resume next
sr=[a10].value
dowith "2:65536")
set findcell = ."迎新", lookat:=xlpart)
set findcell = ."ab", lookat:=xlpart)
set findcell = ."製表", lookat:=xlpart)
set findcell = .,lookat:=xlpart)if <>10 then
end with
loop until findcell is nothingend sub
怎麼寫VBA窗體中textbox3的值等於textbox1 te乘以textbox2的值的語句
private sub form load text1 0 text2 0 end sub private sub text1 change if isnumeric text1 thentext3 text1 text2else msgbox 請輸入數字 text1 0 end if end su...
如何刪除中的空白行,如何刪除WORD中的空白行
1 將網上下bai載下來的資料直接粘du貼到記事zhi本,再從記事dao本複製 貼上 到 word 文件。這個過專程能屬夠自動刪除一些空白行,而且還能將文件中的換行符全部轉化為回車符 段落標記 2 刪除多餘的行。在編輯選單上按替換按鈕 或同時按鍵盤上的 ctrl 和 h 鍵 開啟查詢和替換對話方塊。...
Excel VBA如何刪除陣列中重複的值
使用集合collection的key唯一性除去重複的值sub a dim a 1 to 100 dim b as new collectiondim 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...