具有多个条件的 Sumif

时间:2021-04-02 13:19:24

标签: excel vba criteria sumifs

我想管理我购买的股票。我有一个分类帐表,用于存储 TransactionDate、Stock、Ticker、Qty、Price、BrokeFee 和其他一些数据。我还有一个 StockHistory 表,我可以在其中使用 Excel 中内置的股票历史功能(通过 VBA)提取每日开盘价、收盘价、最高价、最低价和成交量。

在 StockHistory 表中,我试图在 StockHistory 表中查找股票代码并执行 Sumif,其中我想要特定日期的特定股票代码(或股票)的总数。

工作单元格公式,其中 C 列是 StockHistory 表中的股票代码,A 列是日期。

=SUMIFS(U:U,S:S,C7,Q:Q,"<=" & A7) 

VBA 中的以下内容似乎忽略了日期标准并给出了指定日期前后的总和。

Ticker = Cells(LastRowD, 3).Value
DateCheck = Cells(LastRowD, 1).Value
Qty = Application.WorksheetFunction.SumIfs(Range("U:U"), _
  Range("S:S"), "=" & Ticker, Range("A:A"), "<=" & Range("A" & LastRowD))

看到过类似的问题,但没有一个标准适用而另一个标准被忽略(但没有错误地完成)。

注意:我将这两个表格放在不同的工作表上,但我已将 Ledger 复制到 StockHistory 选项卡,同时我进行了故障排除以消除引用不同工作表的问题。

1 个答案:

答案 0 :(得分:0)

谢谢 Ron,使用 value2 有效。我昨晚很晚才尝试了另一个选项,该选项也有效,但使用 Int(cbdl(.....)) 并不满意。不知道为什么日期会发生这种情况。单元格绝对是 dd/mm/yyyy 格式的日期格式,就像我的 Windows 区域设置一样。如前所述,我记得几年前在 MS Access 中遇到过类似的问题。它似乎只出现在日期和在我当前的项目中,所有其他代码引用日期都按预期工作。有些甚至在有这个问题的同一列上。当您直接搜索(例如澳大利亚日期 vba)时,在 google 上相当不错,但现在它的工作原理是这样的,所以就让它留在那里。 再次感谢罗恩

一些截图 Spreadsheet VBA Screenshot 电子表格版本 1。Invalid totalsHigh day numbers return '0' 工作版本。所有 3 个工作版本都返回相同的输出。 SampleHigh Day sample working

For LastRowD = LastRowD To LastRowB
    Ticker = Cells(LastRowD, 3).Value
    Qty = Application.WorksheetFunction.SumIfs(Range("U:U"), Range("S:S"), "=" & Ticker, Range("Q:Q"), "<=" & Range("A" & LastRowD).Value2)
    Cells(LastRowD, 4) = Qty
    Cells(LastRowD, 5) = Application.WorksheetFunction.Product(Qty, Cells(LastRowD, 7))
Next LastRowD
相关问题