[Excel] CUBE* формулы
А вообще замути хитрый пивот в ёкселе, разнеси по столбам и строкам разного всего, добавь фильтров (в некоторых чтоб по несколько значений было).
И потом сделай "Работа со сводными таблицами -> Параметры -> Средства OLAP -> Преобразовать в формулы"
Далее ткнуть галку о преобразовании фильтров тоже.
Далее повтыкать в получившуюся картину минут 10 - вполне достаточно, чтобы понять как эта вся хрень работает.
update :
КУБМНОЖ точнее.
официальный источник я также не воспринял с пары попыток до готовности использовать, тугодум, видать =(
вот таким хитрым способом я и пошёл, после чего натолкнулся на первую формулу топика, которую нативно надо бы преобразовать в третью формулу топика, но такой финт не работает.
сработала следующая штука - изначальная формула:
=CUBEMEMBER("cube";{"[blabla].[ItemID].&[4141235]"\"[blabla].[ColorID].[Темно-коричневый]"})
затем преобразование R1C2 и R1C3 ячеек до вида:
R1C3="[blabla].[ItemID].["&R1C2&"]"
R1C4="[blabla].[ColorID].["&R1C3&"]"
и в конечной формуле указываем уже массив R1C3:R1C4 как-то так:
=CUBEVALUE("cube";R1C3:R1C4;[first_delivery_date])
такая фигня работает и показывает реальный результат, соответствующий как нужному ColorID, так и ItemID.
=CUBEMEMBER("cube";{"[blabla].[ItemID].&[4141235]"\"[blabla].[ColorID].[Темно-коричневый]"})
Выглядит очень странно.
Должны выглядеть как
=CUBESET("cube";{"[blabla].[ItemID].&[4141235]","[blabla].[ColorID].[Темно-коричневый]"}; "Some cell text")
допустим сия формула в A1
и тогда формула
=CUBEVALUE("cube";A1)
должна работать.
По хорошему нада ещё добавить выражение для Measure (вдруг добавятся новые и Default Measure изменится)
Что такое [first_delivery_date] в этой формуле - я хз.
если у тебя есть потебность хитро вычислять адрес элемента куба - всегда можно сгененировать строку и превратить её в элемент с помощью ДВССЫЛ
в формуле CUBEVALUE можно вставлять строки с адресами элементов куба через ";". Либо с тем же успехом выносить в элементы CUBESET и CUBEMEMBER и подставлять уже их (или ссылки на них)
в общем записи
=CUBEVALUE("CubeLink"; "[Dim1].[Dim11].&[2]"; "[Dim2].[Dim23].&[3]";"[Dim3].[Dim35].&[4]"; "[Measures].[BookValue]")
и
=CUBEVALUE("CubeLink";CUBEMEMBER("CubeLink";"[Dim1].[Dim11].&[2]");CUBESET("CubeLink";{"[Dim2].[Dim23].&[3]","[Dim3].[Dim35].&[4]"}; CUBEMEMBER("CubeLink";"[Measures].[BookValue]"
будут эквивалентны
и наверное, да, можно тупо строки типа "[Dim2].[Dim23].&[3]" размещать в ячейках, а в CUBEVALUE ссылатся на строки. При этом можно формировать строку адреса какими то формулами, и обертывать в ДВССЫЛ чтобы получить реальную ссылку.
первая формула через CUBEMEMBER вместо CUBESET была вытянута как раз при преобразовании сводной таблицы в формулы, в ней подразумевается, что этот цвет типа для этой номенклатуры и именно для неё, пересечение, получается.
формула CUBESET, или как она должна была выглядеть, ни в каком виде у меня не заработала =(
в итоге единственным пока работающим вариантом для меня явился описанный в предыдущем моём комментарии, все остальные заходы через CUBESET и компанию никак не желают претворяться в жизнь.
но всё равно спасибо за ответы.
Оставить комментарий
pavg
Может кто знаком не понаслышке с экселевскими формулами типа CUBEMEMBER & CUBEVALUE.Возможно ли там замутить такую штуку, у самого пока теорией и практикой никак не получается вот енту штуку:
сидящую, например, в ячейке R1C1 и используемую в расчёте CUBEVALUE как один из [member_expressions]:
заменить на рассчитываемую для сидящих в соседних ячейках, R1C2 и R1C3, ItemID (4141235) и ColorID (Темно-коричневый что-то типа такого:
?
или подскажите, как правильно кортежи указывать в формулах с обращениям к ячейкам, т.к. фигня типа
100% не выдаёт ничего