3

Excel Interopライブラリを使用してシートを取得し、シート内の値を置き換えています。私のシート構造は次のとおりです。

列AEには、列FLのデータを処理する数式が含まれています。シートを更新するときに、FLから内容をクリアし、数式をAEに残します。次に、列FLに新しいデータを入力します。

入力した新しいデータの全範囲に拡張するには、列AE(任意の行)の数式が必要です。

たとえば、データを8行から20行に拡張すると、次のように=sum(G1,G8)なり=sum(G1,G20)ます。シート内の現在のすべての数式を取得する方法はありますか?数式の範囲を拡張するにはどうすればよいですか?

4

4 に答える 4

6

セルにデータを入力している間、新しい各セルを追跡し、その範囲に数式を適用します。

sheet.Cells[rowCount, column].Formula = string.Format("=SUM(G1:G{0})", rowCount);
于 2011-04-01T10:53:25.103 に答える
0

Excelオブジェクトモードの操作については、最初にVBAソリューションを探してから、これをC#に変換することをお勧めします(これは簡単です)。Web上にははるかに多くのVBAリソースがあり、VBAマクロを記録することで自分自身を助けることさえできる場合があります。

数式の正確な場所によっては、行を挿入することで目的を達成できる場合があります。

たとえば、範囲G1:G8を参照する数式がA3にあり、8行ではなく20行のデータを挿入する場合は、次のように行8を20-8=12回下に移動してからデータ。

Dim rng As Range
Dim nIndex As Long
Set rng = Rows("8:8")
For nIndex = 1 To 20 - 8
    rng.Insert Shift:=xlDown
Next nIndex

これを行うと、A3の数式は、挿入された行を含むように自動的に変更されます。

相互運用機能を介してこれを行うことは、多数の行に対して特に効率的ではないことに注意してください(挿入された各行のアプリからExcelプロセスへのラウンドトリップ)。パフォーマンスを向上させる1つの方法は、一度に複数の行を挿入することです。

于 2011-04-01T11:41:30.767 に答える
0

オブジェクトを範囲に解析する必要があるかもしれません...

(((Excel.Range))yourWorkSheet.Cells[rowCount, column]).Formula = string.Format("=SUM(G1,G{0})", rowCount); 
于 2011-09-16T14:55:07.177 に答える
0

同様の問題がありましたが、IF式に問題がありました。Formulaプロパティに設定しても機能しませんでした。ただし、FormulaLocalに設定した場合も同じように機能します...

マイクロソフトに感謝します:)

ところで:FormulaとFormulaLocalは、A1参照スタイルでのみ機能します。R1C1の場合、FormulaR1C1およびFormulaR1C1Localを使用する必要があります。

于 2012-09-11T05:58:54.997 に答える