Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Excel 将第1行数据(标题)列在另一张图纸的列中,并创建超链接_Excel_Vba - Fatal编程技术网

Excel 将第1行数据(标题)列在另一张图纸的列中,并创建超链接

Excel 将第1行数据(标题)列在另一张图纸的列中,并创建超链接,excel,vba,Excel,Vba,我没有找到宏来实现我的目标,现在我已经用尽了我的搜索能力 我有两张工作表 1-数据表 2-所有标题 我希望宏从工作表“数据表”复制第1行数据,将其转换并粘贴到工作表“AllHeaders”中,并创建指向该标题的超链接。 比你强 这里是录制的宏,但我只录制了两列标题超链接,因为有数千个标题是手动完成的,这需要一天的时间 Sub Macro1() ' ' Macro1 Macro ' ' Range("A1").Select Range(Selection, Selection.End

我没有找到宏来实现我的目标,现在我已经用尽了我的搜索能力

我有两张工作表 1-数据表 2-所有标题

我希望宏从工作表“数据表”复制第1行数据,将其转换并粘贴到工作表“AllHeaders”中,并创建指向该标题的超链接。 比你强

这里是录制的宏,但我只录制了两列标题超链接,因为有数千个标题是手动完成的,这需要一天的时间

  Sub Macro1()
 '
 ' Macro1 Macro
 '

 '
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets("AllHeaders").Select
Range("B5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=True
Range("B5").Select
Application.CutCopyMode = False
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
    "DataSheet!A1", TextToDisplay:="responseid"
Range("B6").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
    "DataSheet!B1", TextToDisplay:="respid"
End Sub

尝试在循环中执行此操作。我目前无法测试这一点,但它应该是您所需要的大部分:

Sub CreateHeaders()
    Dim wsData as Worksheet
    Dim wsHeaders as Worksheet
    Dim headerRange as Range
    Dim header as Range
    Dim i as Long: i=0
    Dim anchor as Range
    DIm subAddr as String

    Set wsData = Worksheets("DataSheet")
    Set wsHeaders = Worksheets("AllHeaders")
    Set headerRange = wsData.Range("A1", wsData.Range("A1").End(xlToRight))
    Set anchor = wsHeaders.Range("B5")  '## begin inserting the hyperlinks at B5

    For each header in headerRange  '## iterate over each cell in the header row
        subAddr = "'" & wsData.Name & "'!" & header.Address
        With wsHeaders
            .Hyperlinks.Add Anchor:=anchor, Address:="", SubAddress:= _
                 subAddr, TextToDisplay:=header.Value
        End With
        i = i+1  
        Set anchor = anchor.Offset(i,0)  '## increment the location of the next hyperlink, to the next row
    Next

End Sub

你试过录制一个宏并以此为起点吗?我运行了宏,得到了这样的结果:1)没有在“AllHeaders”工作表中转置标题,虽然在一行的某些空白列后复制了标题,2)hyperlink没有链接到“Datasheet”工作表。它链接到了“AllHeaders”工作表。我做了一些修改。现在应该进行转置,以便所有标题都位于B列中,从
B5
开始。另外,我想我做了一个修改,使链接到
数据表
工作表。Hyperlink运行良好,但在空行间隔后,所有标题都被转置,行数正在增加。第一个标题从B5开始,但第三个标题粘贴在一个空白行之后,它正在校正…将其更改为
设置锚定=锚定。偏移量(1,0)
而不是
设置锚定=锚定。偏移量(i,0)
。哇,现在它工作了,它工作起来像个魔咒!非常感谢。真的很感谢你……非常感谢你。