我有一个包含2个工作表的excel文件。
I1
的实际单元格(例如12位),以及I2
中的旁边的值(右侧)。我认为/假设我可以通过一个循环检查哪些细胞长12位但我有点迷路。
经过一番搜索,我想出了这个:
Sub check()
Dim rng As Range, cell As Range
Set rng = Range("A1:P35")
For Each cell In rng
If Len(cell) = 12 Then
cell.Copy Destination:=Sheet2(s).Rows(K)
Row = K + 1
End If
Next cell
End Sub
这个想法有用吗?我还没想出如何将找到的单元格实际复制到另一个工作表中。
答案 0 :(得分:3)
对于单个列,我使用自动过滤器(Sid推荐)或评估公式,对于2D范围,我更喜欢变体。类似的东西:
Sub UseVariants()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim X
Dim Y
Dim lngRow As Long
Dim lngCol As Long
Dim lngCnt As Long
Set ws1 = Sheets(1)
Set ws2 = Sheets(2)
X = ws2.Range(ws2.[a1], ws2.[q35]).Value2
ReDim Y(1 To UBound(X, 1) * UBound(X, 2), 1 To 2)
For lngRow = 1 To UBound(X, 1)
'skip column Q
For lngCol = 1 To UBound(X, 2) - 1
If Len(X(lngRow, lngCol)) = 12 Then
lngCnt = lngCnt + 1
Y(lngCnt, 1) = X(lngRow, lngCol)
Y(lngCnt, 2) = X(lngRow, lngCol + 1)
End If
Next
Next
ws1.[i2].Resize(UBound(Y, 1), 2).Value2 = Y
End Sub
答案 1 :(得分:0)
试试这个:
foo.fa