[英]Grouping Value using VBA
我在一個表上得到了以下數據,我想制作一個宏,它將所有值組合在一起, #N/A
就在底部。 請協助。
A B C D E
1 Line Item Quantity Part Number Description
2 Line 1 Fan Motor 0 0 0
3 Line 2 Fan #N/A #N/A #N/A
4 Line 3 Fan guard 0 0 0
5 Line 4 Pump 0 0 0
6 Line 5 Access door 0 0 0
7 Line 6 Nozzle grommet 0 0 0
8 Line 7 Nozzle 0 0 0
9 Line 20 SST tube 0 0 0
10 Line 21 Flanges 2 205024M2P HDGFLG
11 Line 22 Part 11 #N/A #N/A #N/A
12 Line 23 Part 12 #N/A #N/A #N/A
16 Line 29 Terminal box 1 31123800P TERMINAL BOX
14 Line 25 Check Valve #N/A #N/A #N/A
15 Line 26 Buttefly Valve #N/A #N/A #N/A
17 Line 30 Solenoid valve 1 31601700P SOLENOID VALVE 1 PER8
18 Line 31 Coil 1 31602000P COIL FOR SOL. VALVE
我最初使用下面的代碼刪除值為#N/A
Sub GroupRows()
Dim rownum As Long
For rownum = 1 To 1000
If Cells(rownum, 3).Text = "#N/A" Then
Rows(rownum).Delete
Next rownum
Cells(rownum, 3).Activate
End Sub
但是
“編譯錯誤:下一個沒有For”
彈出錯誤信息,事情是我還是VBA的新手,還有一些我還不太了解的事情,所以我不知道我的編碼是否正確。
如果您使用上次使用的行而不是固定的最大行數,那么這就是您的代碼的樣子。
Sub GroupRows()
Dim iRow As Long, lastRow As Long
Dim ws As Worksheet
Set ws = Worksheets("MySheetName") 'qualify your sheet
lastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row 'find last used row
For iRow = lastRow To 1 Step -1 'run from last used row backwards to row 1
If ws.Cells(iRow, 3).Text = "#N/A" Or _
ws.Cells(iRow, 4).Text = "#N/A" Then
ws.Rows(iRow).Delete
End If
Next iRow
ws.Cells(iRow, 3).Activate
End Sub
您的代碼缺少End if
您應該始終使用ws.Cells
或ws.Range
等工作表來限定Cells
或Range
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.