如何在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 

因为它是工作表代码,所以安装和自动使用非常简单:

  1. 右键单击Excel窗口底部附近的选项卡名称
  2. select查看代码 – 这会popup一个VBE窗口
  3. 粘贴东西,closuresVBE窗口

如果您有任何疑问,请先在试用工作表上尝试。

如果您保存该工作簿,该macros将与它一起保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx

要删除macros:

  1. 调出上面的VBE窗口
  2. 清除代码
  3. 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必须启用这个工作!