2013-04-10 36 views
0

有人能帮助我。我想要统计有多少个数大于45,并将结果放在最后一个数据单元下面的3行。让我们给它一个名字 - 称它为结果。然后结果左侧我想放话号码> 45.数据行的数量会发生变化,所以当我运行列d宏会找到它的最后一个数据点和做计算。一些行将是空的。感谢您的帮助宏来算,给结果

它想,这

 50   
    20 

     100 
    120 
    45 
    30 
    30 

返回> 45 = 4

Sub enter() 
    Dim result As Integer 
    Dim firstrow As Integer 
    Dim lastwow As Integer 
    Firstrow = d2 
    Result = ‘ Value of count 
    Worksheets("sheet1").Range("c?").Value = "Total>45" 
    Range("d100000").End(xlUp).Select 
End Sub 
+0

> 45应该在你的情况下,3和4不是:) –

+0

是否有任何的答案回答你的问题?如果是这样,请通过将其标记为答案来帮助其他用户,请参阅[关于]。 – glh

回答

2

试试这个

Sub Sample() 
    Dim result As Long, firstrow As Long, lastrow As Long 
    Dim ws As Worksheet 
    Dim rng As Range 

    '~~> Set this to the relevant worksheet 
    Set ws = ThisWorkbook.Sheets("Sheet1") 

    With ws 
     '~~> Find Lastrow in Col D 
     lastrow = .Range("D" & .Rows.Count).End(xlUp).Row 
     '~~> Set First row 
     firstrow = 1 

     '~~> Set your range 
     Set rng = .Range("D" & firstrow & ":D" & lastrow) 

     '~~> Put relevant values 
     .Range("C" & lastrow + 3).Value = "Total>45" 
     .Range("D" & lastrow + 3).Value = _ 
     Application.WorksheetFunction.CountIf(rng, ">45") 

    End With 
End Sub 

截图

enter image description here

+0

有你为什么设置背后的原因'FIRSTROW = 1'时,你可以只是做'设置RNG = .Range( “D1:d” &LASTROW)'?或者作为OP似乎想'设置RNG = .Range(“D2:d”&LASTROW)' – user2140261

+0

是有原因:)那就是灵活地改变行号。我可以按照你的建议做,但是由于习惯,我总是在开始时声明我的变量,这样我就不必在任何地方改变代码,而只是在一个位置。 –

+0

这个伟大的工程谢谢你,大家谁协助 – user2254486

0

你不能使用工作表公式像

=COUNTIF(A2:A7,">45")

或者,在VBA正如刚才亚洲时报Siddharth溃败建议在他的回答

+0

即使我想工作表公式,但随后这是OP不得不说'数据行的数量将change';) –

+0

谢谢大家你的努力这有助于 – user2254486

+0

好,请将其中的任何一个答案标记为已接受 –

0

需要VBA?

如果不是,则函数=COUNTIF(C:C,">45")会给你你想要的答案。

1

这里是一个可以让你在任何数量的传递,而不仅仅是45

Sub MakeCount(lGreaterThan As Long) 

    Dim lLast As Long 

    With Sheet1 
     lLast = .Cells(.Rows.Count, 4).End(xlUp).Row 
     .Cells(lLast + 3, 4).FormulaR1C1 = "=COUNTIF(R[-" & lLast + 1 & "]C:R[-3]C,"">""&RC[-1])" 
     .Cells(lLast + 3, 3).Value = lGreaterThan 
     .Cells(lLast + 3, 3).NumberFormat = """Number>""#" 
    End With 

End Sub