ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4375|回复: 35

[求助] 各位大佬,咨询一个按照时间延期填列的问题。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-11-13 13:04 | 显示全部楼层 |阅读模式
各位大神,如附件,如何用VBA代码实现:根据sheet1的“物料编码”,计算“本期入库单(H)和本期出库单(I)差值的绝对值,填在sheet2的表格里,sheet2的表格填列是按照系统当前时间推前15天,例如系统时间是2月15号之前的,数据就填列在1月的列里面。以此类推。这个表格太大了,用VLookup函数太慢了,要处理很久很久,谢谢大神

原材料存货明细表.zip

20.6 KB, 下载次数: 18

TA的精华主题

TA的得分主题

发表于 2022-11-13 19:07 | 显示全部楼层
手动做两个结果再发上来吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-13 20:17 | 显示全部楼层
本帖最后由 svinayoko 于 2022-11-13 20:22 编辑
高个子 发表于 2022-11-13 19:07
手动做两个结果再发上来吧

对不起,之前发的附件有问题。现在我改过来了。sheet2数据的录入范围是按照每个月15号为界线。11月15日之前操作的话,数据就录入到10月的单元格里,12月15日之前操作的话,数据就录入到11月的单元格里。录入之后就自动保存,不会因为后续的数据录入导致之前月份的数据被修改。这个想法能实现吗?

原材料存货明细表.zip

22.77 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2022-11-14 10:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
svinayoko 发表于 2022-11-13 20:17
对不起,之前发的附件有问题。现在我改过来了。sheet2数据的录入范围是按照每个月15号为界线。11月15日之 ...

15日之后操作会怎么样呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-15 08:21 | 显示全部楼层
高个子 发表于 2022-11-14 10:20
15日之后操作会怎么样呢?

每个月15日之后的操作,数据会录入到当月,比如,系统时间11月15日之前,数据就会被写入10月的列,15日之后数据就会被写入到11月的列

TA的精华主题

TA的得分主题

发表于 2022-11-15 10:33 | 显示全部楼层
svinayoko 发表于 2022-11-15 08:21
每个月15日之后的操作,数据会录入到当月,比如,系统时间11月15日之前,数据就会被写入10月的列,15日之 ...

哦哦明白了,我想想看

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-15 10:38 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-11-15 14:33 | 显示全部楼层
svinayoko 发表于 2022-11-15 10:38
谢谢老师,静待佳音!
  1. Sub kdy()
  2.     arr = Sheet2.Range("a1:o" & Sheet2.Cells(Rows.Count, 1).End(xlUp).Row)
  3.     brr = Sheet1.Range("a1:k" & Sheet1.Cells(Rows.Count, 1).End(xlUp).Row)
  4.     If Day(Now) <= 15 Then
  5.         For i = 1 To UBound(arr, 2)
  6.             If Format(Month(Now) - 1, "00月") = arr(1, i) Then
  7.                 For j = 1 To UBound(arr)
  8.                     For k = 2 To UBound(brr)
  9.                         If arr(j, 1) = brr(k, 3) And brr(k, 11) <> "" Then
  10.                             arr(j, i) = brr(k, 11)
  11.                         ElseIf arr(j, 2) = brr(k, 3) And brr(k, 11) = "" Then
  12.                             arr(j, i) = brr(k, 8) - brr(k, 9)
  13.                         End If
  14.                     Next
  15.                 Next
  16.             End If
  17.         Next
  18.     Else
  19.         For l = 1 To UBound(arr, 2)
  20.             If Format(Month(Now), "00月") = arr(1, l) Then
  21.                 For m = 1 To UBound(arr)
  22.                     For n = 1 To UBound(brr)
  23.                         If arr(m, l) = brr(n, 3) And brr(n, 11) <> "" Then
  24.                             arr(l, m) = brr(n, 11)
  25.                         ElseIf arr(m, 2) = brr(n, 3) And brr(n, 11) = "" Then
  26.                             arr(m, l) = brr(n, 8) - brr(n, 9)
  27.                         End If
  28.                     Next
  29.                 Next
  30.             End If
  31.         Next
  32.     End If
  33.     Sheet2.Range("a1:o" & Sheet2.Cells(Rows.Count, 1).End(xlUp).Row) = arr
  34. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-15 16:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

先感谢老师,再下载测试

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-15 16:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 svinayoko 于 2022-11-15 16:26 编辑
老师,您看一下,第二行和第四行,没有取值,正常是有值的。还有就是sheet2能不能依据sheet1的数据变化,进行数据覆盖更新。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-21 02:33 , Processed in 0.045834 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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