- 帖子
- 1008
- 主题
- 761
- 精华
- 0
- 积分
- 1794
- 贡献
- 941
- 激情
- 7771
- 阅读权限
- 100
- 最后登录
- 2020-4-28
|
Excel中实现隔行删除 0 Z" d2 i5 B9 |* k
- i; Y! o" C8 @: L$ [/ T选一个空列做辅助列 ' ]9 j- L" u9 z0 T' g7 q* ?& Q: A
假设是F列
) x/ q" a' i5 h, e. V 在F1里填上 : u1 E' Q3 {4 s+ x
=MOD(ROW(F1), 2) / t3 o; y* c$ s/ q
然后复制到本列其它单元格中
) A) I: q* m g( e: O7 T 打开自动筛选
* S: V2 r9 c8 w3 W: u- v8 l l; n 选中0或1 / E" D7 l; N! V) a4 |, ^
然后全选 删除 6 i! s9 }3 O: z6 w6 M& i( M
就搞定了
5 Y; A0 F( u( k5 m5 k$ F% j- Z6 Z3 p0 `" z
选的时候要选中整行 5 q! V! g$ B, a c! ]' q8 M/ ^4 z; p
我试过的
9 t D( }4 ?) ?% R6 D8 l: r 完全可以 s6 y) k5 E5 G1 I2 J) X) ^, o
, J9 K+ K9 i7 {2 {& z9 W 这个方法只能说是半自动的,对付几百行还能将就
' G7 o1 K% |. ]" I$ R 如果真的有上万行,还是做个宏好一些
: N3 |6 C7 J7 V" Q+ T 而且也很简单
6 u( V1 u$ P* h Q, [ Sub RowsDelete(Odd As Long) 0 L1 v5 g6 {9 L, \' [
Dim nRows As Long # @: U8 E* q$ ^* K. [: w
Dim i As Long - I: l- e3 j2 X# r2 J
With Worksheets("sheet1")
# a2 L; B; e7 {3 c; ?) l nRows = .UsedRange.Rows.Count
2 b" J' P* n( G# @ For i = nRows To 2 Step -1
1 a! k# _8 f F7 y+ Z$ M If i Mod 2 = Odd Then , k8 K1 A" t- H& l- t+ f
.Rows(i).Delete
' m9 i' E- g3 x' T End If
) `1 a8 L4 j/ q1 M6 i Next
/ A# {, \, \/ Q/ n" ~ End With . x- C# i3 x5 M7 Z* E
End Sub
9 x+ z% K6 X) ^ Odd为0时删除偶数行 为1时删除奇数行
& S! y( K L; _1 o5 _$ y
/ X0 B V6 e! F这种东西为什么要用VBA或者宏? + ~# ?3 D. \0 f" q
+ I: s6 I; L; ^( C+ L 只需要加一个辅助列即可:
9 t: `& ~7 J6 x3 c& W: ^, t * |% |$ A; m. z9 l; C
在某列输入公式: =MOD(ROW(),2)
P3 ?0 m; q4 S+ w* [5 S; z 然后把公式复制到相应的数据区域即可.
* Y0 w+ G d+ t% c+ N , s7 z& R- H) d j' \
如果您希望删除奇数列,那么使用筛选,选取辅助列值为1,然后选中这些行,删除即可. . X, ]: V8 ~1 S3 g1 q ~- B
如果您希望删除偶数列,那么选取辅助列值为0,然后选中筛选出来的行,删除即可. . a! H: Q/ `$ t( _9 [0 B2 k- U
: R. R" O8 P/ F; s 然后选中辅助列,进行排序,这样中间就不会出现空行了。最后删除辅助列
; L. Z* f2 ]7 \: k' g, v
: \8 W% O4 C/ i1 J9 N4 w 远比使用VBA来的快捷.另外:行数即使真的几万行一样可行.# u; }+ N- r D1 Q3 j2 M
如果是几万行 复制一次公式也挺烦的
3 p8 N0 n' k2 t) [ {5 w 不如VBA来得方便
% t8 R: l" \1 V& A7 F
W* ?5 p3 K% D6 y 楼主可以打开你的Excel文件 % ~# G) t3 J; U4 T, Z4 O
按 Alt+F11 打开VBA编辑器 $ b) Q" c; n6 Q( J( h
在左边找到该文件的ThisWork 双击它 / Q, p2 b! O9 T: h" P
然后把俺的代码复制到右边的代码区
+ m" }, k) }9 | 6 `& W! e. A" i2 O7 Y5 {
这段代码是处理名为sheet1的表单的 " O7 n0 ~6 B) U& ^2 Z7 B1 V8 m( X
你要根据你的情况改一下 8 G, m h# D1 x" P$ N7 I, E# ]
把光标点到这段代码里 ( M& i) K% e5 o6 v* o
然后按F5 * x$ x* o4 l8 e( K0 _6 z; D* p
6 j! l3 I: f3 x# F. {$ G 哗~~~~~~~~~~~~
. `. i4 i$ `# ]2 u0 j+ K% Q 整个世界清静了 + r6 K8 `& X) c
5 e$ D& K$ L, {3 A& b+ f2 J2 g
选定你要***作的工作表
8 B! v* J1 Z% `; J4 S) V- n"工具"->"宏"->"VB编辑器" 3 B i/ G( C7 w1 `, d% r8 W3 l
"插入"->"模块" * c/ N8 O7 \. K6 P7 ~2 w( J
复制下面的代码行,删除前面的引号,并修改其中注释的fristline和linecount后面的数字,然后按下"F5"运行即可 7 v& X5 J7 x% q
7 x4 ~/ _0 \- x& z2 Y
Sub Macro1() ' W6 H7 I; w: T( h" U* V
) _# `. h7 B$ b. _# G/ m/ C fristline = 1 '填需删除的第一行的行号 9 O( c$ X' `8 v7 r& F h8 n
linecount = 100 '填需删除的最后一行的行号
/ `% O, I, a7 ` fristdelete = Int((fristline + 1) / 2) * 2 8 ]$ A: a. r- x; L v9 D; I# I
str1 = fristdelete / ^4 G; P! m1 K9 G9 _5 i$ z
For i = 1 To (linecount - fristdelete) / 2
9 [3 I# q. [( L3 {% l8 ^ str1 = str1 & "," & fristdelete + i * 2
( I! x9 l3 t" P, C8 W4 X# T Next
2 l5 X9 V# c9 l2 `1 ?) m Range(str1).Delete 7 f, G* n6 b) C1 D
End Sub |
|