Continua la mia esplorazione su VSTO e la sua implementazione per quanto riguarda Excel. Sono rimasto stupito dal fatto che credo che non ci sia una classe per rappresentare la singola cella (o almeno in questa versione che ho io del runtime, che non è la Second Edition, quella uscita poco tempo fa).
C'è invece un tipo per rappresentare un range di celle; il tipo cui mi riferisco è Range, sotto il namespace Microsoft.Office.Interop.Excel e ogni foglio del workbook ne implementa una proprietà, utile appunto per selezionare un insieme di più celle.
Ecco come selezionare le prime 10 celle della colonna B e assegnargli come valore il risultato di un'operazione di percentuale:

private void Foglio3_Startup(object sender, System.EventArgs e)

{
this.Range["B1", "B10"].FormulaLocal = "=(A1/10)*100";
}

Ecco, questo codice riporta la medesima formula in tutte le prime 10 righe della colonna B, incrementando il valore dei riferimenti alle celle inseriti all'interno della formula stessa. Quindi, A1 nella seconda riga diventerà A2, nella terza A3 e così via.

Se volessimo invece mantere il valore A1 presente nella formula, come valore fisso dobbiamo modificare la formula come segue:

private void Foglio3_Startup(object sender, System.EventArgs e)

{
this.Range["B1", "B10"].FormulaLocal = "=(A$1/10)*100";
}

Chiaramente, alla proprietà FormulaLocal possiamo assegnare stringhe contenenti tutte le funzioni presenti all'interno di Excel.
Inoltre, la classe Range, ci permette anche di selezionare una singola cella, in modo tale da poterne modificare il contenuto o assegnare delle funzioni. Basta semplicemente dare come cella d'inizio e di fine del range, la medesima cella che vogliamo selezionare.

private void Foglio3_Startup(object sender, System.EventArgs e)

{
this.Range["C1", "C1"].Value2 = "Media percentuali";
this.Range["C2", "C2"].FormulaLocal = "=SOMMA(B1:B10)";
}