ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 如何使用代码替代函数公式运行j计算

如何使用代码替代函数公式运行j计算

作者:绿色风 分类: 时间:2022-08-18 浏览:97
楼主
xyf2210
Q:如何使用代码替代函数公式运行j计算?
A:
  1. Sub test()
  2.     Dim d, arr, brr, crr(), i, j, temp
  3.     Set d = CreateObject("scripting.dictionary")
  4.     arr = Range("a1").CurrentRegion
  5.     brr = Sheets("采购入库").Range("a1").CurrentRegion
  6.     temp = 0
  7.     For i = 2 To UBound(brr)
  8.         If Not d.exists(brr(i, 1) & brr(i, 2)) Then
  9.             temp = temp + 1
  10.             d(brr(i, 1) & brr(i, 2)) = temp
  11.             ReDim Preserve crr(1 To 14, 1 To temp)
  12.             crr(1, temp) = brr(i, 1)
  13.             crr(2, temp) = brr(i, 2)
  14.             For j = 3 To 14
  15.                 crr(j, temp) = brr(i, j)
  16.             Next
  17.         Else
  18.             For j = 3 To 14
  19.                 crr(j, d(brr(i, 1) & brr(i, 2))) = crr(j, d(brr(i, 1) & brr(i, 2))) + brr(i, j)
  20.             Next
  21.         End If
  22.     Next
  23.     For i = 2 To UBound(arr)
  24.         d(arr(i, 5)) = d(arr(i, 5)) + 1
  25.         arr(i, 43) = IIf(d(arr(i, 5)) > 1, 0, 1)
  26.         d(arr(i, 6)) = d(arr(i, 6)) + 1
  27.         If d(arr(i, 5)) > 1 And d(arr(i, 6)) > 1 Then
  28.             arr(i, 44) = 0
  29.         Else
  30.             arr(i, 44) = 1
  31.         End If
  32.         If d.exists(arr(i, 5) & arr(i, 6)) Then
  33.             For j = 19 To 30
  34.                 arr(i, j) = crr(j - 16, d(arr(i, 5) & arr(i, 6)))
  35.                 If j <> 30 Then
  36.                     arr(i, j + 12) = IIf(arr(i, j - 12) - arr(i, j) > 0, arr(i, j - 12) - arr(i, j), 0)
  37.                     arr(i, j + 28) = IIf(arr(i, j - 12) - arr(i, j) < 0, arr(i, j - 12) - arr(i, j), 0)
  38.                 Else
  39.                     arr(i, j + 12) = Application.Sum(arr(i, 31), arr(i, 32), arr(i, 33), arr(i, 34), arr(i, 35) _
  40.                     , arr(i, 36), arr(i, 37), arr(i, 38), arr(i, 39), arr(i, 40), arr(i, 41))
  41.                     arr(i, j + 28) = Application.Sum(arr(i, 47), arr(i, 48), arr(i, 49), arr(i, 50), arr(i, 51) _
  42.                     , arr(i, 52), arr(i, 53), arr(i, 54), arr(i, 55), arr(i, 56), arr(i, 57))
  43.                 End If
  44.             Next
  45.         End If
  46.     Next
  47.     For i = 1 To UBound(arr)
  48.         d(arr(i, 5) & "/1") = d(arr(i, 5) & "/1") + arr(i, 30)
  49.         d(arr(i, 5) & arr(i, 6) & "/1") = d(arr(i, 5) & arr(i, 6) & "/1") + arr(i, 30)
  50.         arr(i, 45) = IIf(d(arr(i, 5) & "/1") > 0, arr(i, 43), 0)
  51.         arr(i, 46) = IIf(d(arr(i, 5) & arr(i, 6) & "/1") > 0, arr(i, 44), 0)
  52.     Next
  53.     Range("a1").Resize(UBound(arr), UBound(arr, 2)) = arr
  54.     Set d = Nothing
  55. End Sub

代码.rar
2楼
水吉果果
学习一下哈哈!
3楼
wanghuaca
如何操作啊,谢谢

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap