首页 > 解决方案 > 如何在 Microsoft Excel VBA 中进行计算?

问题描述

我今年 15 岁,正在实习作为一名开发人员,我有一项艰巨的练习。

我有一个包含 3 列的表,A 是“数字”,B 是“百分比”,C 是“值”。“值”列是空白的,我需要用宏按钮计算值。我试过这个,但这是错误的,因为我没有在 VBA 中计算它:

Public Sub PushButton ()
    Range("C2:C11").Formula = "=A2*B2/100"
    Range("C2:C11").Value = Range("C1:C6).Value
End Sub

我该如何解决这个问题?

标签: excelvba

解决方案


您正在使用定义的范围,您可以使用这样的动态范围:

Option Explicit
Sub PushButton()

    Dim i As Long, LastRow As Long

    With ThisWorkbook.ActiveSheet
        LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row 'first you need to find the last row on the active sheet

        For i = 2 To LastRow 'then iterate through all the rows starting from 2, if row 1 has headers
            .Cells(i, 3) = .Cells(i, 1) * .Cells(i, 2) / 100
        Next i
    End With


End Sub

如果您需要帮助理解此代码,请告诉我。

编辑:解释

好吧,您必须做的第一件事是维度所有变量,并帮助您Option Explicit在所有代码之上使用正确的。

我已经为循环设置了 1 个变量,另一个用于查找最后一行的文本。

要找到最后一行,您实际上正在做的事情将成为 excel,选择最后一行 (1048576) 和它将包含文本的列,在本例中为 1 或列“A”,然后按 ctrl+Up excel 和 vba 将带您到最后一个带有文本的单元格。

为此,您可以使用Cells(Row, column)而不是手动插入行 1048576,您可以使用rows.count它,它会是相同的。

一旦你得到最后一行,你只需用一个循环进行迭代,这意味着对于一个称为等于 2 ( )For i的变量(到你计算的最后一行),VBA 将在每次循环重新启动时在And添加 1 个数字之间重复代码。iFor i = 2To LastRowForNexti

在这种情况下,只需在行中添加一个数字,Cells(i, 3)以便您可以根据其i值修改该单元格。


推荐阅读