c++ qstandarditemmodel 获取选中_Excel – 选中左边的算式列,右边列自动计算出结果...

有很多人问这个问题,如果在一列中写算式,如何在旁边列自动计算出结果?

有很多人会建议用 evaluate 函数来实现,我很早以前也写过这种方法,详情请参见

Excel 函数(一) – 用 evaluate 函数自动计算

但是,这种方式仍然要在结果列输入自定义的函数,并没有实现广大网友们要的真正自动化。

要完全自动化,必须使用 VBA,因为只有 VBA 才能根据事件来触发结果。

案例:

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

6fade1466f95aa73d8ea094374d3a675.png

这是最终完成效果:

8f494026fcd2706bc17746188037183a.gif

解决方案:

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, c + 1) = "=" & Cells(i, c) '在右边列出计算结果  End If Next End SubSub 清空() Dim j, k As Integer  k = 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
5dae1fca5222153e114d87162f5eaaaf.png

2. 保存后返回 Excel,选择菜单栏的“开发工具”-->“插入”-->“按钮”

98311100b9cfa9f4c8ba01cfdf82d5ea.png

3. 在弹出的指定宏对话框中选择刚才设置的“清空”作为宏 --> 确定

578530db937adb4190c7c3469ceb7c26.png

4. 将默认的按钮名称更改为“清空”

88962d98161318bf1cbb5dd148e6f714.png

5. 现在就已经完成了,这是演示效果:

8f494026fcd2706bc17746188037183a.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值