在EXCEL VBA中对variables列进行SUM操作

我正在Excel中创build一个报告,实际上在VB6中将其生成在Excel中。 从下面的图片可以看出,我有2个专栏,BOUGHT和SOLD。 我想要做的是将两者的总数放在总计行中。

所以我试着用这样的代码,基本上首先指定我想要放置的值

xlrow= 14 xlCol=2 ActiveCell(xlRow, xlCol) = (ActiveCell.FormulaR1C1 = "=sum(B6:B12)") 

“我试过这个,但它给了我一个假的值,不知道该怎么去做。基本上我想进入BOUGHT的总单元格,取A,B,C,D,其他,无,未知的总和它走到下一个单元,并采取总共卖出:

让它在一个循环中,以便一直到logging计数结束(见下文)

我用一个logging集来填充excel标题(包等),正如我试图使它dynamic的(只做总共无论多less列,并在最后停止)。 所以这就是我想要build立的

 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表示法来构build公式,但是您必须正确包含所有部分以创build适当的参考。 在string上使用Debug.Print ,看看你需要的样子。

增加了边框格式

 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