ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 因为资料太多,想把函数换成VBA,怎么取结余数的最小值

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-6-18 09:44 | 显示全部楼层 |阅读模式

想把统计表中T列 的函数公式换成VBA,但是代码不太会,在网上找来代码,改出来不正确,请大家帮忙看看以下代码如何修改一下

Private Sub CommandButton1_Click()
    s = "(IF((PH=""品号"")*(RQ=日期),JY))"
    For i = 5 To [T6].CurrentRegion.Rows.Count
        ss = Replace((Replace(s, "品号", Cells(i, "A"))), Cells(i, "T"))
        Cells(i, "T") = Evaluate("=Min" & ss)

    Next
End Sub


进出存.rar

274.02 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2019-6-18 11:31 | 显示全部楼层
请见代码。
运用工作表变化事件即可。
2019-6-18缺料.png

TA的精华主题

TA的得分主题

发表于 2019-6-18 12:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Option Explicit

Sub test()
  Dim arr, i, dic(1)
  For i = 0 To UBound(dic)
    Set dic(i) = CreateObject("scripting.dictionary")
  Next
  arr = Sheets("sys").[a2].CurrentRegion
  For i = 3 To UBound(arr, 1)
    If dic(0).exists(arr(i, 4)) Then
      If arr(i, 9) < 0 Then
        If dic(1)(arr(i, 4)) >= 0 Then
          dic(0)(arr(i, 4)) = arr(i, 1)
          dic(1)(arr(i, 4)) = arr(i, 9)
        Else
          If arr(i, 9) > dic(1)(arr(i, 4)) Then
            dic(0)(arr(i, 4)) = arr(i, 1)
            dic(1)(arr(i, 4)) = arr(i, 9)
          End If
        End If
      End If
    Else
      dic(0)(arr(i, 4)) = arr(i, 1)
      dic(1)(arr(i, 4)) = arr(i, 9)
    End If
  Next
  Sheets("统计").Activate
  arr = Range("a9:t" & Cells(Rows.Count, "a").End(xlUp).Row)
  ReDim brr(1 To UBound(arr, 1), 1 To 1)
  For i = 1 To UBound(arr, 1)
    If dic(0).exists(arr(i, 1)) Then
      If dic(1)(arr(i, 1)) < 0 Then brr(i, 1) = dic(0)(arr(i, 1))
    End If
  Next
  [t9].Resize(UBound(brr, 1)) = brr
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-6-18 12:10 | 显示全部楼层
请测试一下,无法上传附件。
  1. 'http://club.excelhome.net/thread-1483875-1-1.html
  2. '2019.06.18
  3. Sub Get_Negative_Max()
  4. Dim i%, arr
  5. Dim m%
  6. Dim prod$
  7. Dim StockDate
  8. arr = Sheets("SYS").UsedRange
  9. With Sheet3
  10.     'Loop row in Worksheet
  11.     For m = 6 To .Cells(65536, 1).End(xlUp).Row
  12.         prod = .Cells(m, 1)
  13.         StockDate = ""
  14.         'exclude blank production
  15.         If Not prod = "" Then
  16.             StockDate = Look_Negative_Max(arr, prod)
  17.             .Cells(m, 20) = StockDate
  18.         End If
  19.     Next m
  20. End With
  21. Debug.Print
  22. End Sub

  23. 'function for looking the Negative Max
  24. '**If can't find balance, return ""
  25. Function Look_Negative_Max(arr, prod)
  26. Dim i
  27. Dim Sk$, sk_balance#
  28. Dim max_balance, tmp
  29. tmp = ""
  30. max_balance = -99999                'Initial balance
  31. For i = 4 To UBound(arr)
  32.     Sk = arr(i, 4)                  'Product
  33.     sk_balance = arr(i, 9)          'Balance
  34.     If Sk = prod Then
  35.         If sk_balance < 0 Then      'Negative
  36.             If sk_balance > max_balance Then
  37.                 max_balance = sk_balance
  38.                 tmp = arr(i, 1)     'Get Date
  39.             End If
  40.         End If
  41.     End If
  42. Next i
  43. Look_Negative_Max = tmp    'Return
  44. End Function
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-18 13:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

OK了,非常感谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-18 13:09 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-18 13:27 | 显示全部楼层
蓝桥玄霜 发表于 2019-6-18 11:31
请见代码。
运用工作表变化事件即可。

蓝板抱歉,是我没有描述清楚问题,我是取T列日期的最小值,感谢回复!S列如果可以把=IF(A9="","",SUMIF($E$5:$R$5," 入库数量",$E9:$R9)-SUMIF($E$5:$R$5," 出库数量",$E9:$R9))这个函数换成VBA,那是帮了大忙了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-26 08:43 , Processed in 0.049509 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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