无需使用剪切 + 粘贴或复制粘贴即可向右或向左移动 Excel 中选定的单元格数据。使用箭头键移动数据会很棒

无需使用剪切 + 粘贴或复制粘贴即可向右或向左移动 Excel 中选定的单元格数据。使用箭头键移动数据会很棒

你好,我想知道如何运行 VBA 或宏(或任何其他更简单的方法)来移动仅限值将 Excel 中任何当前选择(从一行中的一个单元格到多个单元格以及跨行、跨列的选择)移到右侧一列或左侧一列。

简而言之,我正在为一家建筑公司准备一份预测表。它的工作方式与 Microsoft Project 相同,时间线行显示在多个月度列上。当项目时间线发生变化时,我需要能够选择一行数据、一个或多个单元格,并将选定的数据仅移动一列。如果能从上一个单元格位置删除数据就好了(本质上只是剪切和粘贴数据)

  1. 我无法使用复制粘贴,因为它会重复数据
  2. 使用四星光标选择并拖动边界框的边缘,获取公式、连接和格式

参见附图 - 想象一下 2019 年 4 月和 2019 年 5 月的两个 50% 分配需要推迟到 7 月开始。简单来说,我想选择这些单元格并仅移动数据 - 就像使用右箭头键(或左箭头键)仅移动数据一样,就像俄罗斯方块一样。

期待听到您的建议
在此处输入图片描述

答案1

这里有一个答案,尽管我认为这会给你带来更多的痛苦而不是快乐。使用ctrl+xctrl+进行剪切和粘贴v可能会省去很多麻烦。

在您的工作簿中创建两个模块。添加以下代码。运行 module1 以激活密钥交换,运行 module2 以将其关闭。打开时,您的左右箭头键将向右或向左移动数据并破坏旧单元格中的数据。公式将被删除。 谨慎使用

我建议制作按钮来激活这两个模块。

模块1

Sub shifter()
    Application.OnKey "{LEFT}", "LShift"
    Application.OnKey "{RIGHT}", "RShift"

End Sub

Function LShift()
    Selection.Offset(0, -1).Value2 = Selection.Value2
    Selection.Value2 = ""
    Selection.Offset(0, -1).Select

End Function

Function RShift()
    Selection.Offset(0, 1).Value2 = Selection.Value2
    Selection.Value2 = ""
    Selection.Offset(0, 1).Select
End Function

模块2

Sub Endshifter()
    Application.OnKey "{LEFT}"
    Application.OnKey "{RIGHT}"

End Sub

答案2

您想要的“选择性粘贴”功能吗?Excel 2007 中的“粘贴”下拉菜单如下所示:

在此处输入图片描述

我不明白为什么简单的剪切和粘贴对您不起作用(也许它会带有单元格突出显示/格式?但您并没有真正说这是您的问题),所以我不确定这是否能解决您的问题,但它提供了许多选项来优化您的粘贴。请注意,如果您不想复制数据,请使用剪切(Ctrl+ X)而不是复制(Ctrl+ C)。

答案3

如果我理解正确,您可以使用该Paste As Formula功能代替常规粘贴。剪切和粘贴后,点击CtrlFEnter。您还可以指定自定义快捷方式,但上述方法应该可以立即使用。

答案4

如果我没理解错的话,你一开始就不应该使用Cutand 。相反,你应该通过+ ,使用and 。这会将单元格移动到当前光标位置(上方和/或左侧)并根据你的选择移动单元格;你也可以对行/列执行此操作。这还会保留受更改影响的所有其他单元格的正确计算值(假设它们具有相对引用或绝对引用);如果你不想要自动效果,请使用。PasteCutInsert Copied CellsCtrlXContext Menu</kbd, EIndirect()

相关内容