Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 根据是否有数据对行进行编号的宏代码_Vba_Excel - Fatal编程技术网

Vba 根据是否有数据对行进行编号的宏代码

Vba 根据是否有数据对行进行编号的宏代码,vba,excel,Vba,Excel,我是VBA新手,但我不知道如何使这项工作。我正在从另一个Excel工作表复制大量数据,然后删除不需要的行。问题是我需要在A列中对数据进行编号,当我删除该行时,它会跳过编号。我想要一个宏,在我删除不需要的行后,它将为我的数据编号。当我的数据停止时,我确实需要它停止,但每次的行数将不同。有什么建议吗?谢谢。你可以试试这样的 删除行后,运行以下代码,将从第2行开始在A列中添加序列号 Sub SqNumber() Dim lr As Long lr = Cells.Find("*", SearchOrd

我是VBA新手,但我不知道如何使这项工作。我正在从另一个Excel工作表复制大量数据,然后删除不需要的行。问题是我需要在A列中对数据进行编号,当我删除该行时,它会跳过编号。我想要一个宏,在我删除不需要的行后,它将为我的数据编号。当我的数据停止时,我确实需要它停止,但每次的行数将不同。有什么建议吗?谢谢。

你可以试试这样的

删除行后,运行以下代码,将从第2行开始在A列中添加序列号

Sub SqNumber()
Dim lr As Long
lr = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
With Range("A2:A" & lr)
    .Formula = "=Row()-1"
    .Value = .Value
End With
End Sub

使用union方法。收集范围并在最后一行删除它们

Sub test()
    Dim rngU As Range
    Dim i As Integer

    For i = 1 To 100
        If Range("a" & i) = "" Then
            If rngU Is Nothing Then
                Set rngU = Range("a" & i)
            Else
                Set rngU = Union(rngU, Range("a" & i))
            End If
        End If
    Next i
    If rngU Is Nothing Then
    Else
        rngU.EntireRow.Delete 'rngu is collected ranges.
    End If
End Sub

为什么复制然后删除?为什么不直接复制你想要的呢?在任何情况下,如果您显示相关代码,那么我们就更容易建议如何改进它。只要在a列中添加一个公式,以便在相邻单元格中有数据时显示行号。不需要VBA。甚至在第一个单元格中键入“1”并自动填充