2016-10-08 1 views
0

У меня есть два листа (назовите их ОДИН и ДВА). Я хочу скопировать фиксированный диапазон ячеек из ONE в цель в два раза. Но целевой адрес в TWO является строковым значением в фиксированной ячейке в ONE.копировать ячейки с одного листа на другой - где целевой адрес является строкой в ​​ячейке

Например, ONE! C37 имеет строковое значение «A1500». И я хочу скопировать ячейки из ONE! 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

это терпит неудачу в то же самое, что и код, предоставленный пользователем3598756 ниже. см. мое объяснение ему. в итоге, скопированные исходные ячейки взяты из целевого листа, а не из исходного текста, и из неправильного столбца и неправильных строк. – 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 Но на самом деле происходит то, что неправильные исходные ячейки копируются в эту строку назначения. Скопированные исходные ячейки не относятся к текущему листу («ОДИН»), а копируются с неправильного места на целевом листе. Фактические ячейки-источники от «TWO! C1848: 1871» ... Так что код копирует неправильные исходные ячейки с неправильного исходного текста. Но строка назначения верна. – rich

+0

Спасибо, я знаю, что знаю проблему. ячейки A32: W32 связаны и получают их значения из вертикального диапазона ячеек выше. например, ячейка A32 имеет формулу «= C4». Итак, мне нужно скопировать с TRANSPOSE. Значения, которые мне нужно скопировать в цель, находятся в вертикальном наборе ячеек (C4: C27). И они должны быть скопированы в горизонтальный набор ячеек. и я хотел бы просто скопировать значения ячеек, а не форматировать. – rich

+0

Итак, учитывая, что мой код делает именно то, о чем вы просили в своем вопросе, пропустили ли вы его с теми новыми обстоятельствами, о которых вы писали в своем комментарии? – user3598756

Смежные вопросы