如何在 Excel 中将绝对单元格引用临时复制粘贴为相对引用?

如何在 Excel 中将绝对单元格引用临时复制粘贴为相对引用?

在 Excel (2007) 中,复制包含绝对引用的单元格(例如:)时$A$3,绝对引用保持不变。这是设计使然,也是使用绝对引用的原因。

问题 - 但是有时我想复制堵塞单元格(包含绝对引用,也可能包含相对引用),然后粘贴它们,并将绝对引用正确移动到新块。也就是说,我希望绝对引用在复制时表现得像相对引用,但在最终复制结果中仍然是绝对引用。

例子 - 在示例截图中,我想向下复制块 A2:B3。复制后,我基本上想=$A$3改变 B3 ( ) 中的公式,使其引用其左侧的单元格,例如,=$A$11当复制到 B11 时,变为屏幕截图底部所示。

Excel 中的示例

解决方法——我找到了一种解决方法,方法是:

  1. 复制整个工作表(按住 Ctrl 键并将工作表选项卡拖到新位置),
  2. 然后切割(ctrl-X)新工作表中的相关单元格块
  3. 粘贴(ctrl-v)到原始工作表中。
  4. 最后删除新的临时工作表(右键单击工作表选项卡并删除)。

问题 - 但对我来说,操作太多了。有没有更简单的方法(也许是一些隐藏的选择性粘贴选项)?

答案1

您可以尝试为此编写一个宏。excel 有一个非常好的宏录制工具,您也可以使用它,然后根据需要运行它(当然,前提是您首先对程序进行一些更改)

dim firstLetter as String 
dim secondLetter as String 
dim firstNumber as integer 
dim secondNumber as integer 
dim firstReference as string 
dim secondReference as string 
dim contents as string 
firstLetter = inputbox("Where's the first column? (it's letter)") 
firstNumber = inputbox("And what's the first row? (just the number)") 
secondLetter = inputbox("What column is this going to be moved to? (the letter only.)") 
secondNumber = inputbox("And what row? (the number.)") 
contents = range(firstletter + cstr(firstnumber)).formula 
range(secondletter + cstr(secondnumber)).formula = contents 

答案2

我找到了解决重复问题的办法。

问题:从起始单元格 B2 复制选择并将其放置在起始单元格 P2 上。

  1. 创建新工作表。
  2. 从原始工作表中复制所有要复制的内容,并将其粘贴到新工作表中的同一起始单元格中(如果您选择的矩形从 B2 开始,则将其粘贴到新工作表 B2 中)
  3. 将新工作表中的该选择移动到右侧的新起始单元格(将其移动到起始单元格 P2)。
  4. 复制选择。
  5. 将选择内容粘贴到原始工作表的右侧新起始单元格 (P2) 上。

答案3

如果我尝试按照步骤从新工作表中剪切和粘贴,我发现在复制到新位置时公式中的所有引用(包括相对引用)都保持不变。事实上,在 Excel 2010 中,我发现在剪切和粘贴公式后,第一行和第一列包含指向旧工作表的链接,但其他行和列引用新工作表,这看起来像是一个错误??

如果您想要复制公式块并保持所有引用相同,您可以按 Ctrl+`(反引号)显示公式,然后单击剪贴板任务窗格上的图标进行复制和粘贴(使用主页选项卡上剪贴板部分的小箭头激活)。如果这不是您想要实现的,一个简单的示例会有所帮助。

答案4

以下步骤将比编写自己的宏更简单,并且可以实现最终结果。

是的,我知道我没有使用绝对单元格引用,但如 OP 的示例所示,您不需要它。

选择要复制的范围

在此处输入图片描述

然后从粘贴下拉菜单中选择公式选项,如下所示

在此处输入图片描述

我已经测试过它并且可以在 Excel 2007 和 2010 中运行。尽情享受吧 :)

相关内容