Vba 如何将表1中的值添加到表2单元格中的值,并在之后在表2中显示结果?

Vba 如何将表1中的值添加到表2单元格中的值,并在之后在表2中显示结果?,vba,excel,addition,Vba,Excel,Addition,当我试图在Excel中编写一个宏时,我看到了一个问题,该宏用于添加两个表中的数值,并在两个表中的第二个表中显示更新后的总数 我刚刚开始学习如何编写宏,所以我的知识有点基础,但我确信必须有一种比我现在所做的更方便的方法来设置宏 我有两个表,表1包含本周的数据,这是手动输入的,而表2应该包含总数,这是在单击宏按钮“添加”时计算出来的。 我能够完全自己设置,使用非常基本的代码,这就是为什么我请求帮助。目前,宏代码非常混乱且绝对庞大,我正在查看242个声明的变量值和总共925行代码 下面的内容经过简化和

当我试图在Excel中编写一个宏时,我看到了一个问题,该宏用于添加两个表中的数值,并在两个表中的第二个表中显示更新后的总数

我刚刚开始学习如何编写宏,所以我的知识有点基础,但我确信必须有一种比我现在所做的更方便的方法来设置宏

我有两个表,表1包含本周的数据,这是手动输入的,而表2应该包含总数,这是在单击宏按钮“添加”时计算出来的。 我能够完全自己设置,使用非常基本的代码,这就是为什么我请求帮助。目前,宏代码非常混乱且绝对庞大,我正在查看242个声明的变量值和总共925行代码

下面的内容经过简化和缩短,但基本上是现在一切工作的方式: 每个表最多包含11列数据,每列11行,因此宏正在将单元格B2添加到L12,将单元格B29添加到L39。然后,结果显示为单元格B29至L39中的总计。 现在的代码是:

Sub Add()
Dim Add As Integer
Dim var1 As Integer
Dim var2 As Integer
var1 = Range("B2").Value
var12 = Range("B29").Value
Add = var1 + var12
Range("B29").Select
ActiveCell.FormulaR1C1 = Add
正如我所说,这确实有效,并且完全符合我的需要,但这涉及到大量代码和巨大的潜在错误,以及数小时的编写工作。看起来也不太好,而且更难做到

谁能帮我简化一下,把它缩短一点吗?有没有办法用更少的代码行、更少的参数来总结整个过程

提前感谢您的帮助

更新: 如前所述,我目前拥有的代码确实可以按预期工作,但我想从体积上减少它。太多了,我知道用更少的钱也可以做到同样的事情,我只是不知道怎么做。 我对代码进行了结构化,使其更易于阅读,第一节声明变量,下一节声明值(在表中按每行分块),最后是将表a添加到表B并在表B中显示结果的计算操作(同样,在表中按每行分块)。 再次感谢大家的帮助

试试这个:

Dim cell as Range
For each cell in Range("B29:L39")
    cell.Value = cell + cell.offset(-27).Value
Next
试试这个:

Dim cell as Range
For each cell in Range("B29:L39")
    cell.Value = cell + cell.offset(-27).Value
Next

您可以将
PasteSpecial()
方法与
xlPasteSpecialOperationAdd
值一起用于其操作参数

Range("B2:L12").Copy
Range("B29:L39").PasteSpecial Operation:=xlPasteSpecialOperationAdd
Application.CutCopyMode = False

或者可以使用数组

    Dim i As Long, j As Long
    Dim var1 As Variant, var2 As Variant

    var1 = Range("B2:L12").Value
    var2 = Range("B29:L39").Value
    For i = 1 To UBound(var1, 1)
        For j = 1 To UBound(var1, 2)
            var2(i, j) = var2(i, j) + var1(i, j)
        Next
    Next
    Range("B29:L39").Value = var2

您可以将
PasteSpecial()
方法与
xlPasteSpecialOperationAdd
值一起用于其操作参数

Range("B2:L12").Copy
Range("B29:L39").PasteSpecial Operation:=xlPasteSpecialOperationAdd
Application.CutCopyMode = False

或者可以使用数组

    Dim i As Long, j As Long
    Dim var1 As Variant, var2 As Variant

    var1 = Range("B2:L12").Value
    var2 = Range("B29:L39").Value
    For i = 1 To UBound(var1, 1)
        For j = 1 To UBound(var1, 2)
            var2(i, j) = var2(i, j) + var1(i, j)
        Next
    Next
    Range("B29:L39").Value = var2

仅使用您发布的代码,这可以是单行条目
Range(“B29”)。Value=Range(“B2”)。Value+Range(“B29”)。Value
。但这肯定不是问题所在?你说这是一个简化模型,但我不确定问题是什么。读了你的帖子,我觉得你遗漏了很多。你可能想有一些循环或数组,没有理由真的使用242个变量,因为我理解的是一些简单的数学?你可能需要分享实际代码的大部分。这是录制的宏吗?这往往会导致冗长的代码。您是否将表中的每个单元格声明为范围或其他内容?如果是这样的话,仅此一项就将产生222个变量。问题是您的示例代码与您提供的信息没有很好的关联,因此我们只能猜测这242个变量到底是什么?分享更多您的代码,让我们了解您想要做什么。让我尝试给您一些额外的信息:首先,我才刚刚开始学习,我正在自学,所以我对宏/VBA代码的理解仍然非常有限。我没有家教,所以如果你们不介意的话,我想请你们大家把它说得小声一点,因为虽然我可以复制粘贴你们的解决方案,但我不明白我在用什么。例如,我还不知道数组,只是它们似乎能够帮助总结代码的其他部分。如果有帮助的话,我将尝试附加我现在拥有的全部代码。仅使用您发布的代码,这可以是一个单行条目
Range(“B29”)。Value=Range(“B2”)。Value+Range(“B29”)。Value
。但这肯定不是问题所在?你说这是一个简化模型,但我不确定问题是什么。读了你的帖子,我觉得你遗漏了很多。你可能想有一些循环或数组,没有理由真的使用242个变量,因为我理解的是一些简单的数学?你可能需要分享实际代码的大部分。这是录制的宏吗?这往往会导致冗长的代码。您是否将表中的每个单元格声明为范围或其他内容?如果是这样的话,仅此一项就将产生222个变量。问题是您的示例代码与您提供的信息没有很好的关联,因此我们只能猜测这242个变量到底是什么?分享更多您的代码,让我们了解您想要做什么。让我尝试给您一些额外的信息:首先,我才刚刚开始学习,我正在自学,所以我对宏/VBA代码的理解仍然非常有限。我没有家教,所以如果你们不介意的话,我想请你们大家把它说得小声一点,因为虽然我可以复制粘贴你们的解决方案,但我不明白我在用什么。例如,我还不知道数组,只是它们似乎能够帮助总结代码的其他部分。如果有帮助的话,我将尝试附加我现在拥有的全部代码。干净简单。干净简单。