Mi piacerebbe poter specificare dinamicamente un intervallo in Excel, in base alle variabili riga / colonna.
Diciamo che ho un file con contenuti che sembrano in questo modo:
A B C D E 1 10 11 12 13 14 2 51 52 53 54 55
Se volessi sommare gli articoli nella riga 1, colonne 2-4 (ovvero 11 + 12 + 13), come lo specificerei?
Se lo facessi a mano, scriverei:
=SUM(B1:D1)
... ma come posso generare programmaticamente quella definizione di intervallo al volo, conoscendo solo i numeri di riga (1) e colonna desiderati (2-4)?
=SUM(????)
Grazie in anticipo per il vostro aiuto!
(Sto usando Microsoft Excel 2011 per Mac, quindi le soluzioni Excel basate su VBA / macro non funzioneranno per me.)
risposte:
9 per risposta № 1Avevo lo stesso bisogno - sembra il OFFSET
la funzione ti permetterà di farlo.
Quindi per quanto sopra:
=SUM(OFFSET(A1,0,1,1,3))
per scomporlo:
OFFSET(reference cell,
row offset from ref cell to start the range,
col offset to start the range, height of range you want,
width of range you want)
è possibile azzerare gli offset, oppure +
rifiutare, -
per ricaricare
1 per risposta № 2
Non sei sicuro di quello che vuoi.
Intendevi questo?
dim parent_range as range
dim child_range as range
set parent_range = me.range("a1:e2")
set child_range = range(parent_range.rows(1).cells(2), parent_range.rows(1).cells(4))
msgbox "=sum(" & child_range.address(false, false, xla1) & ")"
O lo volevi come una formula?
=SUM(INDEX($A$1:$E$2,1,2):INDEX($A$1:$E$2,1,4))
1 per risposta № 3
Dipende da come vengono referenziati i numeri di riga e colonna "noti"
Ad esempio se sono valori nelle celle del foglio:
A B
9 Row 1
10 ColStart 1
11 ColEnd 4
Usa un INDRECT
funzione per costruire un riferimento di intervallo
=SUM(INDIRECT("R"&B9&"C"&B10&":R"&B9&"C"&B11,FALSE))