你如何以渐进的方式总结另一篇专栏文章?

好吧,这是我试过的:

Sheets("ProDiver ored").Range("X" & i).Value = Sheets("ProDiver ored").Range("W2:W" + i).Value 

但它不起作用。

我想要做的是让macros观的W1:Wx和X列总结这些。

换句话说,应该是这样的:

 X1 = W1 X2 = W1 + W2 X3 = W1 + W2 + W3 X4 = W1 + W2 + W3 + W4 

等等。

你们可以指导我如何做到这一点? 我想要一个VBA Excelmacros,当然。

正如Siddharth所build议的(并且从评论中略有改变):

这会将公式从X1粘贴到数据范围的底部:

 Sub JustFormula() With ThisWorkbook.Worksheets("Sheet1") .Range(.Cells(1, 24), .Cells(Rows.Count, 23).End(xlUp).Offset(, 1)).Formula = "=SUM($W$1:$W1)" End With End Sub 

稍微改变一下程序,你可以改变值:

 Sub JustValues() Dim MyRange As Range With ThisWorkbook.Worksheets("Sheet1") Set MyRange = .Range(.Cells(1, 24), .Cells(Rows.Count, 23).End(xlUp).Offset(, 1)) End With MyRange.Formula = "=SUM($W$1:$W1)" MyRange.Value = MyRange.Value End Sub 

如果您的工作簿需要一段时间来计算,则可能需要在.Value = .Value行之前放置一个DoEvents。

尝试

 Sheets("ProDiver ored").Range("X" & i).Value = Application.Sum(Sheets("ProDiver ored").Range("W1:W" & i)) 

上面假设你不需要公式来将计算结果的值加起来

如果你想在你的例子中有连接的所有子部分,你应该有一个循环:(未经testing!)

 Dim cell As Object Dim j As Integer Dim newString As String Set newString = "" Set j = 0 For cell in Sheets("ProDiver ored").Range("W:W") 'entire column W newString = newString + cell.Value Range("X" & j).Value = newString j = j + 1 Next 

试试这个。 我已经testing过了。 它运作良好。

 Public Sub summarizeValue() Dim row As Integer Dim summarize As Integer Dim dataSheet As Worksheet 'Set start row row = 1 'Getting data sheet Set dataSheet = ThisWorkbook.Worksheets("sheetname") 'We need some break point, so I used "Do While" instead of "For" which is looping all cell. 'Loop column cells until blank Do While dataSheet.Range("W" & row) <> "" 'If adding integer, use "+" sign 'If adding string, use "&" sign summarize = summarize + dataSheet.Range("W" & row) 'Set summarize value into result cell dataSheet.Range("X" & row) = summarize 'Increase row row = row + 1 Loop End Sub