ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-11-15 16:30 | 显示全部楼层
svinayoko 发表于 2022-11-15 16:21
老师,您看一下,第二行和第四行,没有取值,正常是有值的。还有就是sheet2能不能依据sheet1的数据变化,进 ...
  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, 2) = 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
复制代码


有个地方写错了

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-17 16:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
麻烦老师了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-17 16:01 | 显示全部楼层


老师,代码运行的结果依旧没有什么变化,初衷是取值sheet1 的 H列减去I列的绝对值,再就是如果数据在当期有变化,取数就会刷新到最新数据。望老师再给与帮助。

TA的精华主题

TA的得分主题

发表于 2022-11-17 16:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
svinayoko 发表于 2022-11-17 16:01
老师,代码运行的结果依旧没有什么变化,初衷是取值sheet1 的 H列减去I列的绝对值,再就是如果数据在当 ...

不会吧,我这里运行出结果了
  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, 2) = 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 i = 1 To UBound(arr, 2)
  20.             If Format(Month(Now), "00月") = arr(1, i) Then
  21.                 For j = 1 To UBound(arr)
  22.                     For k = 2 To UBound(brr)
  23.                         If arr(j, 2) = brr(k, 3) And brr(k, 11) <> "" Then
  24.                             arr(j, i) = brr(k, 11)
  25.                         ElseIf arr(j, 2) = brr(k, 3) And brr(k, 11) = "" Then
  26.                             arr(j, i) = brr(k, 8) - brr(k, 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
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-17 16:35 | 显示全部楼层
计算结果应该是这三个,目前的代码,计算结果只有第一行出现了,其余的行项目没有结果显示。老师帮忙看一下
9EDB7A37-A0E8-4e2a-85D3-1A02AC8E2718.png
0D015866-3745-4d00-BAF2-D555974A9019.png

TA的精华主题

TA的得分主题

发表于 2022-11-17 16:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
image.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-17 19:20 | 显示全部楼层

老师,我重新复制了代码,但是sheet2里面,按钮事件没反应。一个数据也取不到了。难道会是版本的问题嘛? 我的是office 2021
EB422DD5-B750-4b8d-98C2-BDA91C568499.png

TA的精华主题

TA的得分主题

发表于 2022-11-17 20:08 | 显示全部楼层
svinayoko 发表于 2022-11-17 19:20
老师,我重新复制了代码,但是sheet2里面,按钮事件没反应。一个数据也取不到了。难道会是版本的问题嘛? ...

你后面发的有编码,我按照有编码的来做了。。。。。

TA的精华主题

TA的得分主题

发表于 2022-11-17 20:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原材料存货明细表.zip (25.88 KB, 下载次数: 3)

TA的精华主题

TA的得分主题

发表于 2022-11-17 20:22 | 显示全部楼层
19楼附件是有编码的,如果没有编码的代码应该是这样的
  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, 4) And brr(k, 11) <> "" Then
  10.                             arr(j, i) = brr(k, 11)
  11.                         ElseIf arr(j, 1) = brr(k, 4) 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 i = 1 To UBound(arr, 2)
  20.             If Format(Month(Now), "00月") = arr(1, i) Then
  21.                 For j = 1 To UBound(arr)
  22.                     For k = 2 To UBound(brr)
  23.                         If arr(j, 1) = brr(k, 4) And brr(k, 11) <> "" Then
  24.                             arr(j, i) = brr(k, 11)
  25.                         ElseIf arr(j, 1) = brr(k, 4) And brr(k, 11) = "" Then
  26.                             arr(j, i) = brr(k, 8) - brr(k, 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
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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