Office中国论坛/Access中国论坛
标题:
已解决:满足多条件的求和
[打印本页]
作者:
咸中咸
时间:
2018-1-2 13:36
标题:
已解决:满足多条件的求和
本帖最后由 咸中咸 于 2018-1-11 17:28 编辑
我自己根据需要做的一个出入库流水账,里面包含有现有库存时时报表、产品送试、报废等等,但是最后在生成报表的时候,库存统计的时候有一个地方不会,有劳各位大神弄一个VBA程序,谢谢!
计算方式:
1、只有当“账目明细”的材料代码等于“出入库流水记账簿”时,对应的有:“账目明细”可用=“出入库流水记账簿”里相同材料代码的库存之和,纳入求和的条件是:“出入库流水记账簿”次材料代码的库存小于入库数量或者是今天日期减去送检日期小于15.
2、只有当“账目明细”的材料代码等于“出入库流水记账簿”时,对应的有:“账目明细”待验=“出入库流水记账簿”里相同材料代码的库存之和,纳入求和的条件是:“出入库流水记账簿”次材料代码的库存等于入库数量或者是今天日期减去送检日期大于15.
作者:
roych
时间:
2018-1-6 14:51
试下sumifs
作者:
咸中咸
时间:
2018-1-8 17:30
roych 发表于 2018-1-6 14:51
试下sumifs
谢谢!
作者:
咸中咸
时间:
2018-1-8 17:31
大神帮忙的,需要可以看哈!
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets("账目明细")
Dim iArr, lRow As Long
lRow = .Range("C" & Rows.Count).End(xlUp).Row
iArr = .Range("C5:C" & lRow).Value
ReDim iDrr(UBound(iArr), 2)
Dim zD As Object, i As Long: Set zD = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(iArr)
zD(iArr(i, 1)) = i
Next i
End With
With ThisWorkbook.Worksheets("出入库流水记账簿")
lRow = .Range("C" & Rows.Count).End(xlUp).Row
Erase iArr
iArr = .Range("C5:C" & lRow).Value
Dim iBrr, iCrr
iBrr = .Range("K5:L" & lRow).Value
iCrr = .Range("U5:U" & lRow).Value
End With
With ThisWorkbook.Worksheets("账目明细")
For i = 1 To UBound(iArr)
If zD.Exists(iArr(i, 1)) Then
If iBrr(i, 1) < iBrr(i, 2) Or Date - iCrr(i, 1) < 15 Then
iDrr(zD(iArr(i, 1)), 1) = iDrr(zD(iArr(i, 1)), 1) + iBrr(i, 1)
ElseIf iBrr(i, 1) = iBrr(i, 2) Or Date - iCrr(i, 1) > 15 Then
iDrr(zD(iArr(i, 1)), 2) = iDrr(zD(iArr(i, 1)), 2) + iBrr(i, 1)
End If
End If
Next i
Set zD = Nothing
.[H5].Resize(UBound(iDrr), 2).Value = iDrr
End With
Application.ScreenUpdating = True
End Sub
复制代码
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3