2016-10-08 144 views
0

我有两张工作表(称为ONE和TWO)。我想将一个固定范围的单元格从一个复制到另一个目标中。但TWO中的目标地址是ONE中固定单元格中的字符串值。将单元格从一个单元格复制到另一个单元格 - 目标地址是单元格中的一个字符串

例如,ONE!C37的字符串值为“A1500”。我想复制一个单元格!A32:ONE!W32到TWO!A1500。而且,由于ONE!C37单元格中字符串的值发生变化,因此TWO中的目标目标值也会发生变化。

一定很容易,但我看不出如何做到这一点。任何帮助将不胜感激。

回答

0

丰富。试试这个:

Sub movetosheet2() 
Dim sheet_one_rng As Range: 
Dim sheet_two_rng As Range: 
Dim sheet_two_address As String: 

Set sheet_one_rng = Worksheets("Sheet1").Range("A1:B5") 
'Set the range from sheet 1 you'd like to copy onto sheet two 

sheet_two_address = Worksheets("Sheet1").Range("D1").Value 
'Supposing your location of "A1500" is stored in cell D1 on Sheet1 
'Note that the value of the D1 cell needs to be A1500:A1500 
'and NOT just A1500 
'You are essentially generating a string to pass into a range argument 

'Set the destination range on Sheet 2 using your string 

Set sheet_two_rng = Worksheets("Sheet2").Range(sheet_two_address) 
'Use the Range.Copy method 
sheet_one_rng.Copy Destination:=sheet_two_rng 

End Sub 

希望有帮助!

+0

失败的与以下user3598756提供的代码相同。看到我对他的解释。总之,复制的源单元格来自目标工作表,而不是来源工作表,以及来自错误的列和错误的行。 – rich

+0

谢谢 - 我想我知道这个问题。单元格A32:W32链接到并从上面的单元格的垂直范围获取它们的值。例如单元格A32具有公式“= C4”。所以,我需要用TRANSPOSE进行复制。我需要复制到目标的值位于一组垂直的单元格中(C4:C27)。他们将被复制到一组水平的单元格。我想只复制单元格的值,而不是格式化 – rich

+0

听起来像你想出来的,基于你的评论user3598756,很高兴听到 – kpg987

0

尝试下面的代码:

Sub CopyRange() 

Dim RngSource   As Range 
Dim RngDest    As Range 
Dim DestString   As String 


' set source range from sheet "ONE" 
Set RngSource = Sheets("ONE").Range("A32:W32") 

' read destination range from cell "A37" in sheet "ONE" 
DestString = Sheets("ONE").Range("A37").Value 

' set destination range from sheet "TWO" 
Set RngDest = Sheets("TWO").Range(DestString) 

' copy from Sheet "ONE" to Sheet "TWO" 
RngSource.Copy Destination:=RngDest 

End Sub 
0

你只需要一条线:

Worksheets("ONE").Range("A32:W32").Copy Destination:=Worksheets("TWO").Range(Worksheets("ONE").Range("C37").Value) 

,或者使用With-End With块和避免一些重复:

With Worksheets("ONE") 
    .Range("A32:W32").Copy Destination:=Worksheets("TWO").Range(.Range("C37").Value) 
End With 
+0

谢谢,但是做了一些非常奇怪的换位 - 并使用错误的源单元格。 ?\t单元格C37中的字符串是“A1877”,因此它应该将单元格A32:W32复制到另一个工作表中的行1877。 •\t但实际发生的是错误的源单元格被复制到该目标行。复制的源单元格不是来自当前工作表(“ONE”),而是从目标工作表中的错误位置复制而来。实际的源单元格来自“TWO!C1848:1871”... ... 因此,代码会从错误的源表单中复制错误的源单元格。但目标行是正确的。 – rich

+0

谢谢 - 我想我知道这个问题。单元格A32:W32链接到并从上面的单元格的垂直范围获取它们的值。例如单元格A32具有公式“= C4”。所以,我需要用TRANSPOSE进行复制。我需要复制到目标的值位于一组垂直的单元格中(C4:C27)。他们将被复制到一组水平的单元格。我想复制单元格值而不是格式。 – rich

+0

因此,鉴于我的代码完全符合您在问题中所要求的内容,是否在您评论中提到的那些新环境中完成了它? – user3598756

相关问题