查找特定长度的单元格并复制到当前工作表

时间:2015-09-06 11:43:38

标签: vba excel-vba excel

我有一个包含2个工作表的excel文件。

  • 在工作表1中,我希望最终得到工作表2中12位数字的所有单元格列表以及右侧单元格。
  • 我想在我的工作表1中使用(简称)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

这个想法有用吗?我还没想出如何将找到的单元格实际复制到另一个工作表中。

2 个答案:

答案 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