2016-09-09 10 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

2つのもの。それが何でないかを探すときは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とループにあなたの条件文を変更し

。 XXXXXXXが処理するワークシートの実際の名前ですWith Worksheets("xxxxxxx")With Activesheetを変更

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 

も推奨されます。

関連する問題