2011-10-05 99 views
0

我一直在寻找像疯了一样,我敢肯定它比我想象的更简单所以请赐教!如何获得细胞的公式VALUE

我设置上的一些细胞在公式中这样的循环:

ActiveSheet.Range("AM" & i).Formula = "=ROUND(Y" & i & "/(M" & i & "+U" & i & "/12))" 

而且我想这个公式的结果复制到其他细胞。我试过这个:

ActiveSheet.Range("Y" & i).Value = ActiveSheet.Range("AM" & i).Value 

但它不工作。我总是想知道如何得到这个公式的结果(值),而不是复制整个公式。

任何想法或答复?非常感谢。

+0

它看起来像它应该工作,让你确信它放置后实际计算它式。另外,这两个公式将是循环的,所以这可能是问题。 –

+0

@Tom,你实际上不需要循环,将公式放在一系列单元格上。它可以在一行中完成。 – Reafidy

+0

同意上面的评论。您选择的复制/粘贴答案确实是一种解决方法 – brettdj

回答

0

您可以将结果复制为值。假设我有单元格A1和A2,我想在A3的MAX值,然后复制结果到A4:

A 
1 10 
2 20 
3 20 <- as formula '=MAX(A1:A2)' 
4 20 <- as value not formula 

Sub AddMax() 
    Range("A3").Formula = "=MAX(A1:A2)" 
End Sub 

Sub CopyResult() 
    Range("A3").Copy 
    Range("A4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
End Sub 
+0

好吧!感谢它的工作! – TomShreds

+1

(1)如果你曾经在VBA中使用过Copy,那么你应该添加一个'Application.CutCopyMode = False'去除A3的复制选择。 (2)上面的例子可以用一行'[a4] .Value = Application.WorksheetFunction.Max([a1],[a2])''避免复制 – brettdj

+1

@brettdj - 谢谢 - 好评。我同意你的观点(2),但我不清楚为什么它不适用于OP,因此我提供了复制和粘贴作为替代方案。 –