2013-12-18 5 views
5

R(3.0.2)を再計算しません/ MSOfficeの2013/Win7のエクスポートデータ: - "データ" と "CALC" の式が

は、我々は2枚で既存data.xlsxのファイルがあるとします。そこでここでは問題が来る

require(XLConnect) 
df <- data.frame(c(1,2,3,4,5), c(2,3,4,5,6)) 
wb <- loadWorkbook("data.xlsx", create=F) 
setStyleAction(wb, type=XLC$"STYLE_ACTION.NONE") 
writeWorksheet(wb, data=df, sheet="data", startRow=1, startCol=1, header=F) 
saveWorkbook(wb) 

- 私は式で、「データ」シートを参照する「CALC」シートを持っている:

は、「データ」シートがでRによって満たされています。何らかの理由で、データが更新されず、数式がちょうど入力されたセルを参照していても計算されません。

Excelの計算オプションを手動にしてF9を押しても再計算が強制的に行われます仕事。

私はこの作業を行うためのいくつかの奇妙な方法を見つけました:1.それに適切な数式を持つ特定のセルを選択し、(セルごとに)入力を押します。全く同じ式です。)3.他のファイル(例えばdata2.xlsx)のデータシートを参照することはできますが、これは私にとって最後の手段です。私は別々のデータファイルでファイル構造を膨らませたくありません。さらに、両方のファイルを開くためのこの恐ろしい要求を考慮して、動作させるようにしてください。

ありがとうございます。

+0

はそれを行う保存していますか? – pnuts

+1

いいえ、そうではありません。 –

+0

私はこの正確な問題をWin7のExcel2010で再現できます。私の推奨は、XLConnectの作者にバグレポートを提出し、その間に 'xlsx'パッケージを使って作業することです。ところで、私はあなたの 'setStyleAction'行をスキップしましたが、結果に変更はありません。私はXLConnectの何かが、Excelが引用されたセルに数式を "リンク"するために使用するものを破っていると思う。 –

答えて

2

は、ここに答えます:

wb$setForceFormulaRecalculation(T)

これは、パッケージのほとんどのために働く必要があり、このJavaなど(rJavaに基づいて少なくとももので)メソッドはExcel内で渡されるため、R言語では決定されません。

-1

このVBAマクロは、Excelドキュメントのモジュールに配置して、データ転送後に実行できます(Excelから実行できます)。

さらに簡単です:ExcelでF9を押すと、すべての数式が強制的に計算されます。

私の以前の回答は申し訳ありません。

Sub refresh2() 
Dim sht As Worksheet 

Dim rng0 As Range 
Dim rng1 As Range 
Dim c As Range 

'loop through the sheets 
For Each sht In ActiveWorkbook.Worksheets 

    'limit the search to the UsedRange 
    Set rng0 = sht.UsedRange 
    On Error Resume Next ' in case of no formulas 

    'reduce looping further 
    Set rng1 = rng0.SpecialCells(xlCellTypeFormulas) 

    For Each c In rng1 'loop through the SpecialCells only 
     c.Formula = c.Formula 
    Next 

Next 
End Sub 
+0

それはOPが言ったことではありません:彼はすでにIをしたように、これを試しました。問題は単なる再計算より深いです。 –

+0

私はマクロがF9を押すのとほとんど同じだと思う。そして、私はすでに記事でこれを試していると言いました。 –

+0

これは非常に創造的な回避策ですが、2つの異論があります。第一に、ワークシートに他の数式がある場合は、無為に実行される可能性があります。第二に、 'XLConnect'が' xlsx'型のワークブックが好きではないことを明らかにしているので、間違いを伝えるのではなく、修正するべき 'R'パッケージです。 –

0

が、私はこのポストは2.5歳ですけど、私はただあなたとまったく同じ問題を持っていた:

私のためにこのマクロの作品は、単にテスト。 XLConnectにいくつか問題があると思われます。私はwrite.csvを使用し、それは働いた。私がwrite.csvで持っている問題は、私のデータフレームに16384列以上のカラムがあり、ファイルに別のシートを追加できないということです。このリンクは、いくつかのクリックを取得し、溶液をコメント欄に隠されていることを探し

+0

ええ、私もそれを経験しています – user2981639

1

ブックを読み込んでデータを書き込んだ後、ワークブックをディレクトリに保存する前に数式の再計算を実行します。

これはあなたのために働く必要があります。

writeWorksheet(wb, data=df, sheet="data", startRow=1, startCol=1, header=F) 
setForceFormulaRecalculation(wb,"data",TRUE) 
saveWorkbook(wb) 
関連する問題