excel VBA 选择含特定文本的单元格的整行

2025-02-23 22:51:10
推荐回答(3个)
回答1:

用以下代码可实现:
Sub main()
Sheets("782 Forward Report").Activate
For i = 1 To Range("C65536").End(3).Row
If Cells(i, 3) = "Deutsche Bank" Then
For j = 1 To 256
Sheets("testing").Cells(i, j) = Cells(i, j)
Next
End If
Next
Sheets("testing").Columns("A:B").Delete
Sheets("testing").Columns("I:XX").Delete
End Sub

关于题目中出现的不能获取最大行的问题,是用Range("C65536").End(3).Row来解决的
关于End的相关知识如下:
For irow = 1 To [A65536].End(3).Row
If Abs(Cells(irow, 1).End(2) - Cells(irow, 256).End(1)) / Cells(irow, 1).End(2) > 0.1 Then Cells(irow, 1).End(2)(1, 2) = Cells(irow, 256).End(1)
Next

括号中的1、2、3、4分别代表向左、向右、向上、向下。END(x)表示从指定的单元格向左、向右、向上、向下最后一个有效RANGE

以Cells(irow, 1).End(2)为当前单元格,向右移一位。
假如Cells(irow, 1).End(2)为B2,Cells(irow, 1).End(2)(1, 2) 为C2

end(xlup)是向上,end(xldown)是向下,end(xltoleft)是向左,end(xltoright)是向右

关于[A65536].End(xlUp).row 中的[A65536]

在1995-2006年,excel工作簿包含65536行,但现在的office 2007中工作簿包含1048576行。[A65536]就是A列的最后一行的意思,这段话的意思就是,从A列最后一行向上找,找到有数据的行为止。

是从A列最下面往上遇到的有数据的列号
如果{A27}是你数据的最后列
I=[A65536].End(xlUp).row
则I就是27

[a65536].End(3)的意思是查找A列最后一个非空单元格,比如找到非空单元格为A2
[a65536].End(3)(2, 1)
(2,1)是数据行最末行的下一空单元格;(1,2)是数据行最末一个单元格的右侧单元格

回答2:

直接 rows(i).select 就好了啊 这个就是选择正行的数据 你要是想选部分数据 用range

回答3:

代码改为如下:

Sub t1()
Sheets("782 Forward Report").Activate
For i = 1 To Range("c65536").End(xlUp).Row
If Cells(i, 3) = "Deutsche Bank" Then
For j = 1 To 256
Sheets("testing").Cells(i, j) = Cells(i, j)
Next
End If
Next

Sheets("testing").Columns("A:B").Delete
Sheets("testing").Columns("I:XX").Delete

End Sub