2016-12-12 2 views
1

Lets sagen, dass ich eine Zeile auf einem Blatt haben:Wie Link transponieren VBA

A1 B1 C1 D1 E1 

ich kopieren möchten, transponieren und Einfügen von Links zu den Zellen auf ein anderes Blatt in Excel wie folgt:

=Sheet2!A1 
=Sheet2!B1 
=Sheet2!C1 
=Sheet2!D1 
=Sheet2!E1 

Gibt es eine Möglichkeit, dies mit VBA zu tun? Aus irgendeinem Grund ist dieser Code nicht funktioniert und alles, was ich bekommen ist

=Sheet2!A1 
=Sheet2!A2 

usw.

Sub Pastelinks() 
Worksheets("Data_All_01").Range("$D$23:$AG$23").Copy 
With Worksheets("DB 1,5€").Range("$F$287") 
    .PasteSpecial Transpose:=True 
    .Activate 
    ActiveSheet.Paste Link:=True 
End With 
End Sub 
+0

Ist das nicht das, was soll transponieren ist tun? Nimm eine Reihe und "rotiere" sie in eine Spalte? Wenn Sie das nicht möchten, lassen Sie den Transpose: = True-Part einfach weg. – Verzweifler

+0

Wenn ich es nicht transponiere, wird es nur die Links horizontal einfügen (obwohl es sie richtig einfügen wird, die Spaltennamen behaltend). Ich möchte die Links kopieren und vertikal einfügen. – user628797

+0

Sie haben geschrieben, dass Sie die Zellenwerte von 'A1 B1 C1 ...' in 'Sheet2! A1 Sheet2! B1 Sheet2! C1 ...' einfügen wollen - Ich kann hier nicht sehen, wo Sie etwas drehen wollen:/Sprechen Sie vielleicht über Textausrichtung in einer Zelle? – Verzweifler

Antwort

1

Vermeiden Sie Kopieren/Einfügen in 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 
+0

Danke für die Antwort, aber warum sollte ich Copy/Paste vermeiden? – user628797

+0

ist es langsamer als die meisten anderen Optionen – Kelaref

1

Dadurch werden die Werte aus dem Bereich A1 nehmen: A4 des geöffneten Arbeitsblatt und wird sie in Blatt setzen (2), unter Verwendung der Anfangsspalte und der Reihe des Anfangsbereichs.

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