【问题标题】:Convert index match formula转换索引匹配公式
【发布时间】:2022-01-19 10:11:03
【问题描述】:

我正在尝试将此公式转换为 VBA 代码,但不知道如何。

=IFERROR(INDEX($E$3:$E$10,MATCH($G3&I$2,$B$3:$B$10&$D$3:$D$10,0)),"")

【问题讨论】:

  • 您对MATCH($G3&I$2,$B$3:$B$10&$D$3:$D$10,0) 有什么期望?特别是这部分:$B$3:$B$10&$D$3:$D$10。要在两个连接的列范围内找到匹配项?您使用的公式是否返回空字符串以外的任何内容?请单独尝试Match 部分...
  • 为什么要在 VBA 中使用它以及打算如何使用它?我原以为Evaluate 会是最简单的 方法。
  • G3 是员工 ID,而 I2 是标题名称。标题名称可以在源文件的字段名列中找到。我想要实现的是从字段值列中获取特定数据,一旦它与源文件中的员工 ID 和字段名匹配。
  • 我很想分享一个示例文件,但不允许在此处粘贴。如果您有一个电子邮件广告,我可以在其中发送示例文件,那就很容易了。
  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: excel vba excel-formula index-match


【解决方案1】:

你可以试试下面的方法

Dim fndRng as Range
set firstAddr as String

' Update this to your sheet reference
With ActiveSheet
    set fndRng = .Range("B3:B10").find(Range("G3").Value2)
    If Not fndRng is nothing then
        firstAddr = fndRng.Address
        Do
            If fndRng.Offset(0,2).Value2 = .Range("I2").Value2 Then
                Exit Do
            End If
            Set fndRng = .Range("B3:B10").FindNext(fndRng)
        Loop Until fndRng is Nothing or fndRng.Address = firstAddr
    
        MsgBox fndRng.Address & ": " & fndRng.Offset(0, 3).Value2
    end if
End With

【讨论】:

    猜你喜欢
    • 2019-05-17
    • 2014-02-09
    • 1970-01-01
    • 2015-07-14
    • 2017-08-16
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    相关资源
    最近更新 更多