ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 日报累计数公式替换

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-5-17 15:50 | 显示全部楼层
mx99252 发表于 2024-5-17 15:29
有个问题,B7是生成新表后,填入C5后的才是最新的数据,这样带过去的还是前一天的数没有更新,我用indire ...

这个表对你来讲每天用,对每一个数据都很熟悉了。对我来说好像依然很陌生。
如果你想把你要的功能实现,就要把计算过程及数据逻辑说清楚,可以实现的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-17 16:40 | 显示全部楼层
longwin 发表于 2024-5-17 15:50
这个表对你来讲每天用,对每一个数据都很熟悉了。对我来说好像依然很陌生。
如果你想把你要的功能 ...

这个表就是每天需要新建一张当天的,除了带公式的需要累加的数据,其他数据是当天填报,其中月平均出租率,需要在当天填完C5后,将B7的数据和当日出租率填入'出租率'表中,以计算A21的平均出租率,当天G8的数据去引用'出租率'中的A21。另我试了下,比如今天要建立5.17的表格,需要替换公式中的表名5.15为5.16,但是如果表中基础数据或文本出现了5.15这个数,也同样会被替换成5.16....

TA的精华主题

TA的得分主题

发表于 2024-5-17 17:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
mx99252 发表于 2024-5-17 16:40
这个表就是每天需要新建一张当天的,除了带公式的需要累加的数据,其他数据是当天填报,其中月平均出租率 ...

这样改一下,就会不会把数值替换掉了:

Sub test()
rq0 = CStr(Month(Now())) & "." & CStr(Day(Now())) '当前日期 0
rq1 = Split(Sheets("简版").[B4].Formula, "'")(1)  '从简版表公式中找到当前最后一个表名 1
rq2 = Split(Sheets(rq1).[I8].Formula, "'")(1) '从最后一个表的公式中找到引用的前一个个表名 2
If rq0 = rq1 Then
    MsgBox "当前表已是最新日期,无需重新生成!"
    Exit Sub
Else
    Set sh = ThisWorkbook.Sheets(rq1)
    sh.Copy Before:=sh
    Set sht = ActiveSheet
    sht.Name = rq0
    sht.[A2] = "填表时间:" & Month(Now()) & "月" & Day(Now()) & "日"
    For Each cell In sht.UsedRange
    If cell.HasFormula Then
        If InStr(1, cell.Formula, rq2) > 0 Then cell.Formula = Replace(cell.Formula, rq2, rq1)
    End If
    Next
    For Each cell In Sheets("简版").UsedRange
    If cell.HasFormula Then
        If InStr(1, cell.Formula, rq1) > 0 Then cell.Formula = Replace(cell.Formula, rq1, rq0)
        If InStr(1, cell.Formula, "#REF") > 0 Then cell.Formula = Replace(cell.Formula, "#REF", rq0)
    End If
    Next
    Sheets("简版").[A2] = "填表时间:" & Month(Now()) & "月" & Day(Now()) & "日"
   
    ll = CInt(Split(rq0, ".")(1))
    Sheets("出租率").Cells(20, ll + 1) = sht.[B7]
    Sheets("出租率").Cells(21, ll + 1) = sht.[B7] / 1499
   
End If
MsgBox "OK!"
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-21 09:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-5-22 15:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
longwin 发表于 2024-5-17 17:01
这样改一下,就会不会把数值替换掉了:

Sub test()

老师,假如我要每天生成一张表,要如何修改程序,比如我星期天休息,星期一要填星期天的数据

TA的精华主题

TA的得分主题

发表于 2024-5-22 15:55 | 显示全部楼层
日月星梭 发表于 2024-5-22 15:40
老师,假如我要每天生成一张表,要如何修改程序,比如我星期天休息,星期一要填星期天的数据

可以生成完今天的表后,把表的名字手动改一下(改成你要的那一天),感觉可以,你可以试试

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-5-22 16:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
longwin 发表于 2024-5-22 15:55
可以生成完今天的表后,把表的名字手动改一下(改成你要的那一天),感觉可以,你可以试试

真的可以,谢谢老师

TA的精华主题

TA的得分主题

发表于 2024-5-22 16:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
longwin 发表于 2024-5-22 15:55
可以生成完今天的表后,把表的名字手动改一下(改成你要的那一天),感觉可以,你可以试试

老师,刚才试了一下,不行

TA的精华主题

TA的得分主题

发表于 2024-5-22 17:38 | 显示全部楼层
longwin 发表于 2024-5-22 15:55
可以生成完今天的表后,把表的名字手动改一下(改成你要的那一天),感觉可以,你可以试试

老师,可以,是我搞错了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-6-1 14:44 , Processed in 0.041626 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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