4

MATLABプログラムを使用してExcelシートに値を書き込んでいます。また、数式を使用してセルに値を書き込んでいます(たとえば、MATLABプログラムが=AVERAGE(A1:A10)セルに書き込み、これが適切な値に変換されます(つまり、シートを開くと、上記の数式テキストではなく値が表示されます)。

ただし、配列数式(中括弧が付いている数式)の記述に問題があります。通常、ユーザーはCtrl+ Shift+Enterの組み合わせを押して入力すると、中括弧が表示され、適切な値が計算されます。ただし、MATLABプログラムから中括弧で囲まれたこれらの数式を作成すると、値は計算されません。数式のテキストが表示されます(中括弧が周囲に表示されます)。配列数式をセルに書き込むだけでは、++効果を
シミュレートできないようです。CtrlShiftEnter

これに対する解決策はありますか?

4

1 に答える 1

5

Excel は、 で始まる値を に自動変換=します.formulasFormulaArray配列数式を保存するには、範囲のプロパティに直接書き込む必要があります。

詳細:

通常の数式を使用している場合、VBA には 2 つのオプションがあります。次のように、セルの値または数式のプロパティを設定できます。

Range("A3").value = "=Sum(A1:A2)"
Range("A3").Formula= "=Sum(A1:A2)" 

配列数式を使用する場合、これらのアプローチのいずれも使用できません。セルの別の領域に格納する必要があります。

Range("A3").FormulaArray = "=Sum(A1:A2)"

Ctrlユーザーが++を押すShiftと、セルの をEnterに送信するように Excel に指示しています。セルのセクション。.valueFormulaArray

それ以外の場合、デフォルトでは、Excel が=記号を認識したとき.valueに、.formula

とにかく、VBA であっても、これはすべて Excel オブジェクト モデルに関連しています。

その詳細に入ったので、matlab のxlswrite関数はセルの値にのみ書き込み、このサブプロパティに書き込むことはできないと思います。間違っている可能性があります。

これはMATLABで動作する可能性があります(テストされていません)

mlrange='A3'; % or similar

Excel = actxserver ('Excel.Application');
Excel.Workbooks.Open(filename);
TargetSheet = get(Excel.sheets,'item','A');
TargetSheet.Activate
ran = Excel.Activesheet.get('Range',mlrange);
ran.FormulaArray = '=Sum(A1:A2)'
于 2012-09-21T19:27:49.260 に答える