如何编写VBA脚本来计算电子表格中2列之间的比例并将其放在第3列?

时间:2015-05-20 18:54:18

标签: excel vba excel-vba

我正在尝试计算2列中值之间的比率,并将其放入电子表格的第3列。

我无法弄清楚如何在宏的循​​环中编写它以及在那里使用什么函数。

我在A列和B列中有值。我试图提取C列中2列的比例,它应该包含A / B.

这就是我所做的。

Sub Engagement_Ratio()

    Range("Z1").Select
    ActiveCell.FormulaR1C1 = "Engaged User Rate"
    Range("Z2").Select
    ActiveCell.FormulaR1C1 = "=(RC[-12]/RC[-15])"
    Range("Z2").Select
    Selection.AutoFill Destination:=Range("Z2:Z154")
    Range("Z2:Z154").Select
    ActiveWindow.SmallScroll Down:=-27

End Sub

如何使细胞范围变得动态?这样它只对具有值的单元格范围起作用。我如何把它计算在上面呢。

2 个答案:

答案 0 :(得分:0)

这就是我所做的。

Sub Engagement_Ratio()

    Range("Z1").Select
    ActiveCell.FormulaR1C1 = "Engaged User Rate"
    Range("Z2").Select
    ActiveCell.FormulaR1C1 = "=(RC[-12]/RC[-15])"
    Range("Z2").Select
    Selection.AutoFill Destination:=Range("Z2:Z154")
    Range("Z2:Z154").Select
    ActiveWindow.SmallScroll Down:=-27

End Sub

如何使细胞范围变得动态?这样它只对具有值的单元格范围起作用。我如何把它计算在上面呢。

答案 1 :(得分:0)

假设列A填充到数据的底部:

Sub Test2()

Dim LastRow As Integer
LastRow = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, After:=[A1]).Row
Range("Z1").Value = "Engaged User Rate"
For i = 2 To LastRow
    If Cells(i, 14).Value > 0 Then Cells(i, 26).Value = Cells(i, 14).Value / Cells(i, 11).Value
Next i
ActiveSheet.sort.SortFields.Clear
ActiveSheet.sort.SortFields.Add Key:=Range("Z2:Z" + CStr(LastRow)) _
    , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal 'sort by sort code
With ActiveSheet.sort
    .SetRange Range("A1:Z" + CStr(LastRow))
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
 End With
End Sub