Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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,我想清除工作表中从所选列中第一个使用的行到最后一个使用的行的所有单元格,但首先我必须知道所选列中第一个使用的行。如何在“X”列中找到第一行?(X may={A,B,C,…})试试看 firstUsedRow = Worksheets("Sheet1").Cells(1, 1).End(xlDown).Row 其中,单元格(1,1)中的第二个参数是列号(例如,A=1、B=2等)Sheet1是相关工作表的工作表名称 在您的情况下,第一行可能是第1行,但可能性不大。在这种情况下,上面的代码实际上会选

我想清除工作表中从所选列中第一个使用的行到最后一个使用的行的所有单元格,但首先我必须知道所选列中第一个使用的行。如何在“X”列中找到第一行?(X may={A,B,C,…})

试试看

firstUsedRow = Worksheets("Sheet1").Cells(1, 1).End(xlDown).Row
其中,
单元格(1,1)
中的第二个参数是列号(例如,A=1、B=2等)
Sheet1
是相关工作表的工作表名称

在您的情况下,第一行可能是第1行,但可能性不大。在这种情况下,上面的代码实际上会选择所用范围的最后一行。作为这种情况下的安全措施,请确定最后一行,并确保第一行为1或由上述代码生成的行。所以

finalRow = Worksheets("Sheet1").Cells(Worksheets("Sheet1").UsedRange.Rows.Count, 1).End(xlUp).Row
if finalRow = firstUsedRow then
    firstUsedRow = 1
End If
全部

firstUsedRow = Worksheets("Sheet1").Cells(1, 1).End(xlDown).Row
finalRow = Worksheets("Sheet1").Cells(Worksheets("Sheet1").UsedRange.Rows.Count, 1).End(xlUp).Row
if finalRow = firstUsedRow then
    firstUsedRow = 1
End If
试一试

其中,
单元格(1,1)
中的第二个参数是列号(例如,A=1、B=2等)
Sheet1
是相关工作表的工作表名称

第一行可能是第1行,尽管在您的情况下不太可能。在这种情况下,上面的代码实际上会选择所用范围的最后一行。作为这种情况下的安全措施,请确定最后一行,并确保第一行为1或由上述代码生成的行。所以

finalRow = Worksheets("Sheet1").Cells(Worksheets("Sheet1").UsedRange.Rows.Count, 1).End(xlUp).Row
if finalRow = firstUsedRow then
    firstUsedRow = 1
End If
全部

firstUsedRow = Worksheets("Sheet1").Cells(1, 1).End(xlDown).Row
finalRow = Worksheets("Sheet1").Cells(Worksheets("Sheet1").UsedRange.Rows.Count, 1).End(xlUp).Row
if finalRow = firstUsedRow then
    firstUsedRow = 1
End If

请看下面的代码。它将跳过由第二个单元格表示的列A中的所有空白行为1。然后为变量firstRow和lastRow指定行位置。最后清除该范围内的值

Sub ClearCells()
    Dim i As Integer
    Dim firstRow As Integer
    Dim lastRow As Integer

    i = 1
    Do While Cells(i, 1) = ""
        i = i + 1
    Loop
    firstRow = i
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    Range(Cells(firstRow, 1), Cells(lastRow, 1)).ClearContents
End Sub

请看下面的代码。它将跳过由第二个单元格表示的列A中的所有空白行为1。然后为变量firstRow和lastRow指定行位置。最后清除该范围内的值

Sub ClearCells()
    Dim i As Integer
    Dim firstRow As Integer
    Dim lastRow As Integer

    i = 1
    Do While Cells(i, 1) = ""
        i = i + 1
    Loop
    firstRow = i
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    Range(Cells(firstRow, 1), Cells(lastRow, 1)).ClearContents
End Sub

见下文,无循环

Sub ClearCells()
    Dim firstRow As Integer
    Dim lastRow As Integer

    firstRow = Cells(1, 1).End(xlDown).Row
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    Range(Cells(firstRow, 1), Cells(lastRow, 1)).ClearContents
End Sub

见下文,无循环

Sub ClearCells()
    Dim firstRow As Integer
    Dim lastRow As Integer

    firstRow = Cells(1, 1).End(xlDown).Row
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    Range(Cells(firstRow, 1), Cells(lastRow, 1)).ClearContents
End Sub

完美答案+1。@Pisti-这可能会让您获得列的第一行数据,也可能不会。如果A1是第一个有数据的单元格,并且数据连续运行,比如说A10,那么使用此方法,您将得到
A10
作为第一个使用数据的行,这显然是错误的。我建议
如果Len(.Cells(1,1),那么firstUsedRow=1,否则firstUsedRow=…(以上答案的其余部分)如果
@ScottHoltzman这是一个很好的观点,值得对我的答案进行编辑。@MattCremeens-我会以不同的方式处理它。如果
A1
A2
有数据,
A3
没有数据,而
A4
有数据,编辑后的答案仍然会下降。如果没有数据,
A3
没有数据,则返回
A2
,作为第一行。参见m我在上面的评论中对什么(我认为)是最好的方法提出了我的建议。)@ScottHoltzman,尽管看起来OP的数据是相当可预测的,并且由从大于1的某一行开始并持续到最后一行的数据组成。完美答案+1。@Pisti-这可能会使您获得列的第一行数据,也可能不会。如果A1是第一个有数据的单元格,并且数据连续运行,比如说A10,那么使用此方法,您将得到
A10
作为第一个使用数据的行,这显然是错误的。我建议
如果Len(.Cells(1,1),那么firstUsedRow=1,否则firstUsedRow=…(以上答案的其余部分)如果
@ScottHoltzman这是一个很好的观点,值得对我的答案进行编辑。@MattCremeens-我会以不同的方式处理它。如果
A1
A2
有数据,
A3
没有数据,而
A4
有数据,编辑后的答案仍然会下降。如果没有数据,
A3
没有数据,则返回
A2
,作为第一行。参见m我在上面的评论中对什么(我认为)是最好的方法提出了我的建议。)@ScottHoltzman很公平,尽管OP的数据似乎是相当可预测的,包括从大于1的某一行开始并持续到最后一行的数据。这是一个很好的解决方案,但我想避免循环,因为我有12000行,如果每次循环并搜索第一行的话,我就被割断了喉咙。但是答案是肯定的,这也是一件好事这是一个很好的解决方案,但我想避免循环,因为我有12000行,如果每次循环并搜索第一个使用的行,我就会被割断喉咙。但是答案是肯定的,这也是一件好事