Private Sub Worksheet_change(ByVal Target As Range)
If Target = Worksheets("Sheet1").Range("B2") Then
idval = Worksheets("Sheet1").Range("B2")
Set datash = Worksheets("Sheet2")
Set toselect = datash.Range("xx1") 'dummy cell address for Union
For i = 1 To datash.Range("A1").End(xlDown).Row
If datash.Range("A" & i) = idval Then
Set toselect = Union(toselect, datash.Range("A" & i))
End If
Next i
Intersect(datash.Range("A:A"), toselect).Parent.Activate
Intersect(datash.Range("A:A"), toselect).Activate
End If
End Sub
这段代码就做到了。在 Worksheet.Change 事件中调用它,然后创建链接是不必要的。
它可能不完全是您正在寻找的,但它是我能想到的最简单的,无需涉及 VBA。
结果:
这种方法的局限性在于,当sheet2中有重复项时,它不能很好地工作。在这种情况下,我们必须创建两个单独的超链接。
编辑:由于某种原因,我无法将 Excel 表格轻松转换为 Mark down。所以我将输入公式: 在 C 列中:
下面的公式查找sheet2中ID的行号。
=FILTER(ROW(Sheet2!A2:A100),Sheet1!B2=Sheet2!A2:A100,"")
在D列中:下面找到sheet2中ID的地址:
=CELL("address",INDEX(Sheet2!$A$1:$A$100,Sheet1!C2))
在 E 列中:创建超链接:
=HYPERLINK(D2,$B$2)
再次编辑...(在 D 列公式中犯了错误)..已更正。