Vba 我是否可以复制精确的值,而不是在EXCEL中的多行公式中引用另一个表?

Vba 我是否可以复制精确的值,而不是在EXCEL中的多行公式中引用另一个表?,vba,excel,Vba,Excel,我希望公式中对另一页的引用替换为实际值,而不是引用。我不能用特殊副本做它,因为它在公式中,我想做几行。有可能吗?先谢谢你 Year Inflated Price Price Inflation 1990 =(E9*70%)*Sheet2!C3 122 0.28888 1991 =(E10*70%)*Sheet2!C4 125 0.36983 1992 =(E11*70%)*

我希望公式中对另一页的引用替换为实际值,而不是引用。我不能用特殊副本做它,因为它在公式中,我想做几行。有可能吗?先谢谢你

Year Inflated Price Price Inflation 1990 =(E9*70%)*Sheet2!C3 122 0.28888 1991 =(E10*70%)*Sheet2!C4 125 0.36983 1992 =(E11*70%)*Sheet2!C5 128 0.45078 1993 =(E12*70%)*Sheet2!C6 131 0.53173 1994 =(E13*70%)*Sheet2!C7 134 0.61268 1995 =(E14*70%)*Sheet2!C8 137 0.69363 1996 =(E15*70%)*Sheet2!C9 140 0.77458 1997 =(E16*70%)*Sheet2!C10 143 0.85553 1998 =(E17*70%)*Sheet2!C11 146 0.93648 1999 =(E18*70%)*Sheet2!C12 149 1.01743 2000 =(E19*70%)*Sheet2!C13 152 1.09838 年通货膨胀 1990年=(E9*70%)*2页!C3 122 0.28888 1991年=(E10*70%)*2页!C4 125 0.36983 1992年=(E11*70%)*表2!C5 128 0.45078 1993年=(E12*70%)*2页!C6 1310.53173 1994年=(E13*70%)*2页!C7 134 0.61268 1995年=(E14*70%)*2页!C8 137 0.69363 1996年=(E15*70%)*表2!C9 140 0.77458 1997年=(E16*70%)*表2!C10 1430.85553 1998年=(E17*70%)*表2!C11 146 0.93648 1999年=(E18*70%)*表2!C12 149 1.01743
2000=(E19*70%)*表2!C13 152 1.09838是的,您可以这样做-尽管有点棘手-请参阅下面的说明

然而,事先快速警告——在任何公式中使用值通常不是最佳做法。已经在看
=(E9*70%)*Sheet2了!C3
70%
不应在公式中,而应在外部假设单元格中!否则,这是一个隐藏在公式中的假设——当你以后查看你的文件时——或者有人审核它时——你将很难找到它——并且知道你为什么这么做

同样的道理显然也适用于你的意图,也就是说,如果你现在也用硬编码的通胀率取代联系通胀率,这将再次成为某种隐藏的假设

无论如何,足够多的“说教”(抱歉,没办法!),如果你还想这么做,下面是方法:

  • 在新列中,输入要替换的公式部分,并让Excel计算该部分。即,如果要更换,
    Sheet2!C3
    在第一列中,将公式
    =Sheet2!C3
    在此新列中-并将其复制下来
  • 将公式从A1样式更改为R1C1样式。要执行此操作,请转到文件->选项->公式->使用公式并选中R1C1引用样式:
  • 你的公式
    =(E9*70%)*Sheet2!C3
    现在看起来像
    (RC[+2]*70%)*Sheet2!R[-6]C[1]
    。R1C1样式的美妙之处在于,现在整个列中的相对引用都是相同的,也就是说,检查下面的行,您会发现相同的公式

    现在,您可以使用“替换”从公式中删除要替换为以下值的部分:
  • 选择整个列
  • 在“替换”对话框(Ctrl-H)中,输入要替换的公式部分,例如,
    ~*Sheet2!R[-6]C[1]
    -请注意,您必须将
    *
    引用为
    ~*
  • 按全部替换

  • 现在选择并复制步骤2中支持列中的值
  • 选择原始列并使用“粘贴特殊->值”和选项“乘法”:
  • 删除支撑柱并将参照样式设置回A1

  • 完成了

    您的请求不是很清楚:您可能需要一个VLOOKUP:它无法让您从列表中获取结果。i、 e:(A1=1 B1=90%,A2=2,B2=85%,…);VLOOKUP(2;“A:B”2;false)将返回85%(自2匹配A2以来B2的内容)。我非常感谢您……这是迄今为止我得到的比您更好的答案。。。