使用VBA代码操作excel文件

时间:2015-08-28 09:46:48

标签: excel vba excel-vba

我非常需要使用vba代码来操作excel文件。

要求: 过滤掉哪些用户 1.不活跃(meeans" No") 2.do有一个群集名称(意味着只有空白行保持不变,其余所有必须删除) 3.选择州 BLR,MIA,NCE,MAD空白 4.在城市中选择 班加罗尔,豪恩斯洛,马德里,迈阿密,空白 5.在电子邮件地址中搜索 for @ ora.gmail.com 并用ora删除行。结果 6.将剩余用户保存在单独的表中 - 在相应的列中添加适当的群集名称关联

NCE       nce.iis
BLR           sin.iis
MAD           muc.iis
MIA               atl.iis

7.结果必须显示在同一工作簿中的另一个工作表中。如果多次执行,结果必须自动刷新,而不是在工作表中显示空行。

原始数据:

            A            B          C           D               E               F
          Name         City        State       email        activeconnect     clustername
    1.   Alois         Bangalore    BLR         al@gmail.com      Yes        
    2.   Olaf          Honslow      LON        ol@gmail.com       Yes        muc.iis  
    3.   sree          Akp          VSKP       al@ora.gmail.com   No        
    4.   Feher         Hungary                 f@gmail.com        Yes         EBUD
    5.   Hajniss                                                  No          EBUD
    6.   Maria         Italy         ITA        m@gmail.com       Yes       EItaly
    7.   Hari          Hungary                  H@gmail.com       Yes        EBUD
    8.  Ponna          Madrid        MAD        p@ora.gmail.com   Yes      muc.iis
    9. puv             Miami          MIA       PUV@gmail.com     yes  
    10. kiran          Paris         FRA       Ki@ora.gmail.com   yes 

任何人都可以提供一些复杂的代码,因为我用IF语句编写的代码。

这是我的代码

    Sub test()
    Dim filterrange As Range

Set ws1 = ThisWorkbook.Sheets("sheet1")
Set ws2 = ThisWorkbook.Worksheets.Add(after:=ActiveSheet)
ws2.Name = "abc"

ws1.Activate
Set filterrange = ws1.Cells(2, ws1.Cells(1, Columns.Count).End(xlToLeft).Column)  ' get columns e.g. name, state, etc.

filterrange.AutoFilter Field:=11, Criteria1:=Array("GBR" _
        , "MAD", "NCE", "="), Operator:=xlFilterValues
filterrange.AutoFilter Field:=21, Criteria1:="Yes" ' activeconnect
filterrange.AutoFilter Field:=24, Criteria1:="=" ' clustername
filterrange.AutoFilter Field:=6, Criteria1:= _
        "<>*@sca.com*", Operator:=xlAnd ' e-mail
filterrange.AutoFilter Field:=10, Criteria1:=Array( _
         "Madrid", "Sophia-antipolis"), Operator:=xlFilterValues

For Each cell In filterrange.CurrentRegion.SpecialCells(xlCellTypeVisible).Rows

If Cells(cell.Row, 24) = "" Then
   Select Case Cells(cell.Row, 11).Value
      Case "NCE"
        Cells(cell.Row, 24) = "nceiptccm.net"
      Case "MAD"
        Cells(cell.Row, 24) = "muciptccm.net"
     End Select
End If
Next cell

filterrange.SpecialCells(xlCellTypeVisible).Copy
ws2.Activate
ws2.Range("a1").PasteSpecial (xlPasteValues)

End Sub

所需的输出应为:

      A            B          C           D               E               F
      Name         City        State       email        activeconnect     clustername
1.   Alois         Bangalore     BLR         al@gmail.com      Yes       sin.iis 
2.    puv         Miami          MIA       PUV@gmail.com     yes        alt.iis

2 个答案:

答案 0 :(得分:0)

这是另一种方法。我没有时间在这里测试它,所以你可能需要调整一下。但我想你明白了。

session.saveOrUpdate(film);

答案 1 :(得分:0)

试试这段代码。

Apache CXF

如果您需要更多信息,请查看以下内容:http://guides.rubyonrails.org/association_basics.htmlhttp://www.excel-easy.com/vba/examples/macro-recorder.html