Vba 我所选列中第一个使用的行
我想清除工作表中从所选列中第一个使用的行到最后一个使用的行的所有单元格,但首先我必须知道所选列中第一个使用的行。如何在“X”列中找到第一行?(X may={A,B,C,…})试试看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行,但可能性不大。在这种情况下,上面的代码实际上会选
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行,如果每次循环并搜索第一个使用的行,我就会被割断喉咙。但是答案是肯定的,这也是一件好事