Это будет быстрый макрос для этого:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Sheet2.UsedRange
'note, this won't copy to row 1, leaving headers intact.
Target.EntireRow.Copy (.Rows(.Rows.Count + 1).EntireRow)
End With
End Sub
Тем не менее, использование его с изменением выбора может быть довольно раздражающим, потому что оно будет выполняться каждый раз, когда вы выбираете другую ячейку - так что вы можете подумать об использовании какой-либо обратной проверки или другого способа выполнить это.
Может быть, просто использовать код в качестве пользовательского макроса и назначить ярлык.
редактировать
Если вы хотите сделать это только с формулами, вам нужно настроить каждую ячейку строки назначения с помощью формулы. Я не знаю способа изменить ячейку напрямую, используя формулу, кроме, конечно, ячейки с формулой.
Тогда я бы предложил использовать другие именованные диапазоны, VLOOKUP или MATCH.
Именованный диапазон может быть очень близок к тому, что вы заявили:
На листе назначения:
A1=14
A2=MYRANGE
B2=MYRANGE
.
.
.
IV2=MYRANGE
MYRANGE определяется как
=INDIRECT("SourceSheet!"&DestSheet!$A$1&":"&DestSheet!$A$1)
Это даст вам строку 14 листа назначения. Это также будет работать, если A1 находится на SourceSheet, просто измените его соответствующим образом.
Так же легко вы можете использовать два именованных диапазона:
MYDESTRANGE=SourceSheet!MYSOURCERANGE
Изменив MYSOURCERANGE на другую строку, вы бы эффективно изменили источник MYDESTRANGE, используя ту же строку, что и раньше.