2017-05-24 1 views
1

테이블에 다음 데이터가 있습니다. 모든 값을 #N/A으로 그룹화하는 매크로를 만들고 싶습니다. 도와주세요.VBA를 사용한 그룹화 값

 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 

하지만

"Compile error: Next without For"

오류 메시지가 것은 내가 VBA 여전히 새로운 오전 거기에있다, 팝업 아직까지는 아직 이해가되지 않는 부분이 있으므로 코딩의 정확성 여부를 알지 못합니다.

+2

스택 오버플로에 오신 것을 환영합니다. 우선이 코드는 무료 코드 작성 서비스가 아니므로 이미 수행 한 작업 (코드)을 표시해야합니다 (읽기 [ask]). 둘째로 "* 모든 값을 '# N/A'로 묶어 두는 것"은 정말 명확한 진술이 아닙니다. 결국 "* # N/A"로 줄을 맨 아래로 옮기는 것을 의미합니까 * "? –

+0

서브 GroupRows() ROWNUM 들어 어둡게 ROWNUM만큼 = 1 1000 경우 세포 (ROWNUM, 3) .Value = "#의 N/A"그럼 행 (ROWNUM) .Delete 다음 ROWNUM 세포 (ROWNUM, 3) .Activate End Sub 처음에는 "# N/A"값을 가진 모든 행을 삭제하려고 했으므로 위의 코드를 사용했지만 항상 오류가 발생하므로 먼저 맨 아래에 매크로를 기록하여 삭제하십시오. – Kwezi

+0

나는 분명히 말하고 싶다. – Kwezi

답변

0

고정 된 최대 행 번호 대신 마지막으로 사용한 행을 사용하는 경우 코드가 어떻게 표시되는지입니다.

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을 규정해야한다.