ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: qhmpv

[求助] 有关VBA公式的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-6-3 10:31 | 显示全部楼层
本帖最后由 语虚何以言知 于 2020-6-3 10:32 编辑
qhmpv 发表于 2020-5-26 10:09
版主,你这个不是我要的结果,可能是我说的不够清楚吧我再描述一下试试。
   比如单元格A11内输入公式 = ...

我明白你的意思,你的需求是基于公式思维来设计的,如果用编程思维就有问题
a1:a10  有数字

公式思维:
1、a11求和
2、a11前面插入3行
3、原a11变为a14,还是求a1:a10

编程思维:
1、a11赋值="sum(xxx:xxx)"  实现求和
2、代码插入3行
3、原a11变为a14,还是求a1:a10

编程思维是用代码插入3行,实现你要的结果,但是题主你的要求的是手工插入3行,然后让之前第一步录入的代码自动变化?


TA的精华主题

TA的得分主题

发表于 2020-6-3 10:48 | 显示全部楼层
qhmpv 发表于 2020-6-3 07:45
那个绝对引用不是我写的啊,我的意思不知道你明白了没有。

完全不明白

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-4 20:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
语虚何以言知 发表于 2020-6-3 10:31
我明白你的意思,你的需求是基于公式思维来设计的,如果用编程思维就有问题
a1:a10  有数字

你还是没明白,lwwy1981这位兄弟明白了。为什么说你没明白
是的,公式: a11求和,求和区域不是问题,问题在于当你前面插入行后,公式会随着行的插入往下。
          而VBA要解决的是编程输入的是某个单元格,当前面插入N行时,这个单元格位置其实是没有变化的,D10还是D10,怎么让你要统计的这个单元格随着行的插入而变化才是我要实现的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-4 20:18 | 显示全部楼层
语虚何以言知 发表于 2020-6-3 10:31
我明白你的意思,你的需求是基于公式思维来设计的,如果用编程思维就有问题
a1:a10  有数字

你还是没明白,编程a11赋值,前面插入N行,a11还是a11,怎么让它随着插入行,删除行而上下变化才是我想实现的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-4 20:19 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-6-4 20:46 | 显示全部楼层
qhmpv 发表于 2020-5-29 12:32
黄色格子里的是单元格直接输入的公式,当B1-B10里面随机插入N行,黄色格会随着插入的行下移,但是始终是在 ...

你的问题描述太细节了。你应该把整体方案搞出来。
例如:如果你要算B列从B1到B列最下单元格之间的求和,那就简单:
Function sumB()
Dim rngB As Range
Set rngB = Range("B1040000").End(xlUp)
sumB = Application.Sum(Range("B1:B" & rngB.Row))
End Function
这样,你在VBA其他模块调用sumB函数时,得到的就是动态的黄色单元格求和结果。

TA的精华主题

TA的得分主题

发表于 2020-6-4 20:54 | 显示全部楼层
本帖最后由 lwwy1981 于 2020-6-4 20:58 编辑
  1. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)  '当表格发生变动时触发以下内容
  2. r = WorksheetFunction.Match("合计", Range("A:A"), 0)  '查找变化以后"合计"所在的行
  3. If Target.Row >= r Then Exit Sub   '判断变化的行,如果在合计行之后,就停止执行,如果在合计行之前则执行下面
  4. Cells(r, 3) = WorksheetFunction.Sum(Range("c2:c" & r - 1))  '合计行所在的第三列计算从C2到合计所在行的上一行的合计数
  5. End Sub
复制代码

qhmpv 发表于 2020-6-3 09:58
你这个好像可以哎,这个也是实在太难表述了,我好好看看你这个程序,万分感谢!!


只有我懂你,你还不给我送花花

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-6-4 21:10 | 显示全部楼层
bobfifth 发表于 2020-6-4 20:46
你的问题描述太细节了。你应该把整体方案搞出来。
例如:如果你要算B列从B1到B列最下单元格之间的求和, ...

做好的xlsm

试试_0604.zip

11.86 KB, 下载次数: 91

TA的精华主题

TA的得分主题

发表于 2020-6-5 09:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
qhmpv 发表于 2020-6-4 20:18
你还是没明白,编程a11赋值,前面插入N行,a11还是a11,怎么让它随着插入行,删除行而上下变化才是我想实 ...


编程a11赋值,:vba单元格赋值,实现方法:工作表实践触发?单独运行过程?前面插入N行,:怎么插?手动插入?代码插入?
a11还是a11,:????
怎么让它随着插入行,删除行而上下变化才是我想实现的。:联系上文,估计吧,是要在工作表界面手动插行?






这就存在一个问题,你的需求整个过程是怎样的:

打开工作簿后用什么方式代码给a11赋值,怎么插入行,a11的公式要随之变化?

还是提示你的解决问题的思路是编程思维,不要停留在公式时代



TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-5 09:27 | 显示全部楼层

你这个其实也是公式,那我就直接公式就行,而且你这个插入一个数字还不会自动加。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-18 11:36 , Processed in 0.045628 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表