救下急!关于引用不同表格单元格公式的问题...

CCXX2017 2017-08-29 09:35:49
这是我工作中遇到的问题,需求描述如下:
首先设r1和r2两个range对象,分别表示w1和w2工作表对象中的usedrange,同时,令i1,i2为r1,r2的最后一行,则
i1 = r1.Row + r1.Rows.Count - 1
i2 = r2.Row + r2.Rows.Count - 1

然后,假设任何一天,我的两张工作表的已使用range的最后行分别为第i1行和第i2行,而w1表中的内容每天都更新,而w2中的内容每周更新一次。
现在我需要解决的问题有两个:
1)每天要统计数据,那么w1已使用区域的最后那行中的某个单元格通过公式要引用w2表的数据,比如在w1表中第一列、第i+1行单元格中想通过公式引用w2(比如sheet2)表中的某些单元格的数据时,是否应该
用w1.cells(i1+1,1).fumulaR1C1="=SUM(sheet2!R[i1-5]C[2]:RC[2]"(w1表中每天在新的一行、(每天只统计一次)第一列的第一个单元格通过求和公式引用w2中第二列第i1-5行至第i1行的数据之和),但这个i1变量到求和公式中,显然会报错,正确的表达应该是怎样的呢?
2)如上条件,w1表每天更新一行,而w2表每周才更新行数,那么上述w1.cells(i1+1,1)与w2中引用的单元格的偏移位置肯定是变化的,这个偏移该怎么设置呢?
...全文
145 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
CCXX2017 2017-09-01
  • 打赏
  • 举报
回复
谢谢,问题已解决。
X-i-n 2017-08-31
  • 打赏
  • 举报
回复
写错了,应该是/6,实际数字按r1的倍数来
X-i-n 2017-08-31
  • 打赏
  • 举报
回复
赵老师有点像另一个论坛名人,键盘上只有三个键。要是方便的话,在这个问题上,演一下你这个方案? fumulaR1C1的值是一个string类型,脑子里不要去想这是一个公式,直接拼出一个string来就可以了,不过正好这个string是一个公式而已。
cells(i1+1,1).fumulaR1C1="=SUM(sheet2!R[i1-5]C[2]:RC[2]" 
肯定是个错误的公式,错在excel不认识i1-5是什么,把代码修改一下,变量单拿出来就行了
 cells(i1+1,1).fumulaR1C1="=SUM(sheet2!R[" & (i1-5) &  "-5]C[2]:RC[2]" 
第二个问题复杂一点,按新行的生成方式,有两种对应的流程: 1. 如果新行里的数据都是通过计算获得,那就不应该直接用“添加一个新行,并计算”,而是“根据B表生成A表数据,如果r2.rows.count/r1.rows.count>5则添加一个新行并进行计算,如果=5则无需任何操作(=5的情况也可以再计算一次,不过被操作的r1的行号应该是i,而不是i+1,或者直接从r1第一行算到最后一行)” 2. 如果新行里的数据有一部分需要手填,建议手工添加新行,然后才填上新行自动计算的数据(也可以遍历r1所有行重新计算所有自动计算的部分)
赵4老师 2017-08-30
  • 打赏
  • 举报
回复
在Excel中开始记录宏,手动完成所需功能,结束记录宏,按Alt+F11键,查看刚才记录的宏对应的VBA代码。

2,461

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧