Excel-VBA Именованная сумма строки строки - PullRequest
5 голосов
/ 17 ноября 2010

У меня есть следующий код

 For i = 1 To DepRng.Rows.Count
    For j = 1 To DepRng.Columns.Count
         DepRng.Cells(i, j) = Application.Sum(KidsRng.Row(i)) //Does not work
    Next j
 Next i

Хотя я знаю, что это неправильно, я не знаю, как заставить его хранить в DepRng.Cells(i, j) общую сумму KidsRng.Row[i] Любая помощь?

Ответы [ 3 ]

3 голосов
/ 17 ноября 2010

Следующий код работает нормально.

Возможно, вам следует сравнить его с вашим:

Sub a()

Dim DepRng As Range
Dim kidsrng As Range
Set DepRng = Range("B1:B2")
Set kidsrng = Range("C1:F2")

 For i = 1 To DepRng.Rows.Count
      DepRng.Cells(i, 1) = Application.Sum(kidsrng.Rows(i))
 Next i

End Sub

Просто заполните диапазон C1: F2 числами, и итоги на строку появятся в B1: B2 после выполнения макроса.

2 голосов
/ 17 ноября 2010

отсортировано, спасибо всем за помощь

   DepRng.Cells(i, j) = Application.Sum(KidsRng.Rows(i)) //just needed to add the "s" in rows
1 голос
/ 17 ноября 2010

Возможно, есть лучший путь, чем этот, но это моё решение, которое зависит от внутреннего механизма формул Excel, хотя этого может быть достаточно для того, что вы делаете ... Он определяет полный адрес KidsRng.Row.(i) и передает ее в строку формулы = SUM () и оценивает Application.Evaluate.

For i = 1 To DepRng.Rows.Count
    For j = 1 To DepRng.Columns.Count

        DepRng.Cells(i, j).Value = Application.Evaluate("=SUM(" & KidsRng.Row(i).Address(True, True, xlA1, True) & ")")

    Next j
 Next i

обновляет ее, чтобы она работала, если существует kidsrng на другом листе / книге, обновленной для использования Application.Evaluate

...