2016-10-08 143 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

相關問題