如何在Excel中选择具有特定文本的行之前和之后的行?

如何在Excel中选择具有特定文本的行之前和之后的行?,excel,Excel,我的原始数据看起来像这样 std1 std1 deviant std2 std1 std2 std2 deviant “偏差”是随机出现的,因此不会每N行出现一次 我希望在每个“异常”行之前和之后各选择一行,以便将其复制到另一个电子表格中。请参见下面的代码 我们循环遍历列中的每一行(我假设您的数据在A列中),当找到给定的值时,我们将以下行和前面的行添加到选择数组中。循环完成后,我们选择数组中的行 Public Sub DeviantSelect() Dim myRange As Ra

我的原始数据看起来像这样

std1
std1
deviant
std2
std1
std2
std2
deviant
“偏差”是随机出现的,因此不会每N行出现一次

我希望在每个“异常”行之前和之后各选择一行,以便将其复制到另一个电子表格中。

请参见下面的代码

我们循环遍历列中的每一行(我假设您的数据在A列中),当找到给定的值时,我们将以下行和前面的行添加到选择数组中。循环完成后,我们选择数组中的行

Public Sub DeviantSelect()

    Dim myRange As Range
    Set myRange = Nothing
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row

    For i = 1 To lastRow
        If Cells(i, 1) = "deviant" Then
            If myRange Is Nothing Then
                Set myRange = Union(Range(i - 1 & ":" & i - 1), Range(i + 1 & ":" & i + 1))
            Else
                Set myRange = Union(myRange, Range(i - 1 & ":" & i - 1), Range(i + 1 & ":" & i + 1))
            End If
            myRange.Select
        End If
    Next

End Sub

下面的代码将“偏差”前后的单元格复制到另一页

    Sub check()
Sheet1.Activate
Range("A1").Select

 LastRow = Sheets("Sheet1").UsedRange.Rows(Sheets("Sheet1").UsedRange.Rows.Count).Row

For i = 1 To LastRow
Sheet1.Activate

If Range("A" & i).Value = "deviant" Then
Range("A" & i - 1).Select
Selection.Copy
Sheet2.Activate
 LastRow2 = Sheets("Sheet2").UsedRange.Rows(Sheets("Sheet2").UsedRange.Rows.Count).Row
 If LastRow2 = 1 Then
 Range("A" & LastRow2).Activate
 Else
 Range("A" & LastRow2 + 1).Activate
 End If
ActiveSheet.Paste

Sheet1.Activate
Range("A" & i + 1).Select
Selection.Copy
Sheet2.Activate
 LastRow2 = Sheets("Sheet2").UsedRange.Rows(Sheets("Sheet2").UsedRange.Rows.Count).Row
 Range("A" & LastRow2 + 1).Activate
ActiveSheet.Paste

End If

Next

End Sub

你必须更清楚地知道你在问什么。你想做什么,你做了什么,你得到了什么结果。你应该显示你的代码。对不起,布鲁斯,我以前从未用过这个!我想比较“异常”试验前后的试验性能,到目前为止,我一直在尝试使用sumproduct和isnumber formukas,但迄今为止运气不佳……我想可能会将异常行设置为空白,然后尝试提出一个公式,在每个空白行前后选择一行?谢谢,我几乎要求助于手动选择单元格了!!