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

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

我过去做过一些令人毛骨悚然的事情,涉及到INDIRECT()函数来解决此功能,但是似乎有一种更简单的方法。有什么建议吗?

评论

有趣的是...我从来没有认为此功能是一个错误。数十年来,它一直在Excel中工作。

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

下面回答了许多不同的问题。问题可以解决吗?我认为您的问题的一个示例是:单元格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”。我说的对吗?

#1 楼

如果更改(例如)=$A中的值,则A1表示法也可以自动移动。

唯一的保证解决方案是将所有引用括在INDIRECT中,例如=INDIRECT("$A")或什至只是=INDIRECT("A1")

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

=A1
=A2
=A3
...
=A99


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

如果有很多连续的公式,一种解决方案是:


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


评论


更新了答案,建议在新的Google Spreadsheets中使用更好的查找和替换方法,该方法可以替换公式并使用正则表达式,

– Motti Strom
15年1月8日在18:33

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

–迈克尔
2015年4月8日,下午5:55

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

–邪恶的鸽子
18/12/5在2:28

#2 楼

当您将鼠标悬停在选定的单元格上并且光标变为“手”时,可以拖动这些单元格并保留其引用。下面的详细说明:

从Google文档论坛:

选择单元格的范围。然后使用Ctrl + C(复制;将单元格及其公式放在粘贴缓冲区中)。现在拖动(将鼠标悬停在所选内容的边缘,直到鼠标光标变为手形;现在)您可以将选定的单元格拖动到新位置。

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

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

评论


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

–amcnabb
2014年9月15日18:13

同意-这是唯一正确的答案。

–stevemidgley
2014年12月9日20:15

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

– creswick
18年1月23日在22:27

警告:这会破坏引用。只有在没有对要拖动的单元格的引用时,才可以这样做。否则,您必须手动修复所有参考。

– ADTC
19年1月7日在6:52

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

– ADTC
19年1月7日在7:00

#3 楼

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

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

所以G12会变成$G

我正在使用的电子表格中的一个单元满足了我的需要,看起来像这样:

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


评论


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

– Motti Strom
13-10-15在23:38

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

–起搏器
2014年12月20日在7:58

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

–伦纳德
2014-12-20 14:40

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

–起搏器
2014年12月20日15:15



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

–ale
17年4月11日在19:17

#4 楼

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

Shift告诉Google表格不要理会您的公式。

评论


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

–隆
2014年7月30日18:13



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

–马特·麦克卢尔(Matt McClure)
2014年8月26日15:30

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

–stevemidgley
2014年12月9日20:14在

不起作用,-1。

–起搏器
2014年12月20日在7:48

我从不削减。使用ctrl + shift + v粘贴时,即使您在源单元格上执行了ctrl + x,它也始终复制值。

–备用字节
16-2-16在21:17



#5 楼

解决方法与在Excel中相同:

复制并粘贴数据,然后返回并从原始位置删除它。

#6 楼

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

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

#7 楼

这是另一个选项:


切换到“显示公式”模式(在“视图”菜单下)
复制所需区域
在某些外部文本编辑器中粘贴
>进行一些更改-就像在某处添加空格一样简单
从外部文本编辑器复制公式
粘贴到工作表的目标区域中
关闭显示公式

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

评论


我不敢相信它是如此棘手,我不明白为什么它必须如此困难,但这是唯一有意义的答案。很好,谢谢

–克里斯蒂安·特拉伊纳(CristianTraìna)
4月3日12:30

#8 楼

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

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

这会执行应做的操作-移动它们-因此所有单元格信息将保持原样。

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

评论


很好抓住!

– marikamitsos
19-10-10在10:09

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

– marikamitsos
19-10-10在10:14

#9 楼

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

评论


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

–起搏器
2014-12-20 7:49



#10 楼

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

注意:这可能不适用于庞大的工作表,因为编辑其他单元格可能会产生意想不到的后果,但通常对我而言是有效的。

#11 楼

使用INDIRECT()非常适合于在复制和粘贴目标后保留引用的绝对位置,但是问题在于,在复制公式时,它还保留了绝对位置,这意味着您不能轻易地将公式扩展为覆盖一个

解决方案是将INDIRECT()ROW()COLUMN()ADDRESS()结合使用,以基于公式的单元格以编程方式生成目标单元格的位置。

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

INDIRECT("A"&ROW())

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

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

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



#12 楼

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

#13 楼


用鼠标选择单元格
复制剪贴板到剪贴板
通过捕获组的边缘,用鼠标将选定的单元格移动到新位置
从剪贴板粘贴到您刚才的空白处将所有内容从

移开了

#14 楼

当光标位于单元格或范围上时,您可以按F4键以循环浏览各种绝对引用选项。在Mac和Windows上均可使用。