Tento článek popisuje syntaxi vzorce a použití funkce CUBEVALUE v Microsoft Excelu.
Popis
Vrátí úhrnnou hodnotu z krychle.
Syntaxe
CUBEVALUE(připojení;[výraz_člena1]; [výraz_člena2]; …)
Syntaxe funkce CUBEVALUE má následující argumenty:
- Připojení Povinné. Textový řetězec názvu připojení k datové krychli.
- Member_expression Volitelné. Textový řetězec výrazu MDX (Multidimensional Expression), jehož výsledkem je prvek nebo řazená kolekce členů v datové krychli. Jako hodnotu argumentu výraz_člena lze použít i sadu definovanou pomocí funkce CUBESET. Argument výraz_člena použijte jako průřez k definování části datové krychle, jejíž úhrnná hodnota bude vrácena. Jestliže v argumentu výraz_člena není uvedena žádná míra, použije se výchozí míra příslušné krychle.
Poznámky
Při vyhodnocování funkce CUBEVALUE se v buňce před načtením všech dat přechodně zobrazí zpráva #NAČÍTÁNÍ_DAT…
Jestliže je v argumentu výraz_člena použit odkaz na buňku a tento odkaz obsahuje funkci CUBE, nepoužije argument výraz_člena hodnotu zobrazenou v buňce, do níž vede odkaz, ale výraz MDX platný pro položku v této buňce.
Není-li název připojení platným názvem připojení, uloženým v sešitu, vrátí funkce CUBEVALUE #NAME? chybová hodnota. Jestliže server Online Analytical Processing (OLAP) není spuštěn, není dostupný nebo vrátí chybovou zprávu, vrátí funkce CUBEVALUE #NAME? chybová hodnota.
Je-li alespoň jeden prvek v n-tici neplatný, vrátí funkce CUBEVALUE #VALUE!. chybovou hodnotu #HODNOTA!.
V následujících případech vrátí funkce CUBEVALUE chybovou hodnotu #NENÍ_K_DISPOZICI:
- Syntaxe argumentu výraz_člena není správná.
- V krychli neexistuje člen určený pomocí argumentu výraz_člena.
- N-tice je neplatná, protože neexistuje průsečík zadaných hodnot. (Tato situace může nastat u více prvků ve stejné hierarchii.)
- Sada obsahuje minimálně jeden člen s jiným rozměrem než ostatní členy.
- Funkce CUBEVALUE může vrátit chybovou hodnotu #NENÍ_K_DISPOZICI, pokud v kontingenční tabulce při sdílení spojení odkazujete na objekt z relace, například na počítaný člen pojmenované sady, a příslušnou kontingenční tabulku odstraňujete nebo převádíte kontingenční tabulku na vzorce. (Na kartě Možnosti ve skupině Nástroje klikněte na položku Nástroje OLAP a poté klikněte na položku Převést na vzorce.)
Problém: Hodnoty Null jsou převáděny na řetězce nulové délky
Pokud nejsou v Excelu v buňce žádná data, protože jste ji nikdy nezměnili nebo smazali její obsah, obsahuje buňka prázdnou hodnotu. V řadě databázových systémů se prázdná hodnota nazývá hodnota Null. Prázdná hodnota nebo hodnota Null doslova znamená "žádná hodnota". Vzorec však nikdy nevrací prázdný řetězec nebo hodnotu Null. Vzorec vždy vrací jednu ze tří hodnot: číselnou hodnotu, textovou hodnotu (jíž může být řetězec nulové délky) nebo chybovou hodnotu, například #ČÍSLO! nebo #HODNOTA.
Jestliže vzorec obsahuje funkci CUBEVALUE připojenou k databázi OLAP (Online Analytical Processing) a výsledkem dotazu na tuto databázi je hodnota Null, převede aplikace Excel tuto hodnotu hodnoty Null na řetězec nulové délky, i když by vzorec jinak vrátil číselnou hodnotu. To může vést k situaci, kdy oblast buněk obsahuje kombinaci číselných hodnot a hodnot řetězce nulové délky. Tato situace může ovlivnit výsledky dalších vzorců, které na tuto oblast buněk odkazují. Pokud například buňky A1 a A3 obsahují čísla a buňka A2 obsahuje vzorec s funkcí CUBEVALUE, která vrací řetězec nulové délky, vrátil by následující vzorec #VALUE! vzorec:
=A1+A2+A3
Chcete-li se tomu vyhnout, můžete testovat výskyt řetězce nulové délky pomocí funkce JE.TEXT a pomocí funkce KDYŽ nahradit nulovou délku číslem 0 (nula), jak ukazuje následující příklad:
=KDYŽ(JE.TEXT(A1);0;A1)+KDYŽ(JE.TEXT(A2);0;A2)+KDYŽ(JE.TEXT(A3);0;A3)
Můžete také vnořit funkci CUBEVALUE do podmínky KDYŽ, která vrátí hodnotu 0, kdykoli funkce CUBEVALUE vrátí řetězec nulové délky, viz následující příklad:
=KDYŽ(CUBEVALUE("Prodeje";"[Objemy].[Zisk]";"[Čas].[2004]";"[Všechny výrobky].[Nápoje]")=""; 0; CUBEVALUE("Prodeje";"[Objemy].[Zisk]";"[Čas].[2004]";"[Všechny výrobky].[Nápoje]"))
U funkce SUMA není třeba provádět test na řetězec nulové délky, protože při výpočtu návratové hodnoty automaticky ignoruje řetězce nulové délky.
Příklady
=CUBEVALUE("Prodeje";"[Objemy].[Zisk]";"[Čas].[2004]";"[Všechny výrobky].[Nápoje]")
=CUBEVALUE($A$1;"[Objemy].[Zisk]";D$12;$A23)
=CUBEVALUE("Prodeje";$B$7;D$12;$A23)