在我的工作簿中,用户可以手动输入帐户代码或从列表中选择一个帐户代码,并将帐户代码放在名为" JE"的工作表中的C列(C7:C446)中。帐户代码如下所示####### - ### - ## - ######。在工作表" JE"中的D列(D7:D446)中,有一个公式可以捕获帐户代码的最后6位数字。在名为" required_refs"的工作表中,A列中有6位数字代码的列表。如果工作表中的D列中的值" JE"等于" required_refs"的A列中的任何值; sheet,我希望D列单元格中的值覆盖单元格D1中的单元格值,该单独的工作表名为" references" (我知道这可能令人困惑,抱歉)
示例:如果D25的值与工作表" required_refs"的A列中列出的任何值匹配,则在双击红色F25单元格时,将值设为D25(表单" JE"),并将其放在单元格D1和表格#34;参考文献"。
我已经知道如何最好地解决它。我已将此代码放在表格JE中:
var links = [
{ "source" : 0, "target" : 1, "value" : 1 },
{ "source" : 1, "target" : 2, "value" : 2 }
...
] ;
非常感谢您提供有关如何完成此操作的任何建议。如果需要,我可以进一步详细说明。
答案 0 :(得分: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类型变量相结合,允许我们捕获匹配失败时发生的错误。
答案 1 :(得分:0)
您可以随时在工作表上执行此操作。考虑MATCH函数。有关如何使用MATCH的信息,请参阅here。
或者另一个很棒的工具,如果您正在搜索与另一列中的值相关联的表格中的某些内容(不是您认为的情况) - VLOOKUP公式。将此公式放在要放入数字的工作表的D单元格中.VLOOKUP的格式如下:
=vlookup(lookup value,table_array,column index number, [range lookup])
对于你的情况,我认为它看起来像这样:
=vlookup('JE'!D1,'required_refs'!A1:A,1,FALSE)
然后只需锁定要保留的值,然后单击并向下拖动。
VLOOKUP here
的说明