Номер ячейки в excel как переменная
Перейти к содержимому

Номер ячейки в excel как переменная

  • автор:

Переменные

Microsoft Power Fx — это новое название языка формул приложений на основе холста. Эти статьи находятся в стадии разработки, поскольку мы извлекаем язык из приложений на основе холста, интегрируем его с другими продуктами Microsoft Power Platform и делаем его доступным как открытый исходный код. Начнем с Обзор Microsoft Power Fx для введения в язык.

Если вы использовали другое средство программирования, например Visual Basic или JavaScript, у вас может возникнуть вопрос: Где переменные? Microsoft Power Fx немного отличается и требует иного подхода. Вместо того, чтобы при создании формула мыслить в категориях переменных, спросите себя: Как это делается в электронной таблице?

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

В некоторых случаях в Power Fx необходимо использовать переменные, которые расширяют модель Excel, добавляя в нее формулы поведения. Эти формулы, например, выполняются, когда пользователь нажимает кнопку. В формуле поведения зачастую удобно задать переменную, которую можно использовать в других формулах.

Как правило, использовать переменные нежелательно. Однако иногда только с их помощью можно обеспечить желаемые возможности. Переменные неявно создаются и типизируются, когда они появляются в функциях, которые устанавливают их значения.

Реализация подхода Excel в Power Fx

Excel

Давайте посмотрим, как работает Excel. Ячейка может содержать значение, например число, строку или формулу, в которой используются значения других ячеек. После того как пользователь вводит другое значение в ячейку, Excel автоматически пересчитывает все формулы, которые зависят от нового значения. При этом для обеспечения такого поведения не нужно ничего программировать.

В следующем примере в ячейке A3 установлена формула A1+A2. Если ячейка A1 или A2 изменяется, ячейка A3 автоматически пересчитывается, чтобы отразить изменение. Такое поведение не требует кодирования вне самой формулы.

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

Power Fx

Логика, создаваемая в Power Fx, во многом напоминает алгоритмы Excel. Вместо обновления ячеек можно добавить элементы управления в любом месте на экране и присвоить им имена, чтобы их можно было использовать в формулах.

Например,в Power Apps можно воспроизвести поведение Excel в приложении, добавив элемент управления Метка с именем Label1 и два элемента управления Текстовое поле с именами TextInput1 и TextInput2. Если затем задать для свойства Text элемента управления Label1 значение TextInput1 + TextInput2, в результате всегда будет автоматически отображаться сумма любых чисел, указанных в элементах управления TextInput1 и TextInput2.

Вычисление суммы двух чисел в Power Fx.

Обратите внимание, что при выборе элемента управления Label1 в строке формулы в верхней части экрана отображается его формула Text. В данном случае она выглядит таким образом: TextInput1 + TextInput2. Эта формула создает между этими элементами управления такую же зависимость, как между ячейками в книге Excel. Изменим значение TextInput1.

Формула для Label1 автоматически пересчитывается, и на экране отображается новое значение.

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

Формулы можно использовать в самых разнообразных сценариях.

  • Используя GPS-модуль устройства, элемент управления картой может отобразить ваше текущее расположение с помощью формулы, использующей значения Location.Latitude и Location.Longitude. При перемещении карта будет автоматически отслеживать расположение.
  • Другие пользователи могут обновлять источники данных. Например, другие участники группы могут обновлять элементы в списке SharePoint. При обновлении источника данных все зависимые формулы автоматически пересчитываются, в результате чего отображаются обновленные данные. Дополнив этот пример, можно задать коллекцию свойства Items в формуле Filter( SharePointList ), что обеспечит автоматическое отображение заново отфильтрованного набора записей.

Льготы

Использование формул для создания приложений дает множество преимуществ.

  • Если вы умеете работать с Excel, вы умеете работать с Power Fx. Модель и язык формул у них одинаковы.
  • Если вы использовали другие средства программирования, представьте себе, сколько бы вам пришлось написать кода, чтобы обеспечить вычисления, приведенные в этих примерах. В Visual Basic необходимо написать обработчик событий для события изменения в каждом текстовом поле. Код, необходимый для выполнения вычисления в каждом из них, избыточен и может не синхронизироваться, или же вам придется написать общие подпрограммы. В Power Fx все это можно сделать с помощью единственной формулы в одну строку.
  • Чтобы понять, откуда берется текст Label1, просто посмотрите на формулу в свойстве Text. Повлиять на текст данного элемента управления другими способами невозможно. В традиционных средствах программирования любые подпрограммы и обработчики событий могут изменить значение метки из любого места в программе. Из-за этого иногда сложно отследить, где и когда была изменена переменная.
  • Изменив положение ползунка, пользователь может передумать и вернуть его в исходное положение. В результате как бы ничего не происходит: приложение отображает такие же значения элемента управления, как и раньше. Нет никаких ответвлений для экспериментирования и задания вопросов «что, если», так же как их нет в Excel.

Как правило, если желаемого эффекта можно добиться с помощью формулы, лучше использовать именно ее. Обработчик формул Power Fx сделает всю работу автоматически.

Ситуации, в которых имеет смысл использовать переменные

Давайте изменим наш простой сумматор так, чтобы он функционировал по принципу старинного арифмометра, используя нарастающий итог. При нажатии кнопки Добавить число добавляется к нарастающему итогу. При нажатии кнопки Очистить нарастающий итог обнуляется.

Отобразить Описание
Приложение с элементом управления вводом текста, меткой и двумя кнопками. Когда приложение запускается, нарастающий итог равен 0.

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

Иногда, чтобы приложения вели себя необходимым образом, требуется использовать переменные. Однако такой подход применим с некоторыми оговорками.

  • Нарастающий итог необходимо обновлять вручную. При автоматическом пересчете эта операция не выполняется.
  • Нарастающий итог больше нельзя рассчитать на основе значений других элементов управления. Он зависит от того, сколько раз пользователь нажимает кнопку Добавить и какое значение при этом содержится в элементе управления текстовым вводом на момент ее нажатия. Ввел ли пользователь 77 и нажал Добавить дважды или же указал 24 и 130 в качестве слагаемых? После того как итог станет равным 154, определить разницу невозможно.
  • Итог может изменяться по разным причинам. В этом примере к его изменению может приводить нажатие кнопок Добавить и Очистить. Как определить, какая кнопка вызывает проблему, если приложение не работает должным образом?

Использование глобальной переменной

Чтобы создать арифмометр, нам понадобится переменная для хранения нарастающего итога. Простейшие переменные в Power Fx — это глобальные переменные.

Принцип их действия заключается в следующем:

  • Значение глобальной переменной задается с помощью функции Set. Set( MyVar, 1 ) задает для глобальной переменной MyVar значение 1.
  • Используйте эту глобальную переменную, ссылаясь на ее имя в функции Set. В этом случае MyVar возвращает значение 1.
  • В глобальных переменных может храниться любое значение, в том числе строки, числа, записи и таблицы.

Перестроим наш арифмометр, воспользовавшись глобальными переменными.

  1. Добавьте элемент управления ввода текста с именем TextInput1 и две кнопки с именами Button1 и Button2.
  2. Задайте для свойства Text элемента управления Button1 значение «Добавить», а для свойства Text элемента управления Button2 — значение «Очистить».
  3. Чтобы нарастающий итог обновлялся, когда пользователь нажимает кнопку Добавить, задайте следующую формулу в качестве значения свойства OnSelect: Set( RunningTotal, RunningTotal + TextInput1 ) Само существование этой формулы устанавливает RunningTotal в качестве глобальной переменной, которая содержит число из-за оператора +. Вы можете ссылаться на RunningTotal в любом месте приложения. Всякий раз, когда пользователь открывает это приложение, RunningTotal имеет начальное пустое значение, Первый раз, когда пользователь выбирает кнопку Добавить и выполняется функция Set, для RunningTotal устанавливается значение RunningTotal + TextInput1. Для свойства OnSelect кнопки
  4. Чтобы нарастающий итог становился равным 0, когда пользователь нажимает кнопку Очистить, задайте в качестве значения его свойства OnSelect следующую формулу: Set( RunningTotal, 0 )Для свойства OnSelect кнопки
  5. Добавьте элемент управления Label (Метка) и задайте для его свойства Text значение RunningTotal. Эта формула пересчитывается автоматически, а для пользователя отображается значение RunningTotal, которое изменяется в зависимости от нажимаемых им кнопок. Для свойства Text метки установлено имя переменной.
  6. Перейдите в режим предварительного просмотра приложения, и вы увидите, что наш арифмометр работает, как описано выше. Введите число в текстовое поле и нажмите кнопку Добавить несколько раз. Выполнив эти действия, вернитесь к разработке, нажав клавишу ESC. Элемент управления вводом текста содержит значение, а метка содержит нарастающий итог.
  7. Чтобы показать значение нашей глобальной переменной, щелкните меню Файл и на панели слева выберите Переменные. Параметр
  8. Выберите переменную, чтобы показать все случаи ее определения и использования. Список мест, где используется переменная.

Типы переменных

Power Fx имеет два типа переменных:

Тип переменных Область действия Description Функции, которые устанавливают
Глобальные переменные Приложение Самые простые в использовании. В них могут храниться любые значения, в том числе числа, текстовые строки, логические значения, записи, таблицы и т. п., на которые можно ссылаться из любого места в приложении. Set
Коллекции Приложение Содержит таблицу, на которую можно ссылаться из любого места в приложении. Позволяет изменять содержимое таблицы вместо того, чтобы задать все содержимое сразу. Можно сохранить на локальном устройстве для дальнейшего использования. Collect
ClearCollect

При использовании в Power Apps существует третий тип переменных:

Тип переменных Scope Описание Функции, которые устанавливают
Переменные контекста Экран Отлично подходят для передачи значений на экран, похожи на параметры для процедур на других языках. На них можно ссылаться только с одного экрана. UpdateContext
Navigate

Создание и удаление переменных

Все переменные создаются неявно, когда они появляются в функции Set, UpdateContext, Navigate, Collect или ClearCollect. Чтобы объявить переменную и ее тип, вам нужно только включить ее в любую из этих функций в любом месте вашего приложения. Ни одна из этих функций не создает переменные; они только заполняют переменные значениями. Вы никогда не объявляете переменные явно, как в другом инструменте программирования, и вся типизация неявна по использованию.

Например, у вас может быть элемент управления «Кнопка» с формулой OnSelect равной Set( X, 1 ). Эта формула устанавливает X как переменную с типом числа. Вы можете использовать X в формулах в виде числа, и эта переменная имеет пустое значение после открытия приложения, но до нажатия кнопки. Когда вы выбираете кнопку, вы задаете для X значение 1.

Если вы добавите еще одну кнопку и установите для ее свойства OnSelect значение Set( X, «Hello» ), возникает ошибка, потому что тип (текстовая строка) не соответствует типу предыдущего вызова функции Set (число). Все неявные определения переменной должны иметь согласованный тип. Опять же, все это произошло потому, что вы упомянули X в формулах, а не потому, что какая-то из этих формул действительно выполнялась.

Вы удаляете переменную, удаляя все функции Set, UpdateContext, Navigate, Collect или ClearCollect, которые неявно устанавливают переменную. Без этих функций переменная не существует. Вы также должны удалить все ссылки на переменную, потому что они вызовут ошибку.

Время жизни и начальное значение переменной

Все переменные хранятся в памяти во время выполнения приложения. Когда приложение закрывается, хранящиеся в переменных значения утрачиваются.

Вы можете сохранить содержимое переменной в источник данных, используя функции Patch или Collect. Вы также можете сохранить значения в коллекциях на локальном устройстве, используя функцию SaveData.

Когда пользователь открывает приложение, все переменные имеют пустое начальное значение.

Считывание переменных

Чтобы узнать значение переменной, используйте ее имя. Например, вы можете определить переменную с помощью этой формулы:

Тогда вы можете просто использовать переменную Radius везде, где вы можете использовать число, и она будет заменена на 12:

Pi() * Power( Radius, 2 )

Если вы присвоите контекстной переменной то же имя, что и глобальной переменной или коллекции, она будет иметь приоритет. Однако вы по-прежнему можете ссылаться на глобальную переменную или коллекцию, если используете оператор устранения неоднозначности[@Radius].

Использование переменной контекста (только Power Apps)

Давайте попробуем создать наш арифмометр, используя переменную контекста вместо глобальной переменной.

Принцип действия контекстных переменных заключается в следующем:

  • Вы неявно определяете и задаете переменные контекста с помощью функции UpdateContext или Navigate. Когда приложение запускается, все переменные контекста имеют пустое начальное значение.
  • Для обновления переменных контекста используются записи. В других средствах программирования для присвоения значений обычно используется оператор «=», например «x = 1». Для переменных контекста вместо этого используется . Когда вы используете переменную контекста, используйте ее имя напрямую без синтаксиса записи.
  • Переменную контекста можно также задать при использовании функции Navigate для отображения экрана. Если представить, что экран — это своего рода процедура или подпрограмма, то такой подход напоминает передачу параметров в других средствах программирования.
  • За исключением функции Navigate, переменные контекста ограничены контекстом одного экрана (того, на котором им было присвоено их имя). Их нельзя использовать или задать вне данного контекста.
  • В переменных контекста может храниться любое значение, в том числе строки, числа, записи и таблицы.

Перестроим наш арифмометр, воспользовавшись переменными контекста:

  1. Добавьте элемент управления ввода текста с именем TextInput1 и две кнопки с именами Button1 и Button2.
  2. Задайте для свойства Text элемента управления Button1 значение «Добавить», а для свойства Text элемента управления Button2 — значение «Очистить».
  3. Чтобы нарастающий итог обновлялся, когда пользователь нажимает кнопку Добавить, задайте следующую формулу в качестве значения свойства OnSelect: UpdateContext( < RunningTotal: RunningTotal + TextInput1 >) Само существование этой формулы устанавливает RunningTotal в качестве переменной контекста, которая содержит число из-за оператора +. Вы можете ссылаться на RunningTotal в любом месте этого экрана. Всякий раз, когда пользователь открывает это приложение, RunningTotal имеет начальное пустое значение, Первый раз, когда пользователь выбирает кнопку Добавить и выполняется функция UpdateContext, для RunningTotal устанавливается значение RunningTotal + TextInput1. Свойство OnSelect кнопки
  4. Чтобы нарастающий итог становился равным 0, когда пользователь нажимает кнопку Очистить, задайте в качестве значения его свойства OnSelect следующую формулу: UpdateContext( < RunningTotal: 0 >) Опять же, функция UpdateContext используется с формулой UpdateContext( < RunningTotal: 0 >). Свойство OnSelect кнопки
  5. Добавьте элемент управления Label (Метка) и задайте для его свойства Text значение RunningTotal. Эта формула пересчитывается автоматически, а для пользователя отображается значение RunningTotal, которое изменяется в зависимости от нажимаемых им кнопок. Свойство Text метки.
  6. Перейдите в режим предварительного просмотра приложения, и вы увидите, что наш арифмометр работает, как описано выше. Введите число в текстовое поле и нажмите кнопку Добавить несколько раз. Выполнив эти действия, вернитесь к разработке, нажав клавишу ESC. Элемент управления вводом текста показывает значение, а метка показывает нарастающий итог.
  7. Вы можете задать значение переменной контекста, перейдя на экран. Этот вариант используется для передачи «контекста» или «параметров» с одного экрана на другой. Чтобы продемонстрировать этот прием, вставьте экран, вставьте кнопку и установите для ее свойства OnSelect следующую формулу: Navigate( Screen1, None, < RunningTotal: -1000 >)Свойство OnSelect кнопки.Удерживайте нажатой клавишу ALT, пока вы нажимаете эту кнопку, чтобы показать экран Screen1 и установить для переменной контекста RunningTotal значение –1000. Screen1 открыт.
  8. Чтобы показать значение переменной контекста, щелкните меню Файл, затем на панели слева выберите Переменные. Параметр
  9. Выберите переменную контекста, чтобы показать все случаи ее определения и использования. Список мест, где используется переменная.

Использование коллекции

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

Принцип действия коллекций описан ниже.

  • Создайте и настройте коллекции с помощью функции ClearCollect. Вместо этого можно использовать функцию Collect, но фактически для этого потребуется создать другую переменную, а не заменить имеющуюся.
  • Коллекция — это тип источника данных, который можно представить как таблицу. Чтобы получить доступ к отдельному значению в коллекции, воспользуйтесь функцией First и извлеките одно поле из результирующей записи. Если вы использовали одно значение с ClearCollect, это будет поле Value, как в этом примере:
    First(VariableName).Value

Создадим арифмометр, воспользовавшись коллекцией.

  1. Добавьте элемент управления Ввод текста с именем TextInput1 и две кнопки с именами Button1 и Button2.
  2. Задайте для свойства Text элемента управления Button1 значение «Добавить», а для свойства Text элемента управления Button2 — значение «Очистить».
  3. Чтобы нарастающий итог обновлялся, когда пользователь нажимает кнопку Добавить, задайте следующую формулу в качестве значения свойства OnSelect: Collect( PaperTape, TextInput1.Text ) Само существование этой формулы устанавливает PaperTape как коллекцию, которая содержит таблицу с одним столбцом текстовых строк. Вы можете ссылаться на PaperTape в любом месте этого приложения. Всякий раз, когда пользователь открывает это приложение, PaperTape является пустой таблицей. Когда эта формула выполняется, она добавляет новое значение в конец коллекции. Так как мы добавляем одно значение, функция Collect автоматически помещает его в таблицу с одним столбцом с именем Value, который мы будем использовать позже. Свойство OnSelect
  4. Чтобы очищать «бумажную ленту», когда пользователь нажимает кнопку Очистить, задайте в качестве значения свойства OnSelect следующую формулу: Clear( PaperTape )Свойство OnSelect
  5. Для отображения нарастающего итога добавьте метку и задайте для нее в качестве значения свойства Text следующую формулу: Sum( PaperTape, Value )Метка свойства текста.
  6. Чтобы запустить арифмометр, нажмите F5, чтобы перейти в режим предварительного просмотра, введите число в текстовом поле и нажмите кнопки. Элемент управления вводом текста показывает значение, а метка показывает нарастающий итог.
  7. Нажмите клавишу ESC, чтобы вернуться в рабочую область по умолчанию.
  8. Чтобы отобразить «бумажную ленту», вставьте элемент управления Data table (Таблица данных) и задайте его свойству Items следующую формулу: PaperTape На правой панели выберите Редактировать поля, а затем выберите Добавить поле, выберите столбец Значение, а затем выберите Добавить, чтобы показать. Таблица данных, которая показывает значения, добавленные в коллекцию.
  9. Чтобы просмотреть значения в коллекции, выберите в меню Файл пункт Коллекции. Предварительный просмотр коллекции PaperTape.
  10. Чтобы сохранить и извлечь коллекцию, добавьте две дополнительные кнопки и задайте для их свойств Text значения Загрузить и Сохранить. Задайте для свойства OnSelect кнопки Загрузить такую формулу: Clear( PaperTape ); LoadData( PaperTape, «StoredPaperTape», true ) Сначала нужно очистить коллекцию, так как функция LoadData добавит хранящиеся значения в конец коллекции. Свойство OnSelect
  11. Установите для свойства OnSelect кнопки Сохранить следующую формулу: SaveData( PaperTape, «StoredPaperTape» )Свойство OnSelect
  12. Перейдите в режим предварительного просмотра снова, нажав клавишу F5, введите числа в элементе управления для ввода текста и нажмите кнопки. Выберите кнопку Сохранить. Закройте и перезапустите приложение, затем нажмите кнопку Загрузить, чтобы повторно загрузить коллекцию.

Номер ячейки в excel как переменная

Сообщение доброго времени суток
есть так: А1=D12
хочу так:А1=D(5+7)
реально ли это ? Автор — 0mega
Дата добавления — 31.10.2010 в 11:08

Группа: Админы
Ранг: Местный житель
Сообщений: 16434
Замечаний: ±

Excel 2016
Quote ( 0mega )
реально ли это ?

Вопрос не понял.
Поясните подробнее.
Quote ( 0mega )
реально ли это ?

Вопрос не понял.
Поясните подробнее. Serge_007
Quote ( 0mega )
реально ли это ?

Вопрос не понял.
Поясните подробнее. Автор — Serge_007
Дата добавления — 31.10.2010 в 11:26
Группа: Гости
Может быть имелось ввиду:
A1 =ИНДЕКС(D:D;5+7)
Может быть имелось ввиду:
A1 =ИНДЕКС(D:D;5+7) kim

Сообщение Может быть имелось ввиду:
A1 =ИНДЕКС(D:D;5+7) Автор — kim
Дата добавления — 31.10.2010 в 11:58

Группа: Проверенные
Ранг: Ветеран
Сообщений: 627

Serge_007, здравствуйте
адрес D12 — это столбец D и строка №12
можно ли значение строки задать формулой
т.е. строка12 = строка 9+3 или 14-2
во всех случаях будет 12

Serge_007, здравствуйте
адрес D12 — это столбец D и строка №12
можно ли значение строки задать формулой
т.е. строка12 = строка 9+3 или 14-2
во всех случаях будет 12 0mega

Сообщение Serge_007, здравствуйте
адрес D12 — это столбец D и строка №12
можно ли значение строки задать формулой
т.е. строка12 = строка 9+3 или 14-2
во всех случаях будет 12 Автор — 0mega
Дата добавления — 31.10.2010 в 11:58

Группа: Админы
Ранг: Местный житель
Сообщений: 16434
Замечаний: ±

Excel 2016
Quote ( 0mega )
во всех случаях будет 12

Можно, kim уже ответил
Только зачем, если она всё-равно всегда будет 12?
Quote ( 0mega )
во всех случаях будет 12

Можно, kim уже ответил
Только зачем, если она всё-равно всегда будет 12? Serge_007
Quote ( 0mega )
во всех случаях будет 12

Можно, kim уже ответил
Только зачем, если она всё-равно всегда будет 12? Автор — Serge_007
Дата добавления — 31.10.2010 в 12:01

Группа: Проверенные
Ранг: Ветеран
Сообщений: 627
kim, здравствуйте
Quote ( kim )
A1 =ИНДЕКС(D:D;5+7)

for Serge_007,

Quote ( Serge_007 )
Только зачем, если она всё-равно всегда будет 12?

Это дает возможность обращаться к нужной ячейке по результатам вычислений
(формула ЕСЛИ имеет лимит 7 . При использовании ИНДЕКС(D:D;х+у) здесь снимаются любые ограничения )

kim, здравствуйте
Quote ( kim )
A1 =ИНДЕКС(D:D;5+7)

for Serge_007,

Quote ( Serge_007 )
Только зачем, если она всё-равно всегда будет 12?

Это дает возможность обращаться к нужной ячейке по результатам вычислений
(формула ЕСЛИ имеет лимит 7 . При использовании ИНДЕКС(D:D;х+у) здесь снимаются любые ограничения ) 0mega

Сообщение отредактировал 0mega — Воскресенье, 31.10.2010, 12:27
Сообщение kim, здравствуйте
Quote ( kim )
A1 =ИНДЕКС(D:D;5+7)

for Serge_007,

Quote ( Serge_007 )
Только зачем, если она всё-равно всегда будет 12?

Это дает возможность обращаться к нужной ячейке по результатам вычислений
(формула ЕСЛИ имеет лимит 7 . При использовании ИНДЕКС(D:D;х+у) здесь снимаются любые ограничения ) Автор — 0mega
Дата добавления — 31.10.2010 в 12:18

Группа: Гости

Можно и СМЕЩ() и АДРЕС() заточить, но зачем?
ДВССЫЛ() летуча и медленна
СМЕЩ() летуча (хоть и быстра)
АДРЕС() медленнее ИНДЕКС()

Можно и СМЕЩ() и АДРЕС() заточить, но зачем?
ДВССЫЛ() летуча и медленна
СМЕЩ() летуча (хоть и быстра)
АДРЕС() медленнее ИНДЕКС() kim

Сообщение Можно и СМЕЩ() и АДРЕС() заточить, но зачем?
ДВССЫЛ() летуча и медленна
СМЕЩ() летуча (хоть и быстра)
АДРЕС() медленнее ИНДЕКС() Автор — kim
Дата добавления — 31.10.2010 в 15:37

Группа: Админы
Ранг: Местный житель
Сообщений: 16434
Замечаний: ±

Excel 2016
Ну и до кучи добавлю что INDIRECT не работает с закрытыми книгами
В отличии от INDEX.
Ну и до кучи добавлю что INDIRECT не работает с закрытыми книгами
В отличии от INDEX. Serge_007

Сообщение Ну и до кучи добавлю что INDIRECT не работает с закрытыми книгами
В отличии от INDEX. Автор — Serge_007
Дата добавления — 31.10.2010 в 15:38

Группа: Гости
АДРЕС() я имел ввиду в связке с ДВССЫЛ().
АДРЕС() я имел ввиду в связке с ДВССЫЛ(). kim
Сообщение АДРЕС() я имел ввиду в связке с ДВССЫЛ(). Автор — kim
Дата добавления — 31.10.2010 в 15:40
Группа: Проверенные
Ранг: Ветеран
Сообщений: 627
Quote ( kim )
A1 =ИНДЕКС(D:D;5+7)

отличная формула, прекрасно работает
аналогичную по функции формулу подсмотрел у Serge_007,

В обоих случаях столбец «D» — постоянно прописывается в формуле и не меняется.
Возникла необходимость букве «D» задать переменное значение .
т.е. если значение ячейке «А1″=4, тогда обращение должно быть к «D12»
если «А1″=7 тогда обращение к ячейке G12
Другими словами: адрес столбца должен зависеть от вычислений в ячейке «А1»

Quote ( kim )
A1 =ИНДЕКС(D:D;5+7)

отличная формула, прекрасно работает
аналогичную по функции формулу подсмотрел у Serge_007,

В обоих случаях столбец «D» — постоянно прописывается в формуле и не меняется.
Возникла необходимость букве «D» задать переменное значение .
т.е. если значение ячейке «А1″=4, тогда обращение должно быть к «D12»
если «А1″=7 тогда обращение к ячейке G12
Другими словами: адрес столбца должен зависеть от вычислений в ячейке «А1» 0mega

Quote ( kim )
A1 =ИНДЕКС(D:D;5+7)

отличная формула, прекрасно работает
аналогичную по функции формулу подсмотрел у Serge_007,

В обоих случаях столбец «D» — постоянно прописывается в формуле и не меняется.
Возникла необходимость букве «D» задать переменное значение .
т.е. если значение ячейке «А1″=4, тогда обращение должно быть к «D12»
если «А1″=7 тогда обращение к ячейке G12
Другими словами: адрес столбца должен зависеть от вычислений в ячейке «А1» Автор — 0mega
Дата добавления — 28.04.2011 в 00:13

Группа: Модераторы
Ранг: Местный житель
Сообщений: 16621
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
немножко вариантов:
=ИНДЕКС(12:12;A1)
=СМЕЩ(A12;;A1-1)
=ДВССЫЛ(«R12C»&A1;0)
немножко вариантов:
=ИНДЕКС(12:12;A1)
=СМЕЩ(A12;;A1-1)
=ДВССЫЛ(«R12C»&A1;0) _Boroda_

Сообщение немножко вариантов:
=ИНДЕКС(12:12;A1)
=СМЕЩ(A12;;A1-1)
=ДВССЫЛ(«R12C»&A1;0) Автор — _Boroda_
Дата добавления — 28.04.2011 в 00:31

Группа: Проверенные
Ранг: Ветеран
Сообщений: 627
_Boroda_,
Александр,
если я правильно понял, то для формулы =ДВССЫЛ() надо использовать стиль R1C1 ?

_Boroda_,
Александр,
если я правильно понял, то для формулы =ДВССЫЛ() надо использовать стиль R1C1 ? 0mega

Сообщение _Boroda_,
Александр,
если я правильно понял, то для формулы =ДВССЫЛ() надо использовать стиль R1C1 ? Автор — 0mega
Дата добавления — 28.04.2011 в 05:49

Группа: Модераторы
Ранг: Местный житель
Сообщений: 16621
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
_Boroda_,
Александр,
если я правильно понял, то для формулы =ДВССЫЛ() надо использовать стиль R1C1 ?

Да. На это указывает 0 на второй позиции
=ДВССЫЛ(«R12C»&A1; 0 )

0mega,
То, что формула пишется для стиля RC вовсе не означает, что для ее правильной работы нужно переключаться в этот стиль. Работать можно в обычном.

_Boroda_,
Александр,
если я правильно понял, то для формулы =ДВССЫЛ() надо использовать стиль R1C1 ?

Да. На это указывает 0 на второй позиции
=ДВССЫЛ(«R12C»&A1; 0 )

0mega,
То, что формула пишется для стиля RC вовсе не означает, что для ее правильной работы нужно переключаться в этот стиль. Работать можно в обычном. _Boroda_

_Boroda_,
Александр,
если я правильно понял, то для формулы =ДВССЫЛ() надо использовать стиль R1C1 ?

Да. На это указывает 0 на второй позиции
=ДВССЫЛ(«R12C»&A1; 0 )

0mega,
То, что формула пишется для стиля RC вовсе не означает, что для ее правильной работы нужно переключаться в этот стиль. Работать можно в обычном. Автор — _Boroda_
Дата добавления — 28.04.2011 в 09:16

Группа: Проверенные
Ранг: Ветеран
Сообщений: 627
благодарю за консультацию.
. мы , уж, лучше с ИНДЕКСом и в обычном стиле
благодарю за консультацию.
. мы , уж, лучше с ИНДЕКСом и в обычном стиле 0mega

Сообщение благодарю за консультацию.
. мы , уж, лучше с ИНДЕКСом и в обычном стиле Автор — 0mega
Дата добавления — 28.04.2011 в 12:06

Группа: Проверенные
Ранг: Ветеран
Сообщений: 627

я понял как раз наоборот. спасибо за подсказку.
Есть пара вопросов
=ИНДЕКС( 12:12 ;A1)
Почему надо указывать всю строку? Разве адрес 12;А1 — это не одно и тоже ?
Пытаюсь формулу «заточить» под себя. Вместо 12-ой строки — указываю строку с формулой.
т.е. мне надо вытащить значение из столбца А1, а строчка совпадает с той где находится формула
=ИНДЕКС(строка();A1) — машина на меня ругается
=ИНДЕКС(строка():Строка();A1) — а на такую формулу ругается еще больше

я понял как раз наоборот. спасибо за подсказку.
Есть пара вопросов
=ИНДЕКС( 12:12 ;A1)
Почему надо указывать всю строку? Разве адрес 12;А1 — это не одно и тоже ?
Пытаюсь формулу «заточить» под себя. Вместо 12-ой строки — указываю строку с формулой.
т.е. мне надо вытащить значение из столбца А1, а строчка совпадает с той где находится формула
=ИНДЕКС(строка();A1) — машина на меня ругается
=ИНДЕКС(строка():Строка();A1) — а на такую формулу ругается еще больше 0mega

Сообщение отредактировал 0mega — Четверг, 28.04.2011, 14:53

Сообщение я понял как раз наоборот. спасибо за подсказку.
Есть пара вопросов
=ИНДЕКС( 12:12 ;A1)
Почему надо указывать всю строку? Разве адрес 12;А1 — это не одно и тоже ?
Пытаюсь формулу «заточить» под себя. Вместо 12-ой строки — указываю строку с формулой.
т.е. мне надо вытащить значение из столбца А1, а строчка совпадает с той где находится формула
=ИНДЕКС(строка();A1) — машина на меня ругается
=ИНДЕКС(строка():Строка();A1) — а на такую формулу ругается еще больше Автор — 0mega
Дата добавления — 28.04.2011 в 14:52

Как передать переменное значение адреса ячейки найденное функцией ячейка() по условию в Range() VBA?

Help me! Есть процедура, которая устанавливает курсор на ячейку С2 и заменяет значение в ней полученное формулой, на просто значение. Как передавать в Rang переменный адрес ячейки (меняется от условий расчета на листе эксель через функцию ячейка())?

Sub Formulas_To_Values_Selection() Range("C2").Select Dim smallrng As Range For Each smallrng In Selection.Areas smallrng.Value = smallrng.Value Next smallrng End Sub 

Отслеживать
31.4k 3 3 золотых знака 21 21 серебряный знак 40 40 бронзовых знаков
задан 9 дек 2019 в 12:52

А чё так сложно-то? всё ж в одну строку делается. И выделять её не нужно. Как передавать в Rang переменный адрес ячейки Добавить параметр и передавать нужный адрес.

9 дек 2019 в 12:56

Весь смысл в выделении заранее не известной ячейки в массиве. Адрес получается в результате расчета. В ячейке записана формула ( в данном случае в С2), а надо чтобы осталось только значение.

9 дек 2019 в 13:02
Зачем выделять?
9 дек 2019 в 13:06

Не понял. т.е. ты кликаешь по ячейке, и хочешь, чтобы именно в ней формула заменилась на значение? Ну тогда это нужно в Worksheet_SelectionChange рисовать. а заодно организовать флаг, чтобы Excel понимал, когда менять, а когда нет.

9 дек 2019 в 13:09

В том то и дело, что кликать не хочется. Курсор выставляется по рассчитанному адресу и заменяет там формулу на значение в определенные промежутки времени ( раз в час например)

9 дек 2019 в 13:12

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Пример реализации (если я верно понял задачу).

В ячейку B1 пишем формулу, например

B1=A1+1 

В ячейку С1 пишем слово «fix»

Растягиваем на B1:C1 до B10:C10.

В модуль листа пишем

Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Cells.Count = 1 And Target.Column = 3 And Target.Row  

Изменяем значения в A1:A10. Значения в B1:B10 меняются (пересчитываются).

Кликаем по любой одной ячейке в диапазоне C1:C10. В эту ячейку записывается текущая дата-время, а значение в соотв. ячейке колонки B фиксируется. Теперь изменение в колонке A не будет изменять значение в колонке B.

Программное выделение ячейки (например, cells(7,3).select ) также вызовет срабатывание метода и фиксацию значения.

Если выделено несколько ячеек (руками или программно) - фиксация не выполняется.

Сейчас при повторном клике в колонке С время в ней будет меняться. Можно добавить проверку на то, что значение в колонке С не является датой (или что там присутствует изначальное "fix"), и если там дата - не выполнять операцию.

Номер ячейки в excel как переменная

Введите имя пользователя, чьи записи вы хотите найти

LiveJournal

Войти

Нет аккаунта? Зарегистрироваться

Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal

Microsoft Office [entries|archive|friends|userinfo]

Microsoft Office

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]
[ Links: | Тренажёр правильной осанки ТАНЦУЮЩИЙ КИПАРИС™ ]
[ ############ | Видеокурс от центра В.И.Дикуля ]
[ ############ | Cок TAHITIAN NONI® для укрепления иммунитета ]
[ ############ | Гравитационные ботинки ]

Microsoft Office

Есть экспериментальные данные: зависимость интересующей величины от времени.
Во время эксперимента записано в каких промежутках искать интересующие значения.

Задача: написать формулу следующего вида:
=МАКС(J X ;J Y )/J X -1 ,
где X и Y номера строчек в массиве записанные в отдельную таблице (проще говоря: не хочется руками менять каждую формулу, а проще забить 2 числа в таблицу и использовать из для создания ссылок)

функция =АДРЕС(P6;3) возвращает текст вида $C$488 если в P2 было забито число Х=488. Как получить адрес ячейки вместо текста??

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *