![](/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.