如何在Excel中将一个单元格的更改添加到另一个单元格,而不使用VBA?
所以我有一个单元格,说A1。 它包含一个文本。 如果以任何方式更改此文本,单元格A2将包含更改。 如果再次改变,则以下面的方式简单地将改变添加到单元格A2。
A1:从不A2:从不
A1:会A2:永远不会
A1:让A2:永远不会,让
A1:你A2:永远不会,让,你
A1:失望A2:永远不会,让,你,失望
基本上,对单元格的更改与逗号一起添加到另一个单元格。 噢,我需要在没有 VBA的情况下进行pipe理。 任何方式,我可以做到这一点?
谢谢你的帮助。
没有VBA,你可以这样做。
首先在Excel中启用迭代计算。
转到文件—> Optoins —->公式并在计算选项下勾选启用迭代计算。
现在,将此公式添加到A2,而A1是空的。
=SUBSTITUTE(A2 & IF(A1 <>"",",","") &A1,"0,","")
这就是所有,开始在A1中input,你会在A2中看到一个正在运行的句子。
所以要回答你的问题:
噢,我需要在没有VBA的情况下进行pipe理。 任何方式,我可以做到这一点?
是的,我们可以做到这一点。
但是,你应该这样做? 推荐是不行的。 按照Scott和Gary的学生的build议使用VBA。 这个带有循环引用的公式将起作用,并给你预期的结果,但只要你开始添加循环引用的其他公式,你的工作表将变得更难以维护。 迭代是难以理解和控制,对于文本处理,肯定是一个矫枉过正
这是一个使用VBA的例子。 如果更熟练的用户使用非VBA解决scheme,请忽略此答案。 将下面的事件macros放在工作表代码区域中:
Private Sub Worksheet_Change(ByVal Target As Range) Dim A1 As Range, A2 As Range, rint As Range Set A1 = Range("A1") Set A2 = Range("A2") Set rint = Intersect(Target, A1) If rint Is Nothing Then Exit Sub Application.EnableEvents = False If A2 = "" Then A2 = A1 Else A2 = A2 & ", " & A1 End If Application.EnableEvents = True End Sub
因为它是工作表代码,所以安装和自动使用非常简单:
- 右键单击Excel窗口底部附近的选项卡名称
- select查看代码 – 这会popup一个VBE窗口
- 粘贴东西,closuresVBE窗口
如果您有任何疑问,请先在试用工作表上尝试。
如果您保存该工作簿,该macros将与它一起保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx
要删除macros:
- 调出上面的VBE窗口
- 清除代码
- closuresVBE窗口
要了解有关macros的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
要了解有关事件macros(工作表代码)的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/event.htm
macros必须启用这个工作!