Excel应该如何设计函数或者vba

如图
表1中的a列有很多相同的文本,假如我要在表2中加入超链接(hyperlink),比如链接“电脑“,我希望链接到的是第二个”电脑“的位置即a2,请问应该怎么解决?
因为有很多数据所以不太可能一个一个点击超链接

第1个回答  2014-12-03
A列相同的文本都是相邻的吗?表2中插入超链接的单元格的内容也是“电脑”吗。
建议还是上传个例表吧!追问

不是相邻的,表2中的a列有相同数量的”电脑“

追答

假如表2A列中有两个电脑,那是不是每一个电脑都需要插入超级链接,并且都超级链接到表1的第二个电脑呢

追问

是每个电脑都要有一个超链接,但是第一个就链接到第一个位置,第二个就链接到第二个位置

追答

那表1的每个电脑和表2的每个电脑是一一对应的吗?并且是位置都一样?表1的第一个电脑是在a3,第二个电脑在a4,表2的第一个电脑也是在a3,第二个电脑也是在a4吗。
这样多累,你还是弄个例表上来吧。

追问

位置不是一一对应的,就是有很多很多数据

追答

'那用vba实现吧,在表2运行以下宏
Sub 宏1()
    For i = 1 To [a65536].End(3).Row
        表2.Hyperlinks.Add Anchor:=Cells(i, 1), Address:="", SubAddress:= _
            "表1!A" & i
    Next
End Sub

追问

执行的时候要求对象?

第2个回答  2014-12-03
表2 里的第一个电脑要连接到表1的第一个电脑,第二个要连接到表1的第二个电脑吗?追问

是的

追答

=HYPERLINK("#"&ADDRESS(SMALL(IF(Sheet1!$A$1:$A$6=Sheet2!A1,ROW(Sheet1!$A$1:$A$6),COUNTA(Sheet1!$A$1:$A$6)+1),COUNTIF($A$1:A1,A1)),1,1,1,"Sheet1"),Sheet2!A1&COUNTIF($A$1:A1,A1))

数组公式,按Ctrl+Shift+Enter,结束输入。
1、其中 Sheet1!$A$1:$A$6 是表1里A列数据区域,如果表1的名字不是 Sheet1,那么需要将 "Sheet1" 改为你的工作表名。

追问

ROW(Sheet1!$A$1:$A$6)不能返回所在的行吧?

追答

就先找到第N个,在表1的行,然后用address函数生成单元格地址,比如第一个电脑在第一行,那么就生成一个 Sheet1!A1 的地址,再用hyperlink函数创建超连接。

追问

countif后面的三个1是什么意思?

追答

那个三个1是address函数的参数。第一个1,是第一列,第二个1,表示绝对引用,第三个1表示A1样式。

整个公式里,下面的small是一部分,求第N个所在的行。求出来作为address函数的第一个参数:
SMALL(IF(Sheet1!$A$1:$A$6=Sheet2!A1,ROW(Sheet1!$A$1:$A$6),COUNTA(Sheet1!$A$1:$A$6)+1),COUNTIF($A$1:A1,A1))

追问

请问可不可以把怎么个函数的设计思路讲一下啊?还有就是if函数不是一般只有三个参数吗?为什么你有四个,麻烦你了

追答

if就是三个参数啊。

本回答被提问者和网友采纳
相似回答