有没有办法使公式返回的数字成为值而不使用剪切和粘贴方法。
因为我每天必须在大约 100 个不同的单元格上执行此操作。因此,剪切和粘贴不是一种可行的方法。有没有捷径或一些奇怪的方法可以避免这种情况。
为了简化...我需要 B1 = A4,然后我将更新 A4 添加新的天数数据,然后我需要 B2 = A4 - B1 的旧值。
为了实现这一点,B1 需要变成一个值,而不是引用 A4 的公式,因为我需要能够每天更新 A4。因此,每天之后,下一个单元格都需要变成一个值。
记住我不能一遍又一遍地复制粘贴
有人能帮我吗!
答案1
假设列乙和细胞A4从完全空白开始。将以下事件宏放置在工作表代码区域中:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim A4 As Range, B1 As Range, n As Long
Set A4 = Range("A4")
Set B1 = Range("B1")
If Intersect(A4, Target) Is Nothing Then Exit Sub
Application.EnableEvents = False
If B1 = "" Then
B1 = A4
Else
n = Cells(Rows.Count, "B").End(xlUp).Row
Cells(n + 1, "B").Value = Cells(n, "B").Value - A4
End If
Application.EnableEvents = True
End Sub
因为它是工作表代码,所以很容易安装并自动使用:
- 右键单击 Excel 窗口底部附近的选项卡名称
- 选择查看代码-这将打开一个 VBE 窗口
- 粘贴内容并关闭 VBE 窗口
如果您有任何疑虑,请首先在试用工作表上尝试一下。
如果您保存工作簿,宏将随之保存。如果您使用的是 2003 以后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx
到消除宏:
- 调出如上所示的 VBE 窗口
- 清除代码
- 关闭 VBE 窗口
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
要了解有关事件宏(工作表代码)的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/event.htm
必须启用宏才能使其工作!
答案2
通过具有此类固定模式的东西,人们可以创建一个命名范围(“NR”),使用相对引用,并在创建命名范围时仔细选择活动单元格,然后每天使用它来粘贴值。
我的意思是set pattern
,如果 7 月 1 日“发生在”单元格 B1、H4 和 XX9 中,那么 7 月 2 日就发生在这些单元格的正下方:B2、H4 和 XX10。以此类推,直到任何给定月份。第二天绝不会发生在 B2、H38、XX10 中。
您可以在公式编辑栏左侧的框中选择一个命名范围。显示活动单元格的那个。选择后,您只需Copy
,然后Paste|Special|Values
一步即可完成。因此,在框中选择命名范围,然后复制并粘贴。全部完成。
为了使其工作,请使用相对引用(没有 $B$1:使用 B1),这样如果在 B1 中它就会执行该操作,但如果选择了 B2,它就会执行 B2 操作。
实现该功能的另一个步骤是在创建 NR 期间将第一个单元格设为活动单元格。如果您是其下方的单元格,它将选择 B2,而不是 B1!
以任何方式创建列出范围内单元格的字符串,即使您必须输入所有“大约一百个”单元格地址。只需一次。利用将字符串放在一起的大量技巧可以提供帮助。完成后,不要通过检查小段文本来检查它!选择它并查看它是否选择了所有正确的单元格。通过这种方式进行准确检查要容易得多:类似于比较两页,逐个字符查看它们是否相同,而不是将一页放在另一页上,将它们放在灯光下,看看是否有任何差异。后者不仅更容易,而且更准确。
在 NR 函数之外创建字符串,然后将其复制并粘贴到新 NR 的值框中。无需在普通电子表格页面的简单、工具丰富的环境之外进行输入。
最后,Windows 的一个怪异之处,不是 Excel 的:NR 中的最后一个单元格地址是它将从中开始,而不是第一个。如果您TAB
通过,它将转到下一个第一个,但是...什么?因此列出以 #2、#3、... #last one、#1 开头的单元格,它将选择您希望首先作为活动单元格的单元格。
在这里,这对您的复制和粘贴无关,只对“您所在的位置”开始进一步的工作(完成后)有影响。不过,其他用途,其他电子表格,考虑一下可能会很方便。
重申一下,每天您都会在要粘贴值的单元格中选择一个单元格,然后选择范围,然后复制并粘贴。就这样。无需宏,因此无需学习,并且如果发生任何变化,可以轻松编辑或添加范围。