在Excel中复制和粘贴时如何保持公式正常工作?

时间:2019-06-27 10:54:05

标签: excel excel-formula

除了创建额外的列之外,公式中是否还有其他方法可以引用表的第一个单元格,以便我可以复制和粘贴表,并且公式仍然有效?

=VLOOKUP($A$1, $E$1:$F$12, 2, 0) for B2:B8

Name1      Rate
Sunday     0.1
Monday     0.1
Tuesday    0.1
Wednesday  0.1
Thursday   0.1
Friday     0.1
Saturday   0.1
Sunday     0.1

Name1是A1。

这应该足够了,但以防万一在此链接处有示例: https://docs.google.com/spreadsheets/d/19z-LLTj4pcvDCUaoq72qcBicHsT1Gq5Z9i8haPLRIsI/edit?usp=sharing

4 个答案:

答案 0 :(得分:3)

实际上不确定您的“公式仍然有效”是什么意思,但希望能有所帮助。在您的示例中,您使用对单元格的绝对引用。您可以在列名和行号前用“ $”号识别它。如果删除这些标志,您的参考将成为相对的。可以在HERE上找到有关该主题的更多信息。

UPD。因此,您需要混合使用绝对引用和相对引用。这是可以完成的。将其作为单个单元格数组公式(Ctrl + Shift + Enter)放入B2单元格。将其传播到第一个表格-您可以将其复制到任何地方:

=VLOOKUP(INDIRECT(ADDRESS(MAX((B$1:B1="Rate")*ROW($A$1:A1));COLUMN()-1));$E$1:$F$12;2;0)

通过使用“ Rate”标题搜索最新的行来工作。因此,请确保它始终存在。如果标题可能会更改-您可能会对VBA上的用户定义公式感兴趣。

$A$1:A1并不重要,因为只需要获取不同行的数字即可。 $E$1:$F$12是您的固定表。

答案 1 :(得分:1)

我不认为这正是您要寻找的东西,而是拼凑起来形成一个问题:“ 是否可以引用表的第一个单元格?” >

是的!

您可以将索引与1,1和表名一起使用。请参见下面的示例,其中包含一个名为 Table1 的示例表以及用于在第一行和第一列=INDEX(Table1,1,1)中提取值的公式。如果需要标题,则可以将公式修改为:=INDEX(Table1[#Headers],1,1),它将返回“ MOND”。

再次,可能不是您要查找的内容,但是如果有人进行搜索,他们可能会发现这很有用。

enter image description here

答案 2 :(得分:0)

是的,您可以选择复制粘贴公式,但是您认为必须正确冻结公式。

您已经完全冻结了 $ A $ 1 单元格,并且对所有完全不正确的单元格进行了复制。您已将其冻结为 $ A1 更正了您的公式的示例: = VLOOKUP($ A1,$ E $ 1:$ F $ 12,2,0)

冻结意味着创建相对单元参考。

请参考下面的链接以完全了解相对和绝对单元格引用

https://www.ablebits.com/office-addins-blog/2015/11/25/relative-absolute-reference-excel/

答案 3 :(得分:0)

最后,我决定使用额外的列,但是给出了一个公式示例,该公式允许将表复制到其他列。

{=INDIRECT(SUBSTITUTE(ADDRESS(1, COLUMN()-1, 4), "1", "")&MIN(IF(OFFSET(L:L, 0, -1)<>"", ROW(OFFSET(L:L, 0, -1)), 9999999)))}

细分

  • SUBSTITUTE(ADDRESS(1, COLUMN()-1, 4)将第1列的列字母字符串从左移,因此如果我们在L:L列中,则将返回"K"。对于其他列,需要将COLUMN()-1修改为COLUMN()-2COLUMN()-3
  • OFFSET(L:L, 0, -1)返回K:K
  • MIN(IF(OFFSET(L:L, 0, -1)<>"", ROW(OFFSET(L:L, 0, -1)), 9999999))

等效于

  • MIN(IF(K:K<>"", ROW(K:K), 9999999))返回列K:K中第一个非空单元格的行号
  • 公式是数组公式

这项工作在以下条件下提供:

  1. 表与原始列不共享。
  2. 所讨论的表格上方没有任何内容。