2010-11-22 10 views
1

私は列Dの数式をその値で置き換えようとしています。C#とMicrosoft.Office.Interop.Excel - 数式をその値で置き換える方法

例えば、現在、D1 = C1/2

C1 = 10は、私はテキストにフォーマットを変更しようとしたコラムC.

を削除する必要があるので、D1が、私はこれを行う必要がある5

になりたい場合は以下のようなそれは、セルの内容を変更しないので、あなただけの、表示スタイルを変更することはできません

Excel.Style style = workbook.Styles.Add("styleText", Missing.Value); 
    style.NumberFormat = "@"; 

    Excel.Range range = (Excel.Range)sheet.get_Range("D1", Missing.Value); 
    range.Style = style; 

答えて

1

ここではそれはVBのコードですが、私はC#の

Sub ValuesOnly() 
    Dim rRange As Range 
    On Error Resume Next 
    Set rRange = Application.InputBox(Prompt:="Select the formulas", Title:="VALUES ONLY", Type:=8) 
    If rRange Is Nothing Then Exit Sub 
    rRange = rRange.Value 
End Sub 

でそれを翻訳する問題でwoouldそれを行うための別の方法は、単に模倣することであると思ういけない...何が必要ないVBAマクロですコマンドペースト特殊 - >値。私はちょうどあなたがコメントをフォーマットするにはどうすればよい

Sub Macro1() 
    Range("C5").Select 
    Selection.Copy 
    Range("D5").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
End Sub 
+0

感謝を(C1は、結果がD1に配置された数式が含まれている)、それを行うための別の方法がある

private static void ReplaceFormulasWithValues(ref Excel.Worksheet sheet, char column) { Excel.Range range = (Excel.Range)sheet.get_Range(column + "1", Missing.Value).EntireColumn; range.Copy(Missing.Value); range.PasteSpecial(Microsoft.Office.Interop.Excel.XlPasteType.xlPasteValues, Microsoft.Office.Interop.Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, false, false); } 

、ロレンソのおかげで私が得た解決策であるが、私は理解していません... InputBoxは何を返しますか?そして、私はrRange = rRange.ValueがC#で動作するとは思わない。 – Aximili

+0

InputBoxは単にRangeオブジェクトを返します。ユーザは 'C3'、' C3:D4'などのようなものを書くことができます...とにかく2番目のサンプルは、Paste Specialコマンドを模倣する方法を示しています。なぜあなたはそれがC#で動作しないと思いますか? – Lorenzo

+0

私のためにマクロを作成していただきありがとうございます...申し訳ありませんがC#に翻訳する方法がわかりません。オブジェクトは非常に異なるようです。 – Aximili

0

それらの値と数式を交換していないようです。これをExcelで手動で実行するときは、列をコピーして、[特殊な形式をペーストする] - > [値]を選択して、数式ではなく値を貼り付ける必要があります。私は同じ操作を行うプログラム的な方法があると思います。

1

(関数を含むセルである私のサンプルでC5)それをしないマクロを記録しています?ここで

が、これは

static void Main(string[] args) { 
    string fileName = @"D:\devprj\Temp\TempProject\bin\Debug\Cartel1.xlsx"; 
    Application ac = new Application(); 
    Workbook wb = ac.Workbooks.Open(fileName); 
    Worksheet ws = wb.Sheets[1]; 

    Range rangeOrigin = ws.get_Range("C1"); 
    Range rangeDestination = ws.get_Range("D1"); 
    rangeDestination.Value = rangeOrigin.Value2; 

    wb.Save(); 
} 
関連する問題