簡體   English   中英

使用VBA對值進行分組

[英]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.Cellsws.Range等工作表來限定CellsRange

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM