如何防止剪切和粘贴数据更改公式中的引用?


49

Google表格具有一项功能,如果您在公式中引用了数据单元格,然后从该单元格中剪切了数据并将其粘贴到新位置,则公式中的引用会更新为指向新的单元格位置。

我希望能够在不更改公式的情况下剪切和粘贴数据。

过去我做过一些丑陋的事情,涉及到使该INDIRECT()功能起作用的功能,但似乎有一种更简单的方法。有什么建议么?


2
有趣的是...我从未认为此功能是一个错误。数十年来,它在Excel中一直有效。
mhoran_psprep 2012年

1
您是否有时间检查给出的答案?也许您可以将其中之一标记为最佳答案。
Jacob Jan Tuinstra 2013年

1
下面回答了许多不同的问题。问题可以解决吗?我认为您的问题的一个示例是:单元格A2包含一个公式,例如“ = B1 + 5”。B1包含“ 42”。A2显示“ 47”,如预期的那样。但是您已经意识到B1不应包含“ 42”,C1应该具有“ 42”,而B1应该具有“ 58”。您单击B1,“剪切”,单击C1,粘贴。B1现在为空白(预期),C1现在为“ 42”(预期),但A2仍显示“ 47”,因为A2已自动更新为“ = C1 + 5”,以进行剪切和粘贴(不期望)。您想要的是A2保持“ = B1 + 5”。我对吗?
cesoid

Answers:


22

=$A$1如果(say)中的A1值发生更改,该表示法也可以自动移动。

唯一的安全解决方案是将您的所有引用都包含在中INDIRECT,例如=INDIRECT("$A$1"),甚至只是=INDIRECT("A1")

这两种解决方案的难点在于您拥有许多相同的公式,例如

=A1
=A2
=A3
...
=A99

通常,您将先填写,=A1然后复制粘贴(或使用自动填充向下拖动)以自动填写连续公式。但是,如果第一个公式不是=$A$1=INDIRECT("A1")则此技巧将不起作用(实际上,这$是为了-防止其自动更改)。

如果您有许多连续公式,则一种解决方案是:

  1. 照常创建公式(使用普通=A1填充和自动填充)
  2. 使用替换对话框(Ctrl+ H)并使用“在公式中搜索”将所有=A1=A2... 包裹=A99=INDIRECT("A1")等中。请注意,在进行查找和替换时,可以选择使用正则表达式。

更新的答案建议在新的Google电子表格中使用更好的查找和替换功能,该功能可以替换公式并使用正则表达式,
Motti Strom 2015年

1
您能否举例说明将所有单元格引用包装在具有INDIRECT的公式中的搜索/替换参数是什么?
迈克尔

您可以将INDIRECT与ROW()结合使用以使公式在当前行上运行。例如:= A1 + B1变为= INDIRECT(“ A”&ROW())+ INDIRECT(“ B”&ROW())
Evil Pigeon

31

在Google文档论坛中

选择单元格的范围。然后使用Ctrl+ C(复制;这应将单元格及其公式放入粘贴缓冲区中)。

现在将所选单元格拖动(悬停在所选内容的边缘,直到鼠标光标变为手形;现在可以拖动)到新位置。

返回到复制的单元格的原始左上角位置,并使用Ctrl+ V(粘贴)。

现在,您应该拥有两组引用相同单元格的公式。


6
这是保留公式的唯一答案。
amcnabb

3
同意-这是唯一正确的答案。
stevemidgley 2014年

1
谢谢!我很惊讶“拖动”和复制/粘贴之间有区别!
rcreswick

因此,如果要剪切和粘贴,则只需要选择范围+拖动部分,但是如果要复制,则需要其他额外的步骤来保留原始内容。
Mu Mind '18

2
更好的方法:复制工作表,从工作表的克隆中剪切出来,粘贴到原始工作表中所需的新位置。完成后,删除工作表的克隆。这样,引用不受影响。
ADTC

30

遇到了这个问题,发现了类似的问题,最终找到了一个Excel解决方案,该解决方案似乎可以在Google Spreadsheets中很好地工作。

对于您不想在粘贴上进行更改的单元格引用,只需$在每个部分之前添加即可。

所以G12会变成$G$12

我正在使用的电子表格中的一个单元格可以满足我的需求,如下所示:

 =$G$1&Sheet1!B3&Sheet1!A3&$G$2

1
这对我不起作用。请参阅下面的我的替代文件webapps.stackexchange.com/questions/22558/…–
Motti Strom

@Leonard,哇,语法太可怕了。反之则更为直观,即使用相对单元,$而默认单元为默认。
Pacerier 2014年

@Pacerier我完全同意您的观点,尽管它可以工作,但它可怕且难以阅读。我使用电子表格的频率不足以理解您的建议。您能详细说明一下吗?
伦纳德

@Leonard,我的意思是默认行为是不同的,所以$G$1&Sheet1!B3&Sheet1!A3&$G$2我们 代替了G1&Sheet1!$B$3&Sheet1!$A$3&G2
Pacerier,2014年

1
@grahamparks:然后投票,并可能发表评论为什么这不是一个解决方案。不要试图在答案中添加自己的评论。
ale

7

在Google Spreadsheets中,要剪切和粘贴单元格而不自动移动其公式,请使用Ctrl+ X剪切(或Ctrl+ C复制),以及Ctrl+ Shift+ V粘贴。

Shift告诉谷歌表独自离开你的公式。


仅供参考,如果您使用的Flycut(mac)之类的应用程序已激活CTRL + SHIFT + V快捷键,则它将与电子表格快捷键冲突,并且公式锁定将不起作用。禁用Flycut应用程序的快捷方式,或做之前刚刚退出它首先CTRL + SHIFT + V
Hlung 2014年

13
使用Shift修改粘贴似乎会使Google Spreadsheet粘贴值,而不是未修改的公式。
Matt McClure 2014年

4
这是不正确的-ctrl-shift-v只会粘贴公式的“值”。这将防止转置数据,但是结果单元格将包含静态值而非公式。
stevemidgley 2014年

1
不起作用,-1。
Pacerier 2014年

1
我从不削减。当您粘贴ctrl+ shift+ v,它总是会将这些值,即使你没有ctrl+ x上的源细胞。
备用字节


3

剪切(而不是复制)似乎对我有用,可能出于相同的原因,拖动选定的单元格也可以工作-即,它是相同的操作。这也是我知道不更改公式就粘贴到另一页的唯一方法。

如果您要执行“复制”而不是“移动”,请使用拖动方法(拖动之前先复制),或先将其复制到页面上的其他位置。


2

要将一系列单元格移动到Google表格中的新位置:

1.选择要移动的单元格范围
。2.将鼠标移至所选内容的任意边缘,直到光标变为手形
。3.将单元格拖动到新位置

这样就可以做- 移动它们 -因此所有单元格信息将保持原样。

ps。Google也已在此处指示此操作但他们没有说您可以从任何边缘拖动,仅从顶部开始拖动,这就是为什么我的说明更好的原因!:)同样要注意的是,您选择的单元需要相邻才能正常工作。


很好抓住!
marikamitsos

这里也提到相同的方法。仍然。对此进行了更好的研究和解释。
marikamitsos

1

执行公式的文本副本而不是单元格副本:使用鼠标选择公式文本,然后按CTRL + C。然后选择目标字段,然后按CTRL + V。这样可以保存公式


1
但是您将不得不为每个单元格重复此操作。...是否可以通过多个单元格进行文本复制?
Pacerier 2014年

0

最简单的方法是只选择要移动的所有单元格,然后将它们拖放到所需的位置。如果您在其他单元格中有公式引用了您移动的单元格的原始位置,则参考公式将自动更新为您移动的单元格的新位置。希望这可以帮助!(假设此操作在Excel中有效,但我只在Google表格中完成过)。



0

我只是查找并''(或我要复制的尽可能多的公式)替换'='的所有实例,以使所有公式变成纯文本。我复制并粘贴单元格,然后添加“ =”

注意:这可能不适用于庞大的工作表,因为编辑其他单元格可能会产生意想不到的后果,但通常可以满足我的目的。


0

这是另一个选择:

  1. 切换到“显示公式”模式(在“查看”菜单下)
  2. 复制所需区域
  3. 粘贴到一些外部文本编辑器中
  4. 进行一些更改-就像在某处添加空间一样简单
  5. 从外部文本编辑器复制公式
  6. 粘贴到工作表中的目标区域
  7. 关闭显示公式

尽管这似乎是一个漫长的过程,但实际上这只是一些关键操作。另外,在我的设置中,步骤4是必需的-如果没有此步骤,Sheets仍会像更新直接粘贴一样更新单元格的位置。YMMV。


0

在复制和粘贴目标INDIRECT()后,使用Works 可以很好地保留引用的绝对位置,但是问题在于,在复制公式时,它还保留了绝对位置,这意味着您无法轻松地将公式扩展为覆盖较大的范围使用范围。

解决方案是INDIRECT()ROW(),组合COLUMN(),并ADDRESS()根据公式的单元格以编程方式生成目标单元格的位置。

在最简单的情况下,例如当目标单元格具有固定的列并且始终与公式保持在同一行时,可以按以下步骤进行操作:

INDIRECT("A"&ROW())

为了从公式单元格引入动态偏移量,可以使用ADDRESS()

INDIRECT(ADDRESS(ROW()-1,COL()-4))

在下面的屏幕截图中,中的公式B1:E1扩展到了下面的16行,然后A7:A10剪切了其中的数字序列并将其粘贴下6个单元格。如您所见,最简单的公式会自动调整并取消同步,而天真的使用INDIRECT()并不能正确地在所有行上进行推断,但是INDIRECT()与行和列位置的程序化检索一起使用的两个公式能够维护它们的引用:

示范图片


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.