如何使用VBA转换链接

如何使用VBA转换链接,vba,excel,Vba,Excel,假设我在一张纸上有一行: A1 B1 C1 D1 E1 我想将这些单元格的链接复制、转置并粘贴到Excel中的另一个工作表中,如下所示: =Sheet2!A1 =Sheet2!B1 =Sheet2!C1 =Sheet2!D1 =Sheet2!E1 有没有办法用VBA实现这一点?出于某种原因,这段代码不起作用,我得到的只是 =Sheet2!A1 =Sheet2!A2 等等 这将从打开的工作表的A1:A4范围中获取值,并使用初始范围的起始列和起始行将其放入工作表(2)中 Option Exp

假设我在一张纸上有一行:

A1 B1 C1 D1 E1
我想将这些单元格的链接复制、转置并粘贴到Excel中的另一个工作表中,如下所示:

=Sheet2!A1
=Sheet2!B1
=Sheet2!C1
=Sheet2!D1
=Sheet2!E1
有没有办法用VBA实现这一点?出于某种原因,这段代码不起作用,我得到的只是

=Sheet2!A1 
=Sheet2!A2
等等


这将从打开的工作表的A1:A4范围中获取值,并使用初始范围的起始列和起始行将其放入工作表(2)中

Option Explicit

Sub TransposeMe()

    Dim my_cell         As Range
    Dim l_counter       As Long
    Dim l_row           As Long
    Dim l_col           As Long

    l_row = Range("A1:D1").Row
    l_col = Range("A1:D1").Column

    For Each my_cell In Range("A1:D1")
        Sheets(2).Cells(l_row, l_col) = my_cell
        l_row = l_row + 1
    Next my_cell

End Sub

避免在vba中复制/粘贴

Sub test()

    Dim i As Integer, ii As Integer
    Dim ws As Worksheet

    Set ws = Worksheets("DB 1,5") 'insert euro character back

    '4 is column D
    '33 is column AG
    For i = 4 To 33
        ws.Cells(287 + ii, 6).FormulaR1C1 = "=Data_All_01!R23C" & i
        ii = ii + 1
    Next

End Sub

这不是转置应该做的吗?把一行“旋转”成一列?如果这不是您想要的,只需省去
转置:=True
-Part。如果我不转置它,它只会水平粘贴链接(即使它会正确粘贴链接,保留列名)。我想复制链接并垂直粘贴它们。您写道您想将单元格值从
A1 B1 C1…
粘贴到
Sheet2!A1张2!B1表2!C1…
-我看不出你想在这里旋转任何东西:/n你可能在谈论一个单元格内的文本方向吗?不是值,而是指向这些单元格的链接。如果我不转置,它会将它们水平粘贴在单元格A1、B1、C1、D1等的Sheet1中,但我希望它们粘贴在单元格A1、A2、A3、A4等的Sheet1中。所以现在的问题是链接的目标被转置了,而不是链接的位置?谢谢你的回答,但我为什么要避免复制/粘贴?这比大多数其他选项都慢
Sub test()

    Dim i As Integer, ii As Integer
    Dim ws As Worksheet

    Set ws = Worksheets("DB 1,5") 'insert euro character back

    '4 is column D
    '33 is column AG
    For i = 4 To 33
        ws.Cells(287 + ii, 6).FormulaR1C1 = "=Data_All_01!R23C" & i
        ii = ii + 1
    Next

End Sub