ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求一个函数公式或者VBA来计算每天的剩余库存数

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-8 18:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
boy8199 发表于 2021-3-8 17:41
这种问题 多数是因为 表格设计不合理导致的.

给你公式 照样是混乱的

谢谢,你说的我都懂。但是因为我想要的库存数据不多,而且为了方便综合去查看其它信息,所以没有再另外分开去做库存表了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-8 18:48 | 显示全部楼层

谢谢师傅,这个好用。但是可不可以将它改成从上一条剩余库存(S列)的记录开始计算,再前面的是就直接不计算了,当对应的已下单数量(AD列)不为空时?

因为我前面那几天都没有去填数据,所以刚刚你的代码复制过去时,AD列一填充数据,然后S列的一整列的剩余库存数都为负数了

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-8 18:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
psxk3535 发表于 2021-3-8 15:19
设置好就不用了每次更改了,不过有VBA可能更好一些

谢谢,是的,VBA好点。不过依然感谢您的帮助

TA的精华主题

TA的得分主题

发表于 2021-3-8 19:15 | 显示全部楼层
天生懒美人 发表于 2021-3-8 18:43
谢谢,你说的我都懂。但是因为我想要的库存数据不多,而且为了方便综合去查看其它信息,所以没有再另外分 ...

混乱.不便于分析.

出错 也不易被发现.   而且 业务 不会像你想的一样 一直不变.  这种 不通用的vba 非常容易出问题.

还有 你在表格里面 加的自动计算的代码, 都会不是特别合适的.

今天 省事,明天麻烦,尤其是 数据 累计 多了以后 再整理分析或变换 太麻烦了.

TA的精华主题

TA的得分主题

发表于 2021-3-8 19:37 | 显示全部楼层
天生懒美人 发表于 2021-3-8 18:48
谢谢师傅,这个好用。但是可不可以将它改成从上一条剩余库存(S列)的记录开始计算,再前面的是就直接不 ...

无法处理,条件不够

首先R列升序(日期列),如果最近期相同编码2有剩余库存(S列),比如库存为1,但当前已下单数量为2怎么去处理,不处理不行因为满足条件了,但处理了结果为负,所以至少来说缺少条件

作为一个真实的问题应该不会出现这一情况的,因为库存都不够怎么可能还存下单数大于库存数的。可能你这R列不一定为升序,如果是这样确实会出现这种情况的,可以先给你按R列做一下升序处理的,,,

TA的精华主题

TA的得分主题

发表于 2021-3-8 21:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
s7公式{=SUMIFS($S$3:S6,$R$3:R6,MAX(IF($W$3:W6=W7,$R$3:R6,0)),$W$3:W6,W7)-AD7}

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-8 22:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
一把小刀闯天下 发表于 2021-3-8 19:37
无法处理,条件不够

首先R列升序(日期列),如果最近期相同编码2有剩余库存(S列),比如库存为1,但 ...

R列的日期列可以忽略吗,只按它A列的品名,或者编码2来做查找的条件,如果一致的话,就用上一条记录(不管上一条记录的日期是什么)来做减数,并且,这个剩余库存数后期会手动增加,因为剩余的卖完了,会补充库存数进去的。我刚刚试了一下,你之前的代码,我只要在最顶上的那几列输入了库存数后,后面的我想手动修改剩余库存数为更多时, 它还是会采用代码自动计算的结果,这一点可以更改成可以手动输入数字吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-8 22:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
1391299131 发表于 2021-3-8 21:35
s7公式{=SUMIFS($S$3:S6,$R$3:R6,MAX(IF($W$3:W6=W7,$R$3:R6,0)),$W$3:W6,W7)-AD7}

非常感谢!SUMIFS的这个函数我也有考虑过,但是我不会组合使用,您这又给了我一个新思路。感谢!只不过我今天没有花花了,明天有花花的时候再给您奉上

TA的精华主题

TA的得分主题

发表于 2021-3-8 22:58 | 显示全部楼层
天生懒美人 发表于 2021-3-8 22:25
R列的日期列可以忽略吗,只按它A列的品名,或者编码2来做查找的条件,如果一致的话,就用上一条记录(不 ...

'如果是最后一行可以实现,否则我理解不了。函数整体替换,自己先试一下

Function 库存计算()
  Dim arr, i
  With Sheets("单品每日监控")
    arr = .Range("r3:ad" & .Cells(.Rows.Count, "w").End(xlUp).Row).Value
    If Not IsArray(arr) Then Exit Function
    For i = UBound(arr, 1) - 1 To 1 Step -1
      If Len(arr(i, 6)) > 0 And arr(UBound(arr, 1), 6) = arr(i, 6) Then
        arr(UBound(arr, 1), 2) = arr(i, 2) - arr(UBound(arr, 1), 13)
        Exit For
      End If
    Next
    .[r3].Resize(UBound(arr, 1), 2) = arr
  End With
End Function

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-3-9 08:48 | 显示全部楼层
本帖最后由 1391299131 于 2021-3-9 09:19 编辑
天生懒美人 发表于 2021-3-8 22:27
非常感谢!SUMIFS的这个函数我也有考虑过,但是我不会组合使用,您这又给了我一个新思路。感谢!只不过我 ...
{=INDEX($S$3:S6,MATCH(MAX(IF($W$3:W6=W7,$R$3:R6,0)),IF($W$3:W6=W7,$R$3:R6,0),0))-AD7}


评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-28 21:03 , Processed in 0.035927 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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