Hei*_*ack 7 c# excel vba excel-vba
Excel.Worksheet.Cells[row,col] = "=Formula / reference"
Run Code Online (Sandbox Code Playgroud)
在上面的Excel中更新公式/参考并在数据表中显示结果,在下面的代码中,当使用Range.set_Value(..)数据表时根本没有更新
string[,] myFormulas = new string[nrRows, nrColumns];
...
myFormulas [x,y] = e.g. "=SUM(D1:D" + rowNr + ")";
myFormulas [x,y+1] = e.g. "=Table1!A1";
...
Range.set_Value(Missing.Value, myFormulas)
Run Code Online (Sandbox Code Playgroud)
它只显示公式为字符串,例如=Table1!A1.
我不能让它更新.无论是CalucalteAll(),也不是RefreshAll(),也不是与任何关系.有关如何在数据表中实现更新的任何建议吗?
编辑:您可以使用单个语句设置整个数组Range.set_Value(Missing.Value, myFormulas).我的问题是如何让excel评估这个数组中的公式(而不是将它们视为简单的字符串,或者将Excel逐个设置为Excel而不是重新计算.)?
Pun*_*orn 13
我发现rangeVariable.Formula = rangeVariable.Value会将'公式作为文本'转换为真正的Excel公式,这是针对该范围内的所有单元格完成的.
Worksheet sheetOne = ...
int numberOfRows = 5000;
// Make a massive range on sheet 1, then use cell assignment by array for fastness
Range range = sheetOne.Range["A1"];
string[,] links = new string[numberOfRows+1, 1];
range = range.Resize[numberOfRows+1, 1];
for (int count = 0; count < numberOfRows; count++)
{
// Build the =HYPERLINK formula to set as text in each cell
string worksheet = "Sheet2";
string cellRef = string.Format("A{0}", count + 1);
string formula = string.Format("=HYPERLINK(\"#{0}!{1}\", \"{2}\")", worksheet, cellRef, string.Format("Hyperlink number {0}", count));
links[count, 0] = formula;
}
//range.set_Item(Type.Missing, Type.Missing, links);
range.set_Value(Type.Missing, links) // thanks HeinrichStack
range.Formula = range.Value; //<--- Boom baby, all 'formula as text' turns into bona fide excel formula
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
36676 次 |
| 最近记录: |