1

我正在使用 Excel 2007,需要一些关于如何编写 Splat 用户定义函数的帮助/指导。Splat 函数使您可以将数据输入到包含 vlookup 函数的单元格中,然后使用您输入的值更新查找表,但 vlookup 公式仍保留在单元格中。我在下面提供了一个示例:

步骤 1。您有一个查找表和一组使用 vlookup 函数显示表数据的单元格。

在此处输入图像描述

步骤 2。在单元格 d3 中,用户输入:/500。/ 触发 Splat 函数,该函数使用 Jane (500) 的新值更新查找表并替换单元格 d3 中的查找公式。

在此处输入图像描述

步骤 3。Splat 函数触发后,Jane 在表中有一个 500 值,并且单元格 d3(通过查找函数)显示更新的值。

在此处输入图像描述

理想情况下,Splat 函数中会内置一些数据验证,该函数只能在 / 斜杠触发器下触发,否则将通过数据验证弹出窗口触发。

任何关于如何解决这个问题的想法、示例代码、文章等将不胜感激。

谢谢。

4

1 回答 1

2

尝试这样的事情,使用Worksheet_Change事件:

Sub Worksheet_Change(ByVal Target As Range)
    'Assume the workbook has a named range 'lookuptable' at G3:H6
    'Assume the workbook has a named range 'lookupColumn' at D3:D6

    If Target.Cells.Count <> 1 Then Exit Sub
    If Intersect(Target, Range("lookupColumn")) Is Nothing Then Exit Sub
    If Not Left(Target, 1) = "/" Then Exit Sub

    UpdateLookupTable Target

End Sub

Sub UpdateLookupTable(cl As Range)
    Dim r As Long
    Dim c As Long
    Dim splatVal As String

    splatVal = Replace(cl.Value, "/", 0, , 1)
    r = Application.Match(cl.Offset(0, -1), Range("lookuptable").Columns(1), False)
    Range("lookuptable").Cells(r, 2).Value = splatVal
    cl.Value = splatVal

End Sub

我不确定您是否打算保留VLOOKUPD 列中的公式。此示例没有,但如果您想保留这些函数,可以对其进行修改。

于 2013-06-14T18:03:22.413 回答