Использование значения из существующей ячейки внутри формулы - PullRequest
2 голосов
/ 09 января 2012

Я использую функцию «Камера» в Excel 2010.

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

Например: Ячейка A1 имеет: 12.25

Чуть ниже у меня есть: ='C:\My_Excel_Files\[excelDataFile.xlsx]12.25'!$A$1:$D$20

Так что, если бы я изменил значение ячейки A1 на 12.26, формула подобрала бы это автоматически.

Я попытался использовать косвенную функцию, например: ='C:\My_Excel_Files\[excelDataFile.xlsx]INDIRECT(A1)'!$A$1:$D$20

но это не сработало.

Ответы [ 3 ]

1 голос
/ 22 января 2012

Как уже упоминалось на этом форуме и на этом сайте , вы можете использовать бесплатную надстройку MOREFUNC.XLL.Он предоставляет функцию INDIRECT.EXT, которая будет делать именно то, что вы запрашиваете.В вашем случае необходимая формула будет выглядеть следующим образом:

=INDIRECT.EXT("'C:\My_Excel_Files\[excelDataFile.xlsx]" & A1 & "'!$A$1:$D$20")

Где вы объединяете значение A1 в середине строки.

Примечание: ссылки на этих сайтах, кажется, не всегда работают, вы можете или Google для "MOREFUNC скачать" или попробуйте одну из этих ссылок:

http://download.cnet.com/Morefunc/3000-2077_4-10423159.html
http://www.freewarefiles.com/Morefunc_program_14922.html

0 голосов
/ 19 января 2012

да, это довольно просто. создайте два документа xlsx, назовем их s1.xlsx и s2.xlsx . Мы хотим создать камеру из s1 , но данные находятся в s2 .

в с2

  • с обоими открытыми листами создайте то, что вы хотите, в s2 . затем выберите его все и нажмите кнопку «Копировать».

в с1

  • , затем вернитесь к s1 и, где бы вы ни хотели поместить его, выберите верхняя левая ячейка того, что вы будете вставлять.
  • затем перейдите к кнопке вставки, но нажмите на ее выпадающий список. вторая иконка будет звеном цепи, и если вы наведите указатель мыши, появится надпись «вставить ссылку» сделай это.
  • затем выберите все ваши данные, которые вы хотите (включая вставленную ссылку ячейки) и нажмите кнопку камеры (если вы добавили ее в ваш QAT). затем выберите место, куда вы хотите поместить скриншот камеры на s1 в любом месте и нажмите там. снимок экрана будет создан.
  • ( Примечание : вставленная ссылка будет выглядеть примерно так =Excel.Sheet.12|'C:\Users\Me\Desktop\s2.xlsx'!'!Sheet1!R3C1:R4C2')

в с2

  • , затем вернитесь к s2 и измените любое из значений в связанные ячейки (я)

в с1

  • вы увидите значения, отраженные на снимке экрана в s1 немедленно.
0 голосов
/ 09 января 2012

Возможно, вам подойдет немного другой подход. Давайте предположим, что:

  1. Объект изображения камеры называется MyCameraImage
  2. «Другая» рабочая книга называется SO09.xlsm
  3. диапазон, которому соответствует ваше изображение, равен $F$1:$I$5 и одинаков на всех соответствующих листах
  4. ячейка, в которую вы вводите дату (на листе с изображением с камеры): A1

Добавление события Worksheet_Change на лист с изображением камеры

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim wbOther As Workbook
    Dim wsOther As Worksheet

    If Not Intersect(Target, Me.[A1]) Is Nothing Then
        Set wbOther = Workbooks("SO09.xlsm")
        On Error GoTo EH
        Set wsOther = wbOther.Worksheets(CStr([A1]))
        Me.Shapes("MyCameraImage").DrawingObject.Formula = "='[" & wbOther.Name & "]" & [A1] & "'!$F$1:$I$5"
EH:
    End If

End Sub

Это обновит ссылку на изображение с камеры на лист, указанный в ячейке A1 (если он существует)
Обратите внимание, что «другая» книга должна быть открыта, чтобы это работало и чтобы изображение обновлялось

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