2017-09-13 110 views
0

在我有一个工作簿中,用户手动输入一个帐户代码或从列表中选择一个帐户代码放置在列C(C7:C446)在一张名为“JE”的表格。帐户代码如下所示####### - ### - ## - ######。在工作表“JE”的D栏(D7:D446)中,有一个公式可以捕获账户代码的最后6位数字。在名为“required_refs”的表中,列A中有6位数字代码列表。如果表“JE”中D列中的值等于“required_refs”表中A列中的任何值,我希望值在D列单元格覆盖在单元格D1单元格中称为“引用”(我知道可能一直困惑,遗憾)单元格值Excel VBA比较单元格值列表并覆盖单独的表中的值

示例:如果D25的值匹配任何在“required_refs”表的A列中列出的值,在双击一个红色的F25单元格时,将D25(表格“JE”)的值放入表格“参考”表格中的单元格D1中。

我已经采取了一个最好的,我知道如何破解。我已经放在这个代码表JE:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 

    Dim project As Range: Set project = Range("D7:D446") 
    Dim param As Range: Set param = Worksheets("references").Range("D1").Value 


    For Each cell In project 
     If project.Value = Worksheets("required_refs").Range("A:A").Value Then 
     Call gotoRef_ 'macro that simply selects/navigates to the required_ref sheet 
     project.Value = param 
     End If 

End Sub 

感谢这么多提前为如何完成这个任何建议。如果需要,我可以进一步阐述。

+0

我提出了一种替代方法作为答案,但是如果您必须使用VBA,您究竟遇到了什么问题?当你运行这个时会发生什么? –

回答

1

这会做你想要什么:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 

    If Intersect(Target, Range("F7:F446")) Is Nothing Then Exit Sub 

    Dim varReference As Variant 

    varReference = Columns("D").Cells(Target.Row).Value2 
    If Not IsError(Application.Match(varReference, Worksheets("required_refs").Columns("A"), 0)) Then 
    Worksheets("references").Range("D1").Value = varReference 
    End If 

End Sub 

要点:

每当与事件处理工作,总是限制目标的范围范围在第一行。否则,它可能无法正常工作,或者它可能会减慢您的电子表格。

确保您JE表列D值和required_refs表列A所有文本或数字。否则,这些值将不会被正确比较。

请注意使用Application.Match()而不是WorksheetFunction.Match()来访问工作表函数。这与使用Variant类型变量相结合,使我们能够捕获匹配失败时发生的错误。

0

您可以随时在表格上执行此操作。考虑MATCH功能。有关如何使用MATCH,请参见here

或者另一个很棒的工具,如果你正在寻找与另一列中的值相关联的表中的东西(而不是你的情况,我不认为) - VLOOKUP公式。将该公式置于纸张的d细胞要放置的号码VLOOKUP是按以下格式:

=vlookup(lookup value,table_array,column index number, [range lookup]) 
  1. 查找值就是你要寻找的6位代码(在JE表)
  2. table_array只是选择要搜索的值(required_refs表)
  3. 列索引号将为1,因为该表只有1列。它基本上是您要查找的值的列号。
  4. 如果您认为可能存在多个匹配的地方,则范围查找适用。

对于你的情况,我认为它应该是这样的:

=vlookup('JE'!D1,'required_refs'!A1:A,1,FALSE) 

然后就锁定你想保留,然后单击并拖动下的值。

解释VLOOKUP here

相关问题