< návrat zpět
MS Excel
Téma: Počet unikátních položek v rámci části Tabulky
Zaslal/a xlnc 7.3.2017 11:28
Nebudu z dané úlohy dělat "challenge", jen mě zajímá, jak byste na to šli...
Ve sloupci C tabulky Tabulka1 je potřeba zpracovat vzorec, který v rámci jedné objednávky (O1, O2, ...) najde počet unikátních (neprázdných) dodavatelů.
Teorie: Nabízí se SOUČIN.SKALÁRNÍ a trik SUMA(1/COUNTIF(data;data)). Jenže..., a kromě toho tu máme strukturované odkazy Tabulky, které pracují trochu jinak.
Příloha: 35314_tabulka_unikaty.png (24kB, staženo 59x)
eLCHa(7.3.2017 14:04)#035319 Jestli je možno použít pomocný sloupec tak
Junik:
=(COUNTIFS(Tabulka1[[#Záhlaví];[Objednávka]]:[@Objednávka];[@Objednávka];Tabulka1[[#Záhlaví];[Dodavatel]]:[@Dodavatel];[@Dodavatel])=1)/1Pak výsledek
=SUMIFS([Junik];[Objednávka];[@Objednávka])
Asi to půjde i bez toho pomocného, ale teď nemám čas to koumat.
citovat
xlnc(7.3.2017 16:50)#035326 Rovnou říkám, že sám zatím nemám uspokojivé řešení a nevím, jak to udělat bez pomocného sloupce. Děkuju za čas, ještě musím taky pořešit něco jiného.
citovat
eLCHa(8.3.2017 11:11)#035368 Tabulka umožňuje vložit maticový vzorec s automatickým "rozkopírováním". Takže je to vlastně jednoduché.
Maticově
=SUMA(KDYŽ([Dodavatel]<>"";KDYŽ([Objednávka]=[@Objednávka];1/COUNTIFS([Objednávka];[Objednávka];[Dodavatel];[Dodavatel]);0);0))citovat
xlnc(8.3.2017 11:19)#035370 Vyzkouším, děkuju za čas. Popravdě se maticového vzorce trochu bojím, stejně jako "středně rychlé" funkce SOUČIN.SKALÁRNÍ, která by to neřešila beze zbytku. Tady holt nejspíš potřebujeme pomocný sloupec, resp. mezikrok na generování matice. Záznamů ke zpracování bude údajně okolo 20 000. Momentálně dělám kontrolu makrem. Nějak to zkusím rozseknout.
citovat
eLCHa(8.3.2017 11:47)#035371 Pak je ještě možno MSQuery
SELECT
t2.[Objednávka],
Count(t2.Dodavatel) AS Pocet
FROM
(
SELECT DISTINCT
t1.[Objednávka],
t1.Dodavatel
FROM
`C:\...\Sešit1.xlsx`.`List1$` AS t1
WHERE
t1.Dodavatel Is Not Null
) AS t2
GROUP BY
t2.[Objednávka]
Případně rovnou
SELECT
t4.[Objednávka],
t4.Dodavatel,
t3.Pocet
FROM
`C:\...\Sešit1.xlsx`.`List1$` AS t4
LEFT JOIN
(
SELECT
t2.[Objednávka],
Count(t2.Dodavatel) AS Pocet
FROM
(
SELECT DISTINCT
t1.[Objednávka],
t1.Dodavatel
FROM
`C:\...\Sešit1.xlsx`.`List1$` AS t1
WHERE
t1.Dodavatel Is Not Null
) AS t2
GROUP BY
t2.[Objednávka]
) AS t3 ON
t4.[Objednávka] = t3.[Objednávka]citovat