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ý argument. Textový řetězec názvu připojení k datové krychli.
-
Výraz_člena: Nepovinný argument. 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.
-
Pokud název připojení není platné připojení sešitu uložené v sešitu, vrátí funkce CUBEVALUE #NAME? chybovou hodnotu #HODNOTA!. Pokud server OLAP (Online Analytical Processing) není spuštěný, není k dispozici nebo vrátí chybovou zprávu, vrátí funkce CUBEVALUE #NAME? chybovou hodnotu #HODNOTA!.
-
Pokud je alespoň jeden prvek v řazené kolekci členů 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. Je-li hodnota prázdná neboli Null, znamená to doslovně „Žá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.
Pokud 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 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 a řetězcových hodnot nulové délky a tato situace může ovlivnit výsledky jiných vzorců, které na danou oblast buněk odkazují. Pokud například A1 a A3 obsahují čísla a A2 obsahuje vzorec s funkcí CUBEVALUE, který vrací řetězec nulové délky, následující vzorec vrátí #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)