2010-11-17 7 views
5

Ho il seguente codiceExcel-VBA Chiamato gamma fila somma

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 

Anche se so che è sbagliato, non ho idea di come farlo per memorizzare in DepRng.Cells(i, j) la somma totale di tutta la KidsRng.Row[i] Qualsiasi aiuto?

+0

Si può aggiungere una definizione di KidsRng? –

+0

scusa non lo seguo, cosa intendi con l'aggiunta di una definizione? – Panicos

+0

Sembra che DepRng.Columns.Count dovrebbe essere 1 ... se non stai ripetendo lo stesso valore –

risposta

2

ordinato, ringrazia tutti per aiutare ur

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

Buono! ... ma ancora non capisco cosa fa il tuo indice j ... –

+0

è per un'altra riga ho appena avuto lì per ora, ma j sarà riempito con altre gamme di righe. Scusa per la confusione, e grazie per l'aiuto – Panicos

1

Potrebbe esserci un modo migliore di questo, ma questa è la mia soluzione che dipende dal motore di formula di Excel interno, tuttavia, potrebbe essere sufficiente per quello che stai facendo ... Determina l'indirizzo completo di KidsRng. Riga (i) e lo alimenta in una stringa di formula = SUM() e valutata da 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 

aggiornato a funzionare se kidsrng esisteva in una diversa scheda/libro aggiornato per utilizzare Application.Evaluate

3

Il seguente codice funziona bene.

Forse si dovrebbe confrontarla con la vostra:

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 

Basta riempire la gamma C1: apparirà F2 con i numeri e i totali per riga in B1: B2 al momento dell'esecuzione della macro.