如何使用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