【问题标题】:VBA index/match blank cellVBA 索引/匹配空白单元格
【发布时间】:2017-02-07 07:17:24
【问题描述】:

我有一个帐户和代码列表,并希望使用索引匹配填充来自不同工作表的结果的列。我可以使用以下公式使其工作:=index(rngB,match(BCode,rngM,0),55)

但无法将其翻译成 vba。我试过了:

sub compare() 

Dim BudgetResult As Long
Dim var1 As Long
Dim rngB, rngM As Range
Dim CompSH, ActSH, BudSH As Worksheet
Dim BCode As Variant

Set CompSH = Sheets.Add(After:=Sheets(Sheets.Count))
Set ActSH = Sheets(2)
Set BudSH = Sheets(3)
Set rngB = BudSH.Range("B11:BF50")
Set rngM = BudSH.Range("B:B")
Set BCode = CompSH.Range("A2")

BudSH.Select
Range("B10:E76").Select
Selection.Copy
CompSH.Select
ActiveSheet.Paste
Range("F1").Select
ActiveCell.FormulaR1C1 = "Budget"
Range("F2").Select

With Application.WorksheetFunction

var1 = .Match(BCode, rngM, 0)
BudgetResult = .Index(rngB, var1, 55)

End With

我得到一个空白单元格。工作表中没有结果。 另外,我不知道如何继续下去。有人可以帮忙吗?

【问题讨论】:

  • 您准备好将 Excel 公式翻译成 VBA 了吗?如果您已经决定使用 VBA,为什么不使用它的额外功能?

标签: vba indexing match


【解决方案1】:

您可能会喜欢以下内容

Option Explicit

Sub compare()
    Dim rngB As Range, rngM As Range, cell As Range
    Dim CompSH As Worksheet, ActSH As Worksheet, BudSH As Worksheet
    Dim AW As WorksheetFunction: Set AW = Application.WorksheetFunction

    Set CompSH = Sheets.Add(After:=Sheets(Sheets.count))
    Set ActSH = Sheets("ActSH") 'Sheets(2)
    Set BudSH = Sheets("BudSH") 'Sheets(3)

    With BudSH
        Set rngB = .Range("B11:BF50") '<--| warning: your "index" range has 40 rows
        Set rngM = .Range("B:B")
        .Range("F1").Value = "Budget"
        .Range("B10:E76").Copy CompSH.Range("A1") '<--| warning: your "copied" range has 67 rows
    End With

    With CompSH
        For Each cell In .Range("A2", .Cells(.Rows.count, 1).End(xlUp))
            cell.Offset(, 5).Value = AW.Index(rngB, AW.Match(cell, rngM, 0), 55) '<--| this will error when trying to access from 'rngB' range 41th rows on
        Next
    End With
End Sub

您只需要调整标有&lt;--| Warning...的语句中的范围大小

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-08
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    相关资源
    最近更新 更多