你如何以渐进的方式总结另一篇专栏文章?
好吧,这是我试过的:
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