【问题标题】:VLOOKUPNTH Cell show "#value"VLOOKUPNTH 单元格显示“#value”
【发布时间】:2018-09-08 06:27:56
【问题描述】:

我的文档由生产部分组成,我的很多数据来自我公司的数据仓库查询。

问题:

当我更新我的查询/文档时,具有我的 VLOOKUPNTH 公式的所有单元格都显示值 "#value" 直到我手动单击公式栏并按 Enter 键。然后它完美地工作。

问题是,一旦我更新了我的程序,我必须使用此功能手动按下每个单元格,然后在功能栏中按 Enter(大约 15x3 单元格)。

我的代码:

Function VLOOKUPNTH(Lookup_value, table_array As Range, _
Col_index_num As Integer, Nth_value)
 ' Extension to VLOOKUP function.  Allows for finding
 ' the   "  nth  "   item that matches the lookup value.

Dim nRow As Long
Dim nVal As Integer
Dim bFound As Boolean
VLOOKUPNTH = ""
With table_array
    For nRow = 1 To .Rows.Count
        If .Cells(nRow, 1).Value = Lookup_value Then
            nVal = nVal + 1
        End If
        If nVal = Nth_value Then
            VLOOKUPNTH = .Cells(nRow, Col_index_num).Text
            Exit Function
        End If
    Next nRow
End With
End Function

图片:

有什么聪明的方法可以避免这个问题吗?我可以用 VBA 代码以某种方式激活此功能吗? OBS!在上面的图片中,它只有最右边的一列发生了变化,我的错误。 OBS!

谢谢

【问题讨论】:

  • 感谢您提供此信息!我不知道这是可能的,我现在就去看看。
  • 我试过了,现在我只需要在一个功能栏中按回车,它们都变成了正确的值,非常好!
  • 按 Ctrl/Alt/F9 也可能有效
  • ctrl+alt+F9 成功了!那是我可以制作宏的命令吗?或者我可以使用 VBA 代码执行此命令吗?

标签: excel vba


【解决方案1】:

在您使用此功能的一个或多个工作表上,您可以添加一个事件。通过右键单击工作表名称(例如 Sheet1)并从弹出菜单中选择“查看代码”来执行此操作。

在代码窗口的左侧下拉框中,选择工作表。然后在右侧下拉菜单中选择“更改”事件。使用 Worksheets Calculate 方法,您就有了 Ctrl/Alt/F9 - 但仅适用于工作表。如果要计算整个工作簿,请使用 Application.Calculate 方法。

对工作表进行任何更改,工作表上的所有函数都会计算。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws As Worksheet
    Set ws = ActiveWorkbook.Sheets("Sheet1")
     ws.Calculate    
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多