2010-11-17 48 views
5

Tôi đã đoạn mã sauExcel VBA loạt tên hàng tổng

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 

Mặc dù tôi biết là sai, tôi không có ý tưởng làm thế nào để có được nó để lưu trữ trong DepRng.Cells(i, j) tổng số tiền của cả KidsRng.Row[i] Bất kỳ sự giúp đỡ?

+0

Bạn có thể thêm vào một định nghĩa của KidsRng? –

+0

xin lỗi tôi không làm theo, bạn có ý gì khi thêm định nghĩa? – Panicos

+0

Dường như DepRng.Columns.Count phải là 1 ... nếu không bạn đang lặp lại cùng một giá trị –

Trả lời

2

Sắp xếp, cảm ơn tất cả cho ur giúp đỡ

DepRng.Cells(i, j) = Application.Sum(KidsRng.Rows(i)) //just needed to add the "s" in rows 
+0

Tốt! ... nhưng tôi vẫn không hiểu chỉ số j của bạn ... –

+0

của nó cho một hàng khác tôi chỉ có nó ở đó, nhưng j sẽ được lấp đầy với các dãy khác. Xin lỗi vì sự nhầm lẫn và nhờ sự giúp đỡ – Panicos

1

Có thể có cách nào tốt hơn, nhưng đây là giải pháp của tôi phụ thuộc vào công thức Excel bên trong, nó có thể đủ cho những gì bạn đang làm ... Nó xác định địa chỉ đầy đủ của KidsRng. Hàng (i) và nạp nó vào chuỗi công thức = SUM() và được đánh giá bởi 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 

cập nhật nó để làm việc nếu kidsrng tồn tại trong một tấm khác nhau/cuốn sách cập nhật để sử dụng Application.Evaluate

3

Các mã sau đây hoạt động ok.

Có lẽ bạn nên so sánh nó với bạn:

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 

Chỉ cần điền vào dãy C1: F2 với những con số và những tổng số mỗi hàng sẽ xuất hiện trong B1: B2 khi thực hiện các chương trình macro.