【问题标题】:User-defined function is not working for other sheets用户定义的功能不适用于其他工作表
【发布时间】:2020-08-04 21:16:15
【问题描述】:

enter image description here如何解决这种情况?

如您所知,EXCEL 中的公式 VLOOKUP 显示了在表格中找到的第一个值。有时,您需要从表中获取所有值作为列表。 因此,我认为应该有这样一个函数(公式):

=VLOOKUP_NUMBER_VALUE(DesiredValue, ColumnWhereWeSearch, ColumnFromWhereWeWantToGet,Number)

代码:

Function VLOOKUP_NUMBER_VALUE(DesiredValue As Variant, ColumnWhereWeSearch As Range, ColumnFromWhereWeWantToGet As Range, Number As Integer)

VBA 代码:

On Error GoTo VLOOKUP_NUMBER_VALUE_ERR
n = 0
'we start to loop column if there is our desired value
For Each cell In ColumnWhereWeSearch
'we don't want to check up empty cells
If cell <> "" Then
    'if the cell has our desired value we number it using n variable
    If cell = DesiredValue Then n = n + 1
        'if this n equals our Number in function arguments we need to get row number in cell in order to find the value in the column where we want to get lookup
        If n = Number And cell = DesiredValue Then RowNumber = cell.Row
End If
Next cell
'here we just get column number our third variable
ColumnNumberResult = ColumnFromWhereWeWantToGet.Column
'Result:
VLOOKUP_NUMBER_VALUE = Cells(RowNumber, ColumnNumberResult)

Exit Function

VLOOKUP_NUMBER_VALUE_ERR:
'this row gives "-" when error occurs
VLOOKUP_NUMBER_VALUE = "-"
End Function

问题是,当我在其他工作表、书籍的参数范围中使用时,此函数不起作用。

我大致明白为什么。事实证明,我没有指定文档的名称、参数中的工作表或函数中的名称,我需要以某种方式在函数中获取它。

【问题讨论】:

  • VLOOKUP_NUMBER_VALUE = Cells(RowNumber, ColumnNumberResult) - 有一个隐含的ActiveSheet
  • 是的!我知道。但是如果它工作正常,如何调整,了解范围在哪里。
  • ColumnWhereWeSearch.Parent 表示该范围的父工作表。
  • 如果我没记错的话,我尝试使用For Each cell In sheets(ColumnWhereWeSearch.Parent.Name).ColumnWhereWeSearch 而不是For Each cell In ColumnWhereWeSearch,但没有成功
  • 你不需要修改For Each cell循环。

标签: excel vba excel-formula user-defined-functions vlookup


【解决方案1】:

中有一个隐含的ActiveSheet
VLOOKUP_NUMBER_VALUE = Cells(RowNumber, ColumnNumberResult)

要修复,请使用ColumnWhereWeSearch.Parent,这是相关范围所在的工作表:

VLOOKUP_NUMBER_VALUE = ColumnWhereWeSearch.Parent.Cells(RowNumber, ColumnNumberResult)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-12
    • 2011-12-16
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多