h41msh1c0r
Goto Top

Excel Variable in Formel einfügen

Aloa in die Runde,

zum Einsatz kommt das Import-Excel Modul von dfinke.

Eine Summenformel soll noch eine Variable bekommen.
    Set-ExcelRange -Address $ActionsPerYearWorksheet.Cells["A1"] -Value "2020"   
    Set-ExcelRange -Address $ActionsPerYearWorksheet.Cells["B1"] -Formula '=SUM(OFFSET(Data!$A$2:$A$128,0,MATCH("o_2020",Data!$A$1:$AA$1,0)-1))'           

Da der Block sind ein paar mal wiederholt war Variable definiert und eingefügt.
    $yr = "2020"  
    Set-ExcelRange -Address $ActionsPerYearWorksheet.Cells["A1"] -Value "$yr"   
    Set-ExcelRange -Address $ActionsPerYearWorksheet.Cells["B1"] -Formula $('=SUM(OFFSET(Data!$A$2:$A$128,0,MATCH("o_'+$yr+'",Data!$A$1:$AA$1,0)-1))"').ToString()     

Die Zeichenkette die ToString() ausspuckt ist genau das was ich haben will.

Wenn ich das so aber ins Excel reindrücke "repariert" Excel die Zellen indem es die Formeln entfernt. ;)

In der Sheet XML innerhalb der Excel Tapete ist das doch nur Text, woran könnte sich da Excel stören?

Verraten tut mir das Excel nicht, sagt halt nur Reparieren oder nicht. Bei Nein gibt es nur eine leere Excel Ansicht.

VG

Content-ID: 668508

Url: https://administrator.de/contentid/668508

Ausgedruckt am: 06.10.2024 um 08:10 Uhr

Kraemer
Lösung Kraemer 01.10.2024 um 15:05:30 Uhr
Goto Top
Moin,

sehe ich das richtig, das das Anführungszeichen zuviel ist?

)"').ToString()
H41mSh1C0R
Lösung H41mSh1C0R 01.10.2024 um 15:24:17 Uhr
Goto Top
Das " war schonmal ein richtiger Hinweis. Danke.

foreach ($yr in $StartJahr..$EndeJahr) {
    Set-ExcelRange -Address $ActionsPerYearWorksheet.Cells["A$fieldCnt"] -Value "$yr"   
    $wert = $('=SUM(OFFSET(AllData!$A$2:$A$128,0,MATCH("o_'+$yr+'",AllData!$A$1:$AA$1,0)-1))').ToString()     
    Set-ExcelRange -Address $ActionsPerYearWorksheet.Cells["B$fieldCnt"] -Formula $wert       
    $fieldCnt++
}

Musste die Formel dennoch erst in eine Variable schreiben und diese dann an den Parameter "-Formula" übergeben, sonst stand im XML im Excel das toString() mit drin. ;)