LibreOffice Calc: как использовать переменную в функции/формуле?

ДоПосле

Я пытаюсь динамически заполнить диапазон ячеек в столбце на основе числа в другой ячейке.

Итак, заполните x количество ячеек значением, скажем, E4. x — значение в ячейке E5.

Если ячейка E4 = 25, заполните ячейки в нужном столбце ниже определенной точки «25» для x количества строк. Если E5 = 5, а начальная точка — A3, то от A3 до A8 будет заполнено «25» или любая желаемая строка или формула.

Для меня это ="Layer" & ROW() - 2, и я хочу заполнить каждую ячейку в этом столбце диапазоном, определенным в E5. Количество ячеек в этой строке будет динамически меняться в зависимости от того, что установлено в E5.

Проблема в том, что я не могу найти способ установить переменную и получить ее значение в форуме одной ячейки, и я также не могу использовать вложенные формулы (SUM(Var1:E1), где Var1 - это строка E2 или что-то в этом роде )

В этом случае, начиная с ячейки A3 = Layer 1, каждая ячейка будет называться Layer 2, а затем Layer 3, пока номер слоя не совпадет со значением в E5.

Мне также нужно иметь возможность подсчитать, сколько слоев для форума в следующем столбце, что зависит от общего количества слоев (плюс 1)

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

Я бы предположил, что вложенная функция суммирования будет работать так: =СУММ(СУММ(A1:A5):A6) или =СУММ((СУММ(A1:A5)):A6), но это не так. И не похоже, что есть способ установить переменные внутри формулы одной ячейки.

Я также попытался создать строку, которая создала бы соответствующую ссылку на ячейку и, следовательно, правильное значение, например =("E"&E1), которое создало бы E5, если для E1 было установлено значение 5, но я не могу использовать это значение в качестве ссылки на ячейку

Я пытался, но не смог понять желаемого результата. Что я придумал, так это ввести =IF(ROW()<=E$5;"Layer " & E$4) в ячейку A3, а затем заполнить до A8, что создаст «Слой 25» в ячейках с A3 по A5. Но, согласно вопросу, вместо этого следует сказать «Слой 1», поэтому я не понимаю, о чем вы спрашиваете и почему упоминается E4. Существует также НЕПРЯМОЙ, который может быть тем, что вы имеете в виду под переменными.

Jim K 26.03.2022 22:09

Я не силен в формулировании вещей, если честно. Я упомянул E4 как пример того, чем можно заполнить финальный диапазон. На самом деле я хочу заполнить его моей текущей формулой, которая создает имена слоев # для каждого из них. Добавил несколько картинок для наглядности. Что касается переменных, если я использую =("E"&E1) для создания "E5" на основе значения в E1, я хочу использовать E5 в качестве ссылки на ячейку, а не строку

Rylan 26.03.2022 22:50
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы получить результат, показанный на изображениях, введите =IF(ROW(D1)<=E$1;"Layer " & ROW(D1);"") в ячейку D3 и заполните до D10, перетащив темную точку в углу. Затем измените значение в E1, чтобы увидеть разницу.

$ означает, что следующие 1 в ссылке не изменяются, когда формула копируется или заполняется в другом месте. В противном случае ссылки формулы будут скорректированы относительно нового местоположения.

If I use =("E"&E1) to create "E5" based on the value in E1, I want to use the E5 as a cell reference and not a string.

Это то, что делает НЕПРЯМОЙ.

=SUM(SUM(A1:A5):A6)

Вместо этого должно быть =SUM(SUM(A1:A5);A6). Первый представляет собой диапазон ячеек, тогда как второй дает дополнительную ячейку для включения. Вы также можете сделать, например, =SUM(SUM(A1:A5);A6:A10).

Я действительно не понимаю, почему вы ожидаете, что : будет работать там, где ;. Это определило бы диапазон, который начинается со строки результата SUM и заканчивается ячейкой, я полагаю? Не имеет смысла для меня. Возможно, вы имели в виду что-то вроде =SUM(INDIRECT("A"&SUM(A1:A5));A6). Тем не менее, я не понимаю, почему кто-то хочет это сделать.

Табличные формулы отличаются от языков программирования. Может потребоваться некоторое время, чтобы научиться эффективно их использовать. LibreOffice также имеет обширную поддержку макросов, если вам нужен реальный язык программирования, хотя в большинстве случаев, вероятно, есть лучший способ решить проблему, не прибегая к макросам.

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

Rylan 28.03.2022 22:34

Другие вопросы по теме