2016-09-09 1 views
0

배열로 더 잘 수행 될 수도 있지만 그렇게하는 방법을 모른다고 생각했습니다. 내가 찾고 있어요 결과가 나오지 지금 뭐하는 거지 방법 :배열에서 값이 같지 않으면 열 삭제

Sub DeleteColumns_Cash() 
Set dltRange = Range("A1:ZZ1") 
For Each cell In dltRange 
    If cell.Value <> "AMOUNT" Or cell.Value <> "TRANTYPE" Or cell.Value <> "CCY" Or cell.Value <> "SECID" Or cell.Value <> "SECDESC" Or cell.Value <> "FUND" Then 
    cell.EntireColumn.Delete 
    End If 
Next 
End Sub 
+0

두 가지. 그것이 무엇인지를 찾을 때 if 문에'Or'가 아닌'And'를 사용하십시오. 둘째, 표준 For 루프와 루프를 거쳐 사용해야합니다. –

답변

0
Sub DeleteColumns_Cash() 
    Dim arr 
    arr = Array("AMOUNT", "TRANTYPE", "CCY", "SECID", "SECDESC", "FUND") 
    Set dltRange = Range("A1:ZZ1") 
    For Each cell In dltRange 
     If IsError(Application.Match(cell.Value, arr, 0)) Then 
      cell.EntireColumn.Delete 
     End If 
    Next 
End Sub 
0
거꾸로 Select Case statement 및 루프에 조건문을 변경

.

Option Explicit 

Sub DeleteColumns_Cash() 
    Dim i As Long 

    With ActiveSheet 
     With .Range("A1:ZZ1") 
      For i = .Columns.Count To 1 Step -1 
       Select Case LCase(.Cells(1, i).Value2) 
        Case "amount", "trantype", "ccy", "secid", "secdesc", "fund" 
         'do nothing 
        Case Else 
         .Cells(1, i).EntireColumn.Delete 
       End Select 
      Next i 
     End With 
    End With 

End Sub 

With ActivesheetXXXXXXX 처리 할 수있는 워크 시트의 실제 이름입니다 With Worksheets("xxxxxxx")에도 추천 변경.

관련 문제