【问题标题】:Match multiple criteria within range of values匹配值范围内的多个条件
【发布时间】:2019-03-22 23:36:32
【问题描述】:

Sheet1 中,我在 Axyz /em>、BC。为简化起见,假设我只有两行带有值的行(如图所示)。

Sheet2 我有阈值; xyz 的最小值和最大值,以及相应的代码。

我想在 Sheet1 中检索输入值在 Sheet2 中的阈值(与值匹配)内的所有代码。如果这会使事情复杂化,则无需将代码列在同一单元格中;它们可以在单独的列中列出。我也对公式和 VBA 开放。

如果条件完全匹配,我知道如何使用 JOINTEXT 列出多个结果。我也知道如何使用 INDEX + MATCH + = 根据几个不准确的匹配列出一个结果。我不知道如何组合它们。

我看了这些:

EXCEL index match by multiple criteria AND multiple match types?

https://exceljet.net/formula/multiple-matches-in-comma-separated-list

https://exceljet.net/formula/index-and-match-with-multiple-criteria

...并尝试了这个:

=INDEX(F5:L8;SMALL(IF(COUNTIF(F5:F8;"<="&A5)*COUNTIF(G5:G8;">"&A5)*COUNTIF(H5:H8;"<="&B5)*COUNTIF(I5:I8;">"&B5)*COUNTIF(J5:J8;"<="&C5)*COUNTIF(K5:K8;">"&C5);ROW(F5:L8)-MIN(ROW(F5:L8))+1);COLUMN(F4));ROW(F4)+6)

...没有任何结果。

【问题讨论】:

  • 图片打不开!
  • 编辑您的问题以包含图片,因为我们中的一些人将无法打开此图片。
  • 感谢您的信息!现在应该包括在内。
  • 谢谢@Jeeped。我将在 TEXTJOIN-post 中查看您的答案,看看这是否解决了我的问题。

标签: excel vba excel-formula


【解决方案1】:

我设法通过使用 Jeeped 令人印象深刻的代码解决了这个问题(请参阅 cmets)。但是,由于我使用逗号 (,) 作为小数分隔符,我需要包含一个小的调整项。我将“iOptions”、“iIgnoreHeaderRows”、“i”和“j”从 Variant 更改为 Double,将“a”从 Variant 更改为 Long。我还包括以下代码:

Dim counter As Integer, sizeOfPairs As Integer
Dim test As String
counter = 0
sizeOfPairs = UBound(pairs, 1)

For counter = 0 To sizeOfPairs
    If TypeName(pairs(counter)) = "String" Then
        pairs(counter) = Replace(pairs(counter), ",", ".")
    End If
Next counter

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    相关资源
    最近更新 更多