У меня есть небольшая таблица, которую я создаю для отслеживания своего прогресса в игре. В игре есть цепочки квестов, которые приносят вам очки в событии. Они суммируются при попытке определить ваш общий балл в событии. Чтобы упростить ввод данных, у меня есть раздел со столбцами различных уровней для каждой цепочки квестов. Здесь они выглядят как первые пять столбцов:
Все это находится на одном листе — хотя я понимаю, что может быть принято размещать отдельные расчеты на отдельной странице, мне нравится удобство их размещения на одном листе, чтобы я мог видеть их все одновременно. Вот почему я не думаю, что решение, представленное в этом вопросе , может быть полезным для меня, поскольку оно относится к содержимому на отдельных листах. Если вы хотите увидеть скриншот реальной таблицы, вот вам.
Меня интересуют два других столбца. У меня есть столбец Points achieved, в котором я вручную добавляю очки, которые я заработал до сих пор, но это раздражает, потому что мне приходится постоянно возвращаться к игре, чтобы увидеть, что каждый уровень стоит, так как они несовместимы для каждой цепочки квестов.
Что я хотел бы сделать, так это иметь раскрывающийся список для Level achieved с вариантами для Уровня 1-4 (я уже сделал это), и когда я играю в игру, когда я завершаю другой уровень в цепочке, я могу изменить раскрывающийся список Level achieved для этого квеста на текущий уровень. Когда я это сделаю, это должно автоматически обновить Points achieved, чтобы оно стало суммой очков с текущего и любых предыдущих уровней.
Я только что прошел третий уровень квеста "Виноград". Таким образом, я обновляю раскрывающийся список Level achieved до «Уровня 3», а ячейка Points achieved для винограда теперь должна автоматически обновляться до 165, что является суммой уровней 1-3 (25 + 40 + 100). (Этот пример можно увидеть на диаграмме выше.)
Итак, я не уверен, что мне нужно делать в этот момент. Я могу представить несколько возможностей.
Level 2
как эквивалент значения уровня 1 + уровня 2.Конечный результат, который я хочу, — это иметь возможность выбирать уровень в раскрывающемся списке и автоматически заполнять ячейку Points achieved значением суммированных уровней. В любом случае, суть моего вопроса заключается в том, как использовать значение раскрывающегося меню для определения значения другой ячейки? Я рад обновить любое из моих раскрывающихся списков или имен столбцов по мере необходимости, чтобы заставить его работать, но я бы предпочел, чтобы все было на одном листе, если это возможно, поскольку на самом деле я не отслеживаю тонну контента.
Некоторые примечания:
Хотя я люблю электронные таблицы, я не понимаю их тонкой магии, поэтому, если то, как я это использую, нетрадиционно, это неудивительно. Я просто хочу сделать полезную электронную таблицу, которую я могу легко обновлять с помощью уже собранных данных.
Я покопался здесь, в SO и в Google, и, хотя я нашел некоторые возможные источники информации, я думаю, что изо всех сил пытаюсь определить, действительно ли рекомендуемые ими решения действительно достаточно подходят для моей конкретной ситуации, чтобы я мог сам решить проблему.
@ Рубен Нах. Мне просто очень нравятся электронные таблицы, но я совершенно невежественен. Кроме того, я надеюсь, что знаю, как правильно задать вопрос, поэтому я надеюсь, что он выделяется по правильным причинам: D
Одна из вещей, которая выделяет его, это то, что он очень хорошо написан, очень описателен ... ChatGPT не может написать лучше :D.
Кстати, другие вещи, которые выделяют ваш пост, заключаются в том, что это хороший вопрос Google Sheets / электронной таблицы, в котором не используются типичные ключевые слова, такие как formula / function, и либо часто используемые, такие как range, reference, lookup, data validation среди другие, и, что лучше всего, он автономный / не включает ссылку на электронную таблицу.
Окончательный результат, который вы ищете, может быть достигнут с помощью простой формулы, не нужно менять имена столбцов, дополнительные столбцы или дополнительные листы...
... в то время как вы сохраняете свою электронную таблицу простой.
Простая формула Используя данные, указанные в вопросе
=SUM(OFFSET(B8:E8, 0, 0, 1, MATCH(F8,{"Level 1","Level 2","Level 3","Level 4"})))
Объяснение
{"Level 1","Level 2","Level 3","Level 4"}
— это массив, в котором значения раскрывающегося списка расположены в порядке, соответствующем столбцам слева направо.MATCH
— это функция, которая находит позицию значения, выбранного в раскрывающемся списке, F8
, в приведенном выше массиве.OFFSET
захватывает ячейки из столбца B справа на основе числа, возвращаемого MATCH
SUM
суммирует значения ячеек, захваченных OFFSET
.Скопируйте формулу из G8 в G2:G9.
Чтобы адаптировать это к вашему листу, добавьте следующую формулу к D2:
=SUM(OFFSET(I2:L2, 0, 0, 1, MATCH(C2,{"Level 1","Level 2","Level 3","Level 4"})))
Затем заполнить.
ПРИМЕЧАНИЯ:
Формула вернет #N/A Error Did not find value '' in MATCH evaluation., если достигнутый уровень (раскрывающийся список) пуст. Чтобы избежать этого, вы можете добавить IFNA установку второго аргумента в качестве «значения по умолчанию». Если вы хотите показать ячейку пустой (пустой), оставьте второй аргумент пустым:
=IFNA(SUM(OFFSET(I2:L2, 0, 0, 1, MATCH(C2,{"Level 1","Level 2","Level 3","Level 4"}))), )
Если в вашей электронной таблице в качестве десятичного разделителя используются , (запятые), замените , на ; (точки с запятой).
Если ваша электронная таблица становится сложной, т. е. ваш лист становится очень большим или вы добавляете много листов и много формул, вам может потребоваться другое решение. Если это так, нам потребуются дополнительные подробности.
Рекомендации
Спасибо! :D Единственное, что мне пришлось изменить, это то, что я добавил столбец уровня 0 с суммой 0, потому что в противном случае я получил бы ошибки в любых ячейках, где я не сделал выбор в раскрывающемся списке. Есть ли способ избежать этого, например, добавить оператор if?
@Catija Ответ отредактирован. Tl;Dr поместил функцию SUM внутрь IFNA , то есть =IFNA(SUM(...),)
Ты можешь сделать:
=SUM(FILTER(B8:E8, B1:E1<=F8))
И весь столбец за один раз:
=BYROW(F2:INDEX(F:F, MAX(ROW(F:F)*(F:F<>""))),
LAMBDA(x, IFNA(SUM(FILTER(OFFSET(x,,-4,,4), B1:E1<=x)))))
F2:INDEX(F:F, MAX(ROW(F:F)*(F:F<>""))) переводится на F2:F8 на основе: https://stackoverflow.com/a/74281216/5632629
LAMBDA объяснение использования можно найти здесь: https://stackoverflow.com/a/74393500/5632629 в разделе "WHY LAMBDA ?"
Этот пост выделяется среди всех постов о Google Таблицах, которые я видел за очень долгое время. Является ли этот пост частью какого-то теста? Однажды сказал, что...