【问题标题】:How to get the distinct values of a range with two criteria in Excel with formula or VBA?如何在 Excel 中使用公式或 VBA 获取具有两个条件的范围的不同值?
【发布时间】:2020-04-28 11:16:36
【问题描述】:

我有一列包含大约 16k 行的重复日期,应该在其中搜索一周之间的唯一日期计数。这里 是唯一计数应存储在第 DAYS #8 行中的工作表,其上方是应用作条件的日期。我已经尝试过 Sum/countifs 数组公式,但我得到了 0 错误的除法。然后我尝试了这个循环

Dim WMR, MHR, P, D As Worksheet

Set WMR = Sheets("WMREP")
Set MHR = Sheets("MACH-HRS")
Set P = Sheets("PRODUCTION")
Set D = Sheets("DELAYS")

Dim last_row, last_row1, last_row2 As Long
last_row = MHR.Cells(Rows.Count, 1).End(xlUp).Row
last_row1 = P.Cells(Rows.Count, 1).End(xlUp).Row
last_row2 = D.Cells(Rows.Count, 1).End(xlUp).Row
counter = 1

For x = 8 To 11
    For y = 3 To last_row1
        If P.Cells(y, 1) >= WMR.Cells(7, x - 1) And P.Cells(y, 1) < WMR.Cells(7, x) Then
            If P.Cells(y, 1) <> P.Cells(y - 1, 1) Then
                counter = counter + 1
            End If
        End If
    Next y
    WMR.Cells(8, x) = counter
    counter = 0
Next x

但它返回的值大于 7,这是不对的。我被这个困住了。公式或 VBA 解决方案将不胜感激。

【问题讨论】:

  • 首先需要处理一小部分数据(样本),然后向我们展示您对该样本数据的预期结果。当我们看到您实际使用的内容时,提出解决方案会容易得多
  • 我不熟悉字典。这个很紧急,所以我会选择我理解或有效的东西。唯一不可见的部分是带有日期的列。这很简单,第一行中的列名和之后的日期。
  • 对,所以您想计算从 12 月 30 日到 1 月 5 日的独特天数?了解您是否可以访问更新的动态数组公式也很重要。
  • 这里有一些,它有帮助。我已经编辑了帖子。对,就是这样!我不确定..
  • 您可以访问动态数组公式吗?比如UNIQUE函数?

标签: excel vba excel-formula count unique


【解决方案1】:

好吧,如果您可以访问 DA 函数,那将相当容易:

=COUNT(UNIQUE(FILTER(Sheet2!$A2:$A16000,Sheet2!$A2:$A16000>G7-1,Sheet2!$A2:$A16000<G7+7)))

但无法访问这些,您可以尝试:

=SUM(--(FREQUENCY(IF((Sheet2!$A2:$A16000>G7-1)*(Sheet2!$A2:$A16000<G7+7),Sheet2!$A2:$A16000),Sheet2!$A2:$A16000)>0))

注意:第二个选项需要通过CtrlShiftEnter来确认。这两个选项都可以放在Sheet1上的G7,然后拖到右边。

知道,如果需要,您还可以对 A 列进行动态引用,这样您就不必对行进行硬编码。

【讨论】:

  • 我在 Excel 中见过的最可怕的公式。但它奏效了!但是,我能问你,如果是几个月,同样的公式会是什么样子?考虑到这个月并不总是 30 天..
  • 很高兴它成功了。新问题得到新主题 =)。我并不是要粗鲁,但最好用样本数据制定一个更好的新问题,然后使用 cmets @LBD_23 来回继续。
猜你喜欢
  • 2017-04-24
  • 1970-01-01
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多