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

时间:2015-07-09 10:11:11

标签: excel vba excel-vba

好的,这就是我尝试过的:

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

但它没有用。

我要做的是让宏取W1:Wx并在X列上汇总这些内容。

换句话说应该是这样的:

X1 = W1 

X2 = W1 + W2

X3 = W1 + W2 + W3

X4 = W1 + W2 + W3 + W4

等等。

你们可以指导我如何做到这一点吗?我当然希望它用于VBA Excel宏。

4 个答案:

答案 0 :(得分:1)

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

这会将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。

答案 1 :(得分:0)

尝试

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

假设您不需要公式来仅在计算结果中添加值

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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