У меня есть формула в Excel, которая выглядит так:
=SUMIFS(SILOADRESERVED,
SIPDU,
B8&"*",
SIPHASE, "A",
SITYPE, "<>RMT"
)
Проблема в том, что диапазон SIPDU меняется на разных этапах проекта, поэтому я хотел бы заменить его другим диапазоном в зависимости от результата условного условия, как показано ниже. Если интересующая нас фаза в AJ4 меньше фазы переключения для этого элемента, поиск SUMIF должен выполняться в старом диапазоне SIPDU, но если фаза уже произошла, поиск SUMIF должен выполняться в новом диапазоне. , SI_NEW_PDU. Эти именованные диапазоны представляют собой соседние столбцы одинаковой длины.
=SUMIFS(SILOADRESERVED,
IF($AJ$4<MD_Main_Changeover_Phase, SIPDU, SI_NEW_PDU),
B8&"*",
SIPHASE, "A",
SITYPE, "<>RMT"
)
Однако я получаю сообщение об ошибке SPILL и не знаю, что делать. Я использую Office 365.
Некоторые другие подходы, которые я пробовал, не сработали:
=SUMIFS(SILOADRESERVED, INDEX((SIPDU, SI_NEW_PDU), MATCH($AJ$4<MD_Main_Changeover_Phase, {TRUE, FALSE}, 0)), B8&"*", SIPHASE, "A", SITYPE, "<>RMT")
=SUMIFS(SILOADRESERVED, CHOOSE(($AJ$4<MD_Main_Changeover_Phase)+1, SIPDU, SI_NEW_PDU), B8&"*", SIPHASE, "A", SITYPE, "<>RMT")
Я думаю, проблема в том, что SUMIFS перебирает каждую строку, но $AJ$4<MD_Main_Changeover_Phase
вложен внутри IF, поэтому MD_Main_Changeover_Phase не перебирает одновременно. Я не уверен, как это обойти.
Я боюсь использовать вспомогательные столбцы, так как такая же проблема возникает для восьми разных именованных диапазонов в моем проекте, а не только для SIPDU. Каждая строка в моем наборе данных представляет собой электрическую нагрузку с двумя источниками, а источники хранятся в четырех столбцах (например, адрес). Мы реализуем поэтапный проект, в котором мы переводим нагрузки на два новых источника, но не обязательно на одном этапе. Поэтому мы пытаемся отслеживать нагрузки во время этого перехода. Четыре именованных диапазона будут скорректированы на основе одного фазового диапазона; остальные четыре будут управляться на основе второго фазового диапазона.
Обновлено: Вот более простой пример того, чего я пытаюсь достичь с нужными мне результатами справа. Вы можете вручную настроить текущую фазу, чтобы обновить SUMIFS ниже.
Вот те же данные в копируемом формате CSV, который могут использовать другие:
@ScottCraner, это также диапазон, поскольку каждый электрический ряд имеет источник, который будет меняться на разных этапах.
Пожалуйста, опубликуйте несколько примеров копируемых данных, чтобы их можно было скопировать и предложить вам решение. Также попытайтесь показать ожидаемый результат. Решение поможет вам указать, что вам нужно сделать, оно не обязательно должно быть точным, но поможет понять, что нужно сделать, чтобы получить желаемый результат. Надеюсь, это поможет вам понять актуальность!
Как получить последнее, ведь 0
так не должно быть 10
?
@MayukhBhattacharya Так и должно быть, это опечатка, извините!
попробуй: =SUM((IF(H$1<E$2:E$6,C$2:C$6,D$2:D$6)=TEXTAFTER(G2," ",-1))*B$2:B$6)
Вот один из способов решения запроса:
=MAP(G2:G7, LAMBDA(α,
SUM((IF(H$1<E2:E6,C2:C6,D2:D6)=
TEXTAFTER(α," ",-1))*B2:B6)))
Можете ли вы изменить это, включив в него дополнительные критерии? Скажем, если бы в столбце F были цвета, а затем мы просто хотели посмотреть нагрузки на PDU от A до F, где цвет синий? И работает ли это с именованными диапазонами?
@mybluesock да, должно сработать. Кроме того, это не так уж и важно, просто добавьте ссылку на ячейку для цвета и диапазона для сравнения. Это будет примерно так: =MAP(G2:G7, LAMBDA(α, SUM((IF(H$1<E2:E6,C2:C6,D2:D6)=TEXTAFTER(α," ",-1))*(F2:F6 = "blue")*B2:B6)))
Мне удалось заставить его работать, используя «код» =MAP(G2:G8, LAMBDA(α, SUM((IF(H$1<E2:E6,C2:C6,D2:D6)= TEXTAFTER(α," " ,-1))*B2:B6*(F2:F6 = "Blue")))) 'код', но мне не удалось заставить его работать в исходной таблице. На следующей неделе я буду экспериментировать с этим дальше. Спасибо за помощь!
@mybluesock, можете ли вы опубликовать свое Excel (используя ссылку onedrive или Googlesheets), что запрещено (не знаю, что нет жестких правил, но мы не говорим, что из-за открытия иностранных ссылок), однако я все же постараюсь изучить это, если хочешь! Ах, еще одна вещь: использовались именованные диапазоны, и это тоже сработало: =MAP(G2:G7, LAMBDA(α, SUM((IF(H$1<SWITCH_OVER,Old_PDU,New_PDU)=TEXTAFTER(α," ",-1))*(F2:F6 = "blue")*Load)))
Я только что проверил это на себе и, к счастью, так оно и есть. Боюсь, я не могу поделиться этими данными, поскольку они являются собственностью компании, но мне кажется, что я просто допускаю простую ошибку. Я вернусь, если у меня все еще будут проблемы на следующей неделе! Еще раз спасибо!
@mybluesock Большое спасибо за то, что поделились отзывом, рад узнать, что это сработало, а также один запрос при публикации запроса с помощью этого Генератора таблиц разметки он прост в использовании, просто скопируйте данные из Excel и вставьте в указанную сеть, сгенерируйте и скопируйте сюда. простой
Сделаю, спасибо! Кроме того, я обнаружил, что ошибка VALUE, с которой я столкнулся, была вызвана моими именованными диапазонами, включая строку заголовка, так что это легко исправить!
Есть дополнительная сложность. Это работает: =SUM(LOAD * (PDU = "1A04"))
, а это нет: =SUM(LOAD * (PDU = "1A*"))
.
@mybluesock, это не сработает. Вы будете XMATCH()
или MATCH()
или SEARCH()
+ ISNUMBER()
функционировать. -> =SUM(LOAD*(ISNUMBER(SEARCH("1A",PDU)))
или =SUM(LOAD*(ISNUMBER(XMATCH("*1A*",PDU,2))))
Думаю, я нашел аналогичный подход с этой формулой: =SUMPRODUCT(SILOADRESERVED, --(ISNUMBER(SEARCH(B8&"*", IF($AJ$4<MD_Main_Changeover_Phase,SIPDU,SI_NEW_PDU)))),--(SIPHASE = "A"),--(SITYPE<>"RMT"))
Однако дополнительная сложность будет проявляться в сотнях формул в некоторых аналитических таблицах, поэтому я думаю, что в конце концов я буду опираться на некоторые вспомогательные столбцы в моей исходной таблице. , который будет делать что-то вроде этого: =IF(OR(ISBLANK([@[Main Changeover Phase]]), ISBLANK([@[New PDU]])), [@PDU], IF(DPHASE<[@[Main Changeover Phase]],[@PDU],[@[New PDU]]))
@mybluesock, у вас есть образец данных, и можете ли вы поделиться со мной ссылкой на Excel. Я могу посмотреть, вам не нужны вспомогательные столбцы.
MD_Main_Changeover_Phase
это одна ячейка или диапазон?