Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如果单元格值与另一个列表中的条目匹配,则复制链接_Vba_Excel - Fatal编程技术网

Vba 如果单元格值与另一个列表中的条目匹配,则复制链接

Vba 如果单元格值与另一个列表中的条目匹配,则复制链接,vba,excel,Vba,Excel,有一列包含文件名块,有一列包含键和值: 我必须将链接“www.111.com”分配给所有AAAAA.jpg区域,“www.222.com”分配给bbb.jpg区域,等等 结果: 如何做到这一点?我认为以下VBA代码将对您有所帮助。它执行以下步骤: 声明一个范围(“myRange”)并将其设置为单元格A1(您的.JPGs列表的顶部单元格) 声明一个变体(“hText”) 在D:E处的查找表中查找“myRange”中的值(更改以适合您的工作簿)。将值存储在“hText”中 检查hText是否为错

有一列包含文件名块,有一列包含键和值:

我必须将链接“www.111.com”分配给所有AAAAA.jpg区域,“www.222.com”分配给bbb.jpg区域,等等

结果:


如何做到这一点?

我认为以下VBA代码将对您有所帮助。它执行以下步骤:

  • 声明一个范围(“myRange”)并将其设置为单元格A1(您的.JPGs列表的顶部单元格)
  • 声明一个变体(“hText”)
  • 在D:E处的查找表中查找“myRange”中的值(更改以适合您的工作簿)。将值存储在“hText”中
  • 检查hText是否为错误(即,在查找表中未找到该值)。如果是错误,请跳过单元格。如果不是错误,请转至步骤5
  • 向当前“myRange”单元格添加超链接。使用hText作为地址,使用当前“myRange”单元格的文本作为显示的文本
  • 将“myRange”向下移动到下一个单元格。循环步骤3-6,直到到达空单元格
  • 请注意,循环将在到达空单元格时停止,因此如果列表中有间隙,它将不会到达底部。另外,请注意,将跳过查找表中未找到的任何值(不添加超链接)

    在选中包含.JPGs列表的工作表时运行此代码

    Sub AddHyperlinks()
    
    Dim myRange As Range
    Set myRange = Range("A1")
    
    Dim hText As Variant
    
    Do Until IsEmpty(myRange)
    
        hText = Application.VLookup(myRange.Value, Worksheets("Sheet1").Range("D:E"), 2, False)
    
        If IsError(hText) Then
            hText = ""
        Else
            ActiveSheet.Hyperlinks.Add Anchor:=myRange, Address:=hText, TextToDisplay:=myRange.Text
            hText = ""
        End If
    
        Set myRange = myRange.Offset(1, 0)
    Loop
    
    End Sub
    

    在C列中,您可以执行
    =hyperlink(B1,A1)
    ?是的,但在第二个列表中,我有一个值,必须用于填充第一个列表。我想我必须比较A列(从第一个列表)和A列(从第二个列表)中的值,如果它们相等,就给它B列(从第二个列表)中的超链接。但是我不知道如何使用vbsAhh,那么我想您可以使用
    vlookup()
    来匹配第二个列表中的URL。在您的第一个列表b1中,它类似于超链接(vlookup(a1,Sheet2!a1:B3,2),a1)。我想这应该行得通。谢谢,我明白这一点。。。但是我可以在同一列上做这个吗?或者用超链接保存值,但delete=hyperlink(vlookup(a1,Sheet2!a1:B3,2),a1)?我只需要一列链接SOP,你不能隐藏输入列吗?如果没有,VBA可以提供帮助。谢谢,差不多完成了。)此脚本提供链接file:///C:\用户\user\u name\Desktop\www.111.com而不是www.111.com。。。也许我必须更改一些内容?@ZeroEight抱歉,我不确定链接的格式,因为示例数据(我假设)不是您的实际链接文本(例如www.one.com)。Excel可以超链接到文件或internet,因此您需要http(s)来告诉它在internet上查看,而不是在计算机上的某个位置哦,我还有一个问题。如果我有超过100k的链接。每个文档的链接数会有问题吗?我如何才能为所有AAAAA.jpg区域提供1个链接?@ZeroEight我不确定您是否可以绕过最大超链接限制。这将是值得研究的,可能是一个新的问题,所以如果没有答案或解决办法,对不起