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