Office中国论坛/Access中国论坛

标题: 如何在多工作表中(撤销工作薄保护\删除满足要求的行\插入行\计算平均值等) [打印本页]

作者: kaiser1103    时间: 2009-7-23 09:49
标题: 如何在多工作表中(撤销工作薄保护\删除满足要求的行\插入行\计算平均值等)
如何在多张打开的工作表中完成指定操作:
1.撤销工作薄保护,(图一,右上角的那个 撤销工作表保护按钮)
2.删除满足要求的行(删除丢包率(G列) 大于 15%的行,删除平均延迟大于500(F列)的行)
3.插入行(在南方网通和北方网通的中间插入一行,)
4.将表格内的百分比转换为数字(将丢包率那一行的百分比转换为数字)
5.计算平均值(计算南北网通平均延迟和丢包率的平均值,结果写在在前面插入的那一行(南方网通的平均值),和最后一行(北方网通的平均值))
6.保存!


图一就是拿到手的文件
图二是我手动处理后达到要求的文件

这样的文件有近1000个
求教高手,能不能写段VBA,把这些过程完成掉!
要是有高手喜欢研究的,可以加我QQ,我发几个这样的表格给你研究,QQ:119203813
先谢谢大家了!
加急求救贴!
作者: kaiser1103    时间: 2009-7-23 09:50
写反了,图二就是拿到手的文件
图一是我手动处理后达到要求的文件
作者: kaiser1103    时间: 2009-7-23 10:40
会的高人来啊~~~~~
作者: kaiser1103    时间: 2009-7-23 10:41
自己顶了先~~~~~~
在线等.等到你来~~~
作者: kaiser1103    时间: 2009-7-23 10:41
自己顶了先~~~~~~
在线等.等到你来~~~
作者: kaiser1103    时间: 2009-7-23 10:41
自己顶了先~~~~~~
在线等.等到你来~~~
作者: pureshadow    时间: 2009-7-23 15:35
如果N个表的格式完全一致,可以选取所有工作表进行操作,但如果格式有差别,只能用代码来解决了。
作者: 方漠    时间: 2009-7-23 17:04
pls upload your sample file.
作者: kaiser1103    时间: 2009-7-27 09:07
处理后的文件,是把处理前的文件进行操作后得到的:工作表解锁----删除延迟是100%的行----在南北网通\电信中间插入一行,计算南北网通\电信的延迟和丢包的平均值.

周末搬家,没有时间上来看看,让2大版主久等了,真是不好意思哈~~~~呵呵~~~~
作者: 方漠    时间: 2009-7-29 18:17
Here is the code for u, but if u need batch process, pls code  by yourself.

Sub Macro1()

' Macro recorded 2009-7-29 by FangMo
'
Dim Lrow As Long, Irow As Long
Dim Rng

    Irow = Range("B65536").End(xlUp).Row

    ActiveSheet.Unprotect
     
    Rows("3:3").Select
    Range("D3").Activate
    Selection.AutoFilter
    Selection.AutoFilter Field:=7, Criteria1:="100%"
    Range("B6").Activate
    Rows("4:" & Irow).Select
    Selection.Delete Shift:=xlUp
    Selection.AutoFilter
   
    Range("G4:G" & Irow).NumberFormatLocal = "0.00%"
   
    Columns("G:G").Select
    For Each Rng In Selection.Areas
         Rng.Value = Rng.Value
    Next
   
  Range("A4").Select
  
  Lrow = Range("A65536").End(xlUp).Row
  


  Rows(Lrow & ":" & Lrow).Insert Shift:=xlDown
  
  
  Range("F" & Lrow).Select
  ActiveCell.FormulaR1C1 = "=AVERAGE(R[" & 4 - Lrow & "]C:R[-1]C)"
  Range("G" & Lrow).Select
  ActiveCell.FormulaR1C1 = "=AVERAGE(R[" & 4 - Lrow & "]C:R[-1]C)"

    Range("A" & Lrow & ":G" & Lrow).Select
    With Selection.Interior
        .ColorIndex = 45
        .Pattern = xlSolid
    End With


  Irow = Range("B65536").End(xlUp).Row + 1
  Range("F" & Irow).Select
  ActiveCell.FormulaR1C1 = "=AVERAGE(R[" & Lrow - Irow + 1 & "]C:R[-1]C)"
  Range("G" & Irow).Select
  ActiveCell.FormulaR1C1 = "=AVERAGE(R[" & Lrow - Irow + 1 & "]C:R[-1]C)"

    Range("A" & Irow & ":G" & Irow).Select
    With Selection.Interior
         .ColorIndex = 45
         .Pattern = xlSolid
    End With

End Sub
作者: kaiser1103    时间: 2009-7-30 09:37
一下是我按照我的需求修改后的
因为我对vba不熟悉,code也是看到别人写的实现的功能,然后搬过来,有的是自己录制宏,再把code搬过来.
我想在这里再修改一下,把内容为 100%  的单元格所在的行删除掉,改成:如果单元格的内容  大于 20% ,就删除这一行.
------------------------------------------------------------------
Sub Macro1()

' Macro recorded 2009-7-29 by FangMo

' 快捷键: Ctrl+r
'
'处理电信表

ActiveSheet.Unprotect
Sheets("电信").Select
ActiveSheet.Unprotect

Dim Lrow As Long, Irow As Long
Dim Rng

    Irow = Range("B65536").End(xlUp).Row

    ActiveSheet.Unprotect
     
    Rows("3:3").Select
    Range("D3").Activate
    Selection.AutoFilter
    Selection.AutoFilter Field:=7, Criteria1:="100%"
    Range("B6").Activate
    Rows("4:" & Irow).Select
    Selection.Delete Shift:=xlUp
    Selection.AutoFilter
   
    Range("G4:G" & Irow).NumberFormatLocal = "0.00%"
   
    Columns("G:G").Select
    For Each Rng In Selection.Areas
         Rng.Value = Rng.Value
    Next
   
  Range("A4").Select
  
  Lrow = Range("A65536").End(xlUp).Row
  


  Rows(Lrow & ":" & Lrow).Insert Shift:=xlDown
  
  
  Range("F" & Lrow).Select
  ActiveCell.FormulaR1C1 = "=AVERAGE(R[" & 4 - Lrow & "]C:R[-1]C)"
  Range("G" & Lrow).Select
  ActiveCell.FormulaR1C1 = "=AVERAGE(R[" & 4 - Lrow & "]C:R[-1]C)"

    Range("A" & Lrow & ":G" & Lrow).Select
    With Selection.Interior
        .ColorIndex = 45
        .Pattern = xlSolid
    End With


  Irow = Range("B65536").End(xlUp).Row + 1
  Range("F" & Irow).Select
  ActiveCell.FormulaR1C1 = "=AVERAGE(R[" & Lrow - Irow + 1 & "]C:R[-1]C)"
  Range("G" & Irow).Select
  ActiveCell.FormulaR1C1 = "=AVERAGE(R[" & Lrow - Irow + 1 & "]C:R[-1]C)"

    Range("A" & Irow & ":G" & Irow).Select
    With Selection.Interior
         .ColorIndex = 45
         .Pattern = xlSolid
    End With
   
'处理网通表

ActiveSheet.Unprotect
Sheets("网通").Select
ActiveSheet.Unprotect

    Irow = Range("B65536").End(xlUp).Row

    ActiveSheet.Unprotect
     
    Rows("3:3").Select
    Range("D3").Activate
    Selection.AutoFilter
    Selection.AutoFilter Field:=7, Criteria1:="100%"
    Range("B6").Activate
    Rows("4:" & Irow).Select
    Selection.Delete Shift:=xlUp
    Selection.AutoFilter
   
    Range("G4:G" & Irow).NumberFormatLocal = "0.00%"
   
    Columns("G:G").Select
    For Each Rng In Selection.Areas
         Rng.Value = Rng.Value
    Next
   
  Range("A4").Select
  
  Lrow = Range("A65536").End(xlUp).Row
  


  Rows(Lrow & ":" & Lrow).Insert Shift:=xlDown
  
  
  Range("F" & Lrow).Select
  ActiveCell.FormulaR1C1 = "=AVERAGE(R[" & 4 - Lrow & "]C:R[-1]C)"
  Range("G" & Lrow).Select
  ActiveCell.FormulaR1C1 = "=AVERAGE(R[" & 4 - Lrow & "]C:R[-1]C)"

    Range("A" & Lrow & ":G" & Lrow).Select
    With Selection.Interior
        .ColorIndex = 45
        .Pattern = xlSolid
    End With


  Irow = Range("B65536").End(xlUp).Row + 1
  Range("F" & Irow).Select
  ActiveCell.FormulaR1C1 = "=AVERAGE(R[" & Lrow - Irow + 1 & "]C:R[-1]C)"
  Range("G" & Irow).Select
  ActiveCell.FormulaR1C1 = "=AVERAGE(R[" & Lrow - Irow + 1 & "]C:R[-1]C)"

    Range("A" & Irow & ":G" & Irow).Select
    With Selection.Interior
         .ColorIndex = 45
         .Pattern = xlSolid
    End With

End Sub
--------------------------End Code-----------------------


Range("G4:G" & Irow).NumberFormatLocal = "0.00%"

这一句能不能改成:
Range("G4:G" & Irow).NumberFormatLocal > R[20%]C
作者: kaiser1103    时间: 2009-7-30 10:06
写错了
应该是这里要改

Selection.AutoFilter Field:=7, Criteria1:="100%"

我想改成,>20% 的就删除行
作者: ZFL68622888    时间: 2009-8-23 14:52
看看,学习下




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3