Есть ли в Excel способ редактировать выбранную строку на другом листе? - PullRequest
0 голосов
/ 17 марта 2011

Я изо всех сил, интересно, есть ли какой-нибудь простой способ ссылки на ячейку из текущей / активной строки.

то есть - у меня есть 2 листа, один с большим количеством информации, а второй я хочуотображать информацию из текущей / активной строки на листе 1.

Так, скажем, строка 5 была выбрана на листе 1. Затем, если вы перешли на лист 2, вся информация из строки 5 будет отображаться на листе 2. Тогда еслиВы выбрали строку 8 на Листе 1, информация на Листе 2 будет обновлена, чтобы отображать только информацию из строки 8 на Листе 1.

Любые изменения, сделанные вами на Листе 2, будут отражены, когда вы вернетесь кЛист 1.

Может быть, есть простая формула, которую я мог бы добавить к ячейкам на Листе 2?Может быть, что-то вроде:

cell A1 on sheet 2 have =sheet1(active_row.colum1) 

and then cell A2 on sheet 2 have =sheet1(active_row.colum2) 

и т. Д. И т. Д.

Мне удалось заставить его работать, используя макрос, но единственная проблема заключается в том, что когда я изменяю информациюна листе 2 он не обновляет информацию на листе 1. Если бы был способ добавить эту функциональность в мой код, это было бы здорово.

Это код, который у меня есть:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim myList
If Target.Address <> Target.EntireRow.Address Then Exit Sub
If Target.Rows.Count > 1 Then Exit Sub
myList = [{"B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","B11","B12","B13","B14","B15"}] '<- adjust to your need
With Target.EntireRow
    For i = 1 To UBound(myList)
        Sheets("sheet2").Range(myList(i)).Value = .Cells(i).Value
    Next
End With
End Sub

Есть предложения?:)

Ответы [ 2 ]

1 голос
/ 18 марта 2011

Краткий ответ: нет, Excel не работает таким образом:

Вы не можете сделать это с формулой. Нет никаких функций, которые работают с активной ячейкой на активном листе или другом листе. Также механизм вычислений Excel не распознает необходимость пересчета при изменении выбора или перемещении между листами.

0 голосов
/ 25 марта 2011

Да, вы можете сделать это, но это немного сложно .

Вы хотите, чтобы выбранная строка на Листе 1 отображалась на Листе 2, а затем иметь возможность редактироватьЛист 2 для автоматического обновления Листа 1.

Что вам нужно сделать, это использовать событие «Выбор» как есть, и скопировать строку на Лист 2. Затем необходимо использовать событие «Активировать» на Листе 1, чтобы скопироватьВернемся к листу 1. Обратите внимание, что в следующем коде предполагается, что в листе 1 нет функций листа (формул) в ячейках, вы все равно можете это сделать, но вам придется сохранить формулы и заменить их.

Код 1 листа:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Address <> Target.EntireRow.Address Then Exit Sub
If Target.Rows.Count > 1 Then Exit Sub

Target.EntireRow.Copy
Sheets("Sheet2").Activate
Sheets("Sheet2").Range("A1") = Target.Row
Sheets("Sheet2").Rows(2).PasteSpecial (xlPasteValues)

End Sub

Код 2 листа:

Private Sub Worksheet_Deactivate()

If Sheets("Sheet2").Range("A1") > 0 Then
  Sheets("Sheet2").Rows(2).Copy
  Sheets("Sheet1").Activate
  ActiveSheet.Rows(Sheets("Sheet2").Range("A1")).EntireRow.PasteSpecial (xlPasteValues)
  Sheets("Sheet2").UsedRange.ClearContents
End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...