VLOOKUPNTH单元格显示“ #value”

时间:2018-09-07 09:32:20

标签: excel vba

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

问题:

更新查询/文档时,所有具有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

图片:

pic

有什么聪明的方法可以避免此问题?我可以用VBA代码以某种方式激活此功能吗? OBS!在上图中唯一最更改的列上,我的错。 OBS!

谢谢

1 个答案:

答案 0 :(得分:0)

在使用此功能的一个或多个工作表上,可以添加事件。为此,请右键单击工作表名称(例如,Sheet1),然后从弹出菜单中选择“查看代码”。

在代码窗口的左侧下拉框中,选择“工作表”。然后在右下拉菜单中选择“更改”事件。使用工作表计算方法,即可使用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