壊れた数式を含むスプレッドシートを開く

壊れた数式を含むスプレッドシートを開く

私は、特定の行のセルの数式を含むスプレッドシートを生成するコードを使用しています。これを実行すると、数式に問題があり、スプレッドシートを開こうとすると、Excel がシートを修復するかどうかを尋ねます。はいと答えると、シートから数式の痕跡をすべて削除して修復が行われます。いいえと答えると、シートのオープンが完了しません。

修復せずにスプレッドシートを開き、コードによって生成された数式を調べる方法はありますか。数式をコピーして、削除されたセルの 1 つに貼り付けると、正常に機能します。生成されたシートを開いたときに、数式のどこが間違っているのかを本当に確認する必要があります。これを行う方法はありますか?

EPPlus Excel ライブラリで以下のコードを使用して数式を追加しています。

for (var r = startAt + 2; r < endAt; r++)
{
    var amountFormula =
        $@"=SWITCH(C{r}; ISBLANK(D{r}); """"; ""Percentage""; IF(ISNUMBER(D{r}); D{r}; 0) * IF(ISNUMBER(E{r}); E{r}; 0) / 100; IF(ISNUMBER(D{r}); D{r}; 0) * IF(ISNUMBER(E{r}); E{r}; 0))";
    ws.Cells[$"F{r}"].Formula = amountFormula;
}

{r}この数式は、適切な行番号に置き換えて数式をシートに貼り付けると機能することに注意してください。

答え1

Excel はシートを修復するかどうかを尋ねます。「はい」と答えると、シートから数式の痕跡をすべて削除して修復が行われます。「いいえ」と答えると、シートは開きません。

ここですべての選択肢を試したと思います。

回避策としては、数式をセルにテキスト ( ws.Cells[$"F{r}"].Value = amountFormula;) として挿入し、シートを開いて数式を確認することが考えられます。

(Excel がまだ数式に関してエラーを出す場合は、先頭に':を追加することもできますws.Cells[$"F{r}"].Value = "'" & amountFormula;)

関連情報