![](/img/trans.png)
[英]Count number of rows in column A that have a value in a list in column B on worksheet 2
[英]Count number of rows in worksheet
我想从Sheet2代码模块中计算Sheet1中的行数。
在sheet1代码模块中,以下代码工作正常
ctr = Range("B2", Range("B2").End(xlDown)).Count
我在Sheet2代码模块中尝试了相同的代码
recct = ThisWorkbook.Sheets("Sheet1").Range("B2", Range("B2").End(xlDown)).Count
我得到run time error 1004 Application -Defined or Defined error
谢谢
该错误发生在recct
中的第二个范围参考中。 因为您引用了不同的工作表,所以需要告诉VBA两个范围引用中的工作表名称。
试试这个:
With ThisWorkbook.Sheets("Sheet1")
recct = .Range("B2", .Range("B2").End(xlDown)).Rows.Count
End With
或者,这也会起作用(虽然有点邋))。
recct = ThisWorkbook.Sheets("Sheet1").Range("B2", ThisWorkbook.Sheets("Sheet1").Range("B2").End(xlDown)).Rows.Count
更新
由于关于工作表上行数的实际含义有很多讨论,使用上面的代码从字面上开始B2并直接计算下面连续单元的数量
但是,如果你想在B列中找到最后一个“真正的”用过的单元格(通过实际,我的意思是其中包含数据),请执行以下操作:
With ThisWorkbook.Sheets("Sheet1")
recct = .Range("B2", .Range("B" & .Rows.Count).End(xlUp)).Rows.Count
End With
您可以使用此示例:
rowsInThere = Sheets("Sheet1").UsedRange.Rows.Count
这没有范围。 您还可以使用ActiveSheet
作为工作表来检查,以防您需要更改当前工作表并检查其行数。
两件事情
码
Sub GetB()
Dim ws As Worksheet
Set ws = Sheets(1)
Dim lngCnt As Long
lngCnt = ws.Range(ws.[b2], ws.Cells(Rows.Count, "b").End(xlUp)).Count
End Sub
更强大
要干净地处理所有情况,那么Find
更容易
Sub GetB()
Dim ws As Worksheet
Dim rng1 As Range
Set ws = Sheets(1)
Set rng1 = ws.Range("B:B").Find("*", ws.[b1], xlValues, , , xlPrevious)
If Not rng1 Is Nothing Then
Select Case rng1.Row
Case 1
MsgBox "Only B1 has data", vbCritical
Case 2
MsgBox "No used cells past B2"
Case Else
MsgBox rng1.Row - 1 & " cells between B2 and B" & rng1.Row
End Select
Else
MsgBox ws.Name & " column B Is blank", vbCritical
End If
End Sub
不知道这是否会有所帮助,但我一直在我的模块中使用它:
Dim TR as long, TC as long
TR = [Sheet1!A1].CurrentRegion.Rows.count
TC = [Sheet1!A1].CurrentRegion.Columns.count
如果我知道如果我正在处理的数据集没有空行或列,就像从另一个程序或其他东西中提取的那样,那么它很快就会很好用! 从这里我可以指定范围选择或执行vlookup。
TR = [Sheet1!A1].CurrentRegion.Rows.count
[I2] = "=vlookup($C2,'sheet1'!A$2:B$" & TR & ",2,FALSE)"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.