在EXCEL VBA中对变量列进行求和

在EXCEL VBA中对变量列进行求和,excel,vba,Excel,Vba,我正在Excel中编写一个报告,实际上是在VB6中构建它,然后在Excel中生成。如下图所示,我有两列,买入和卖出。我想做的是把两者的总数都取出来,然后把它们放在合计行中 所以我试着用这样的代码,基本上首先指定我想把值放在哪里 xlrow= 14 xlCol=2 ActiveCell(xlRow, xlCol) = (ActiveCell.FormulaR1C1 = "=sum(B6:B12)") “我试过这个,但它给了我一个虚假的值,不知道该怎么做 基本上,我想进入购买的总单元,取A、B、

我正在Excel中编写一个报告,实际上是在VB6中构建它,然后在Excel中生成。如下图所示,我有两列,买入和卖出。我想做的是把两者的总数都取出来,然后把它们放在合计行中

所以我试着用这样的代码,基本上首先指定我想把值放在哪里

xlrow= 14
xlCol=2
ActiveCell(xlRow, xlCol) = (ActiveCell.FormulaR1C1 = "=sum(B6:B12)") 
“我试过这个,但它给了我一个虚假的值,不知道该怎么做 基本上,我想进入购买的总单元,取A、B、C、D、其他、无、未知的和,然后让它走到下一个单元,取售出的总数量:

将其放入一个循环中,使其一直循环到记录计数的末尾(见下文)

我用一个记录集填充excel标题(包等),并试图使其动态化(只计算我拥有的列的总数,并在末尾停止)。这就是我想要建立的

xlrow=14
xlcol=2
rCount=(g_RS.recordcount *2) 'because I have two columns (Bought,sold) for each Heading
dim i as integer
for i = 1 to rCount -1
     ActiveCell(xlRow, xlCol) = (ActiveCell.FormulaR1C1 = "=sum(B6:B12)")
     xlcol=xlcol+1
next

为了帮助您了解如何更有效地编写代码,下面是一个示例。您可以将其扩展到代码的其余部分,但我相信它适用于您的情况

您当然可以使用R1C1表示法来构建公式,但您必须正确地包含所有部分才能创建正确的引用。使用
调试。如果需要,在字符串上打印
,查看它的外观

添加了边框格式


第一个注意事项是,您正在尝试使用
A1
符号样式设置
R1C1
公式。将
.formula1c1
更改为
.Formula
,看看它是否有帮助。1)去掉这些
ActiveCell
!!!2) 我发现将总计放在顶部(冻结行)是一个很好的做法@ScottHoltzman它仍然给我错误尝试这个
ActiveCell(xlRow,xlCol)。Formula=“=sum(B6:B12)”
或者如果你只想返回总和的值,你可以使用
Evaluate
函数。由于您使用的是
VB6
,您可能需要从Excel对象调用它。。。像
xlApp.Evaluate(Sum(B6:B12)
(研究以获得准确的语法。我不知道为什么这是givine me FALSE。我在玩弄它,但它仍然是FALSE。不知道发生了什么。我只是想找到一种简单的方法来指定单元格的位置xlrow=14,xlcol=12(然后我做xlcol12+1,等等)-然后是xlsheet(xlrow,xlcol).value=上面6行的总和(B6-B12,然后是C6-C12,然后是D6-D12,因为我继续移动xlRow)。但这似乎比我想象的要难。在我编写值时,是否可以向这个循环添加一个入口?一般的答案是……当然!但我不知道你所说的“入口”是什么意思或者你想要达到的目标。如果上面的示例帮助解决了你的问题,你可以将其标记为已修复,那么你可能需要打开第二个问题。BORDER****我正在尝试做一个顶部有一行,底部有两行,或者任何一个portalhey Thank,看起来很棒。唯一的问题是,它没有划出我拥有的全部部分在我的电子表格上显示为“A14”。有没有办法包括它?
Option Explicit

Sub GenerateTotals()
    Dim ws As Worksheet
    Dim dataRowStart As Long
    Dim dataRowEnd As Long
    Dim totalsRow As Long
    Dim dataColumnStart As Long
    Dim columnCount As Long
    Dim dataRangeR1C1 As String
    Dim i As Long

    '--- set these values specifically, or you can calculate them
    Set ws = ActiveSheet
    dataRowStart = 6
    dataRowEnd = 12
    totalsRow = 14
    dataColumnStart = 2
    columnCount = 2
    'countCount = (g_RS.RecordCount * 2)

    For i = dataColumnStart To (dataColumnStart + columnCount - 1)
        dataRangeR1C1 = "R" & dataRowStart & "C" & i & ":R" & dataRowEnd & "C" & i
        With ws.Cells(totalsRow, i)
            .FormulaR1C1 = "=SUM(" & dataRangeR1C1 & ")"
            .Borders(xlEdgeTop).LineStyle = xlContinuous
            .Borders(xlEdgeTop).ColorIndex = xlAutomatic
            .Borders(xlEdgeTop).TintAndShade = 0
            .Borders(xlEdgeTop).Weight = xlThin
            .Borders(xlEdgeBottom).LineStyle = xlContinuous
            .Borders(xlEdgeBottom).ColorIndex = xlAutomatic
            .Borders(xlEdgeBottom).TintAndShade = 0
            .Borders(xlEdgeBottom).Weight = xlThick
        End With
    Next i

    Set ws = Nothing
End Sub