Excel – 选中算式列,右边列自动显示计算结果

有很多人问这个问题,如果在一列中写算式,如何在旁边列自动计算出结果?
有很多人会建议用 evaluate 函数来实现 , 我很早以前也写过这种方法,详情请参见
但是,这种方式仍然要在结果列输入自定义的函数,并没有实现广大网友们要的真正自动化 。
要完全自动化 , 必须使用 VBA,因为只有 VBA 才能根据事件来触发结果 。

案例:

如下表所示,A 列是随机列出的一些算式 。要求:只要选中 A 列的任意非空区域,就会在 B 列的对应区域自动得出结果 。
Excel – 选中算式列,右边列自动显示计算结果

【Excel – 选中算式列,右边列自动显示计算结果】这是最终完成效果:
Excel – 选中算式列,右边列自动显示计算结果

解决方案:

1. 按 Alt F11 打开 VBE,输入以下代码:
Sub Worksheet_SelectionChange(ByVal Target As Range) Dim i, n, r, c As Integer, calculator '声明变量 calculator = Selection 'calculator为选中的单元格区域r = Application.WorksheetFunction.Max(Selection.Cells(1).Row, "2") '获取选中区域的第一个行号,如果行号小于2 , 则从2开始n = Selection.Cells(Selection.Cells.Count).Row 'n为选中区域的最后一个行号c = Selection.Cells.Column '获取选中区域的列号 For i = r To n '历遍选中的区域If Cells(i, c) <> "" Then '如果选中的单元格不为空Cells(i, c1) = "=" & Cells(i, c) '在右边列出计算结果End If Next End SubSub 清空() Dim j, k As Integerk = Sheet1.Range("b" & Sheet1.Rows.Count).End(xlUp).Row '找出B列非空的最后一个行号For j = k To 2 Step -1 '从最后一个非空行向上历遍至第2行Sheet1.Range("B" & j).Clear '清空B列除B1之外的所有单元格 Next End Sub
Excel – 选中算式列,右边列自动显示计算结果

2. 保存后返回 Excel,选择菜单栏的“开发工具”-->“插入”-->“按钮”
Excel – 选中算式列,右边列自动显示计算结果

3. 在弹出的指定宏对话框中选择刚才设置的“清空”作为宏 --> 确定
Excel – 选中算式列,右边列自动显示计算结果

4. 将默认的按钮名称更改为“清空”
Excel – 选中算式列,右边列自动显示计算结果

5. 现在就已经完成了,这是演示效果:
Excel – 选中算式列,右边列自动显示计算结果

相关经验推荐