Excel? – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Excel? – Pascal – Fórum – Programujte.comExcel? – Pascal – Fórum – Programujte.com

 

ma ka
~ Anonymní uživatel
4 příspěvky
30. 4. 2017   #1
-
0
-

Nevím kam s tím? Ahoj, pomohl by mi někdo vytvořit jednoduchý program, možná nejlépe v exelu? Jde o to, že potřebuji do jednoho řádku zadat 6 čísel, těch řádků bude x (3600??) A pak z této databáze vyhledat 3 nejčastější čísla , které jsou spolu v jednom řádku a opakují se. Jde o kombinaritoriku, kdybych to měl ručně počítat, tak bych to dělal několik týdnů. Proto se ptám jestli toto někdo neumí udělat v exelu, popřípadě vytvořit jednoduchý program, do kterého by se jen vložila databáze čísel. Dík předem.

Nahlásit jako SPAM
IP: 109.81.210.–
Mircosoft+1
Věrný člen
2. 5. 2017   #2
-
0
-

Doplnění z mailu: jde o celá čísla v rozsahu 1..49.

Jestli jsem nezapomněl kombinatoriku, tak možných trojic ze 49 čísel je celkem 49!/(3!*(49-3)!)=18424. Udělat pole 18424 wordů (kde index je kód kombinace a obsah je počet výskytů) by zvládl i realmódový Turbo pascal (a 32bitové překladače s prstem v nose), takže můžeme použít hrubou sílu.

1) Potřebujeme nějaký vzorec, který převede kombinaci tří čísel na jedno (index pole) a zpátky. Trojciferné číslo o základu 49 to být nemůže, protože se bavíme o kombinacích a ne o variacích (tj. nezáleží na pořadí cifer). Začal bych seřazením čísel podle velikosti, potom by se mohla něčím vynásobit a sečíst nebo nějak jinak vhodně zkombinovat. Přesný postup mě zatím nenapadá - zkusím popřemýšlet, nebo to může zkusit někdo jiný.

2) Připravíme si pole počtů a inicializujeme ho nulami. Každý řádek čísel potom projdeme trojitým cyklem: 

for i:=1 to 4 do
 for j:=i+1 to 5 do
  for k:=j+1 to 6 do
   begin
   index:=...spočítej z čísel na pozicích i,j,k...
   inc(PolePoctu[index]);
   end;

3) Teď máme v poli počty výskytů jednotlivých trojic. Najdeme v něm maximum, případně všechny počty rovné maximu.

4) Z indexu maximálního prvku zpětně spočítáme, o jakou trojici šlo. Hotovo.

Nahlásit jako SPAM
IP: 212.79.106.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
MilanL+1
Grafoman
4. 5. 2017   #3
-
0
-

#1 ma ka
No zadání je to spíš statistika než kombinatorika. Kdysi jsem dělal něco podobnýho - analýzu na sportku včetně statistiky i těch vyších kombinací, kouknu zítra jestli někde nenajdu kody, kdyžtak zavzpomínám a něco spáchám.

Jak na to spěcháš stačí přes víkend? A trváš na excel.kodu nebo jde jen o to že ty data jsou v excelu.

Otázkou je jestli chceš jen najít nejčastější trojkombinaci, nebo seřadit trojkombinace podle výskytu, případně i ukázat řádky ve kterých ta kombinace je.

Nahlásit jako SPAM
IP: 185.112.167.–
ma ka
~ Anonymní uživatel
4 příspěvky
4. 5. 2017   #4
-
0
-

#3 MilanL
ahoj, nejsem programátor, Šlo o to abych tam jednoduše překopíroval dané čísla do toho programu a tak mě napadl excel, jiný program neznám, netrvám na něm. Prostě něco jednoduchého co bych pochopil z popisu, nemám IQ 50 :-) , ale ani 150 :-( , a časově ideální 1týden, ale není to nutná podmínka-nespěchá to. A mělo by to nají 3 nejčastější společné čísla -

1-7-11-15-22-35 
 2-5-11-18-32-45 
4-11-22-35-38-42 
3-8-11-16-22-35 
nejčastšjší= 11-22-35  , tak nějak takhle.

Nahlásit jako SPAM
IP: 109.81.210.–
Jerry
~ Anonymní uživatel
512 příspěvků
4. 5. 2017   #5
-
0
-

#1 ma ka
a proč teda zadáváš tuhle ulohu do sekce Pascal ??? když to chceš v Excelu ?? No dá se to napsat ve VisualBasicu (VBA) co je l dispozici v Excelu. Když chceš "...3 nejčastější čísla , které jsou spolu v jednom řádku a opakují se."

Nejprve tedy vygeneruješ ty čísla ve sloupcích a řádních náhodně .. přímo pomocí VBA a pak sestavíš tabulku použitých čísel a jejich početnosti s ohledem na řádky. Problém je v tom, že ty nepíšeš jak velká ta čísla mají být a jestli se mohou v řádku opakovat takže abychom to zjednodušili předpokládejme že typu unsigned byte (0..255) a opakovat se NEmohou. Potom už to neni až tak hroznej problem.... vygeneruješ si pomocnou tabulku která má 256 sloupců a stejnej počet řádků jako ta tvoje tabulka a pouze přičítáš početnosti pro jednotlivé kombinace ... no to je řečeno hezky teoreticky ale fungovat to bude...

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:1564:...–
MilanL+1
Grafoman
4. 5. 2017   #6
-
0
-

#5 Jerry

tak jednoduché to nebude, nechce 3 nejčastější čísla, ale nejčastější trojkombinaci a těch je v každém řádku 20, a nechce generovat náhodná čísla ale má nějaký vstup.

Na excelu netrvá - tam mu jde spíš o to jak do programu dostat data.

#4 ma ka
já bych to dělal přes Hashmapu (některé jazyky mají implementováno, jinak 2 rozměrné dynamické pole/list/kontejner [X x 2] v druhém rozměru budou 2 údaje hash a počet), pak mít Hash (jedinečný kod vytvořený z trojkombinace - zde je třeba vědět rozsah čísel 1..MAX), funkce na Existenci hash v mapě Existuje > zvýší počet, neexistuje > přidá hash do pole. Po projetí všech řádek a vnořených cyklů na kombinace projít najít v has mapě položku s nějvyšším počtem a dekodovat z Hashe kombinaci.

Max počet trojkombinací je bez opakujících se 20x počet řádek, vzhledem k opakování jich bude tak 1/8.

Nahlásit jako SPAM
IP: 91.139.9.–
MilanL+1
Grafoman
4. 5. 2017   #7
-
0
-

Ten Hash by měl být vytvořen tak, aby žádné 2 různé kombinace nemohli mít stejný, a před výpočtem by ta 3 čísla měla být vždy stejným způsobem seřazena podle velikosti.

Zjednodušení Hash funkce při předpokladu, že hodnoty jsou v rozsahu Byte (0..255), použít na Hash 4bytový datový typ a vkládat jednotlivá čísla do nižších 3 bytů - v tomto případě ani nevadí pokud se čísla v řádce budou opakovat. Příklad kombinace 1-2-3 poté 4bytová hodnota je převedeno na HEX (00 01 02 03) = 00 + 01x65536 + 02x256 + 03) =>HASH= 66041, ale pokud v jiné řádce bude jiné pořadí, které neseřadíš např. 1-3-2 pak Hash bude jiné 00 01 03 02 = 01x65536 + 03x256 + 02 => 66306 a už by odkazovalo na jinou kombinaci. 

Excel se na to moc nehodí vzhledem k objemu dat respektive to bude dlouho trvat, řádově může jít o desítky minut až hodiny. Průchod všech řádek x 20 průchod kombinací v řádce, výpočet hash, procházené hash mapy (řazené/neřazené) ze začátku rychlé postupně výrazné zpomalení jak budou přibývat různé kombinace (průběžné řazení vkládání do pole podle hodnoty hash může hledání urychlit). A nakonec průchod mapou k nalezení maxima.

Ještě případné parsování čísel z řádku.

Nahlásit jako SPAM
IP: 91.139.9.–
peter
~ Anonymní uživatel
4014 příspěvků
4. 5. 2017   #8
-
0
-

V excelu je to brnkacka.
Zadani:
1. Mas nejak ziskanou, generovanou sadu cisel a pres ctrl+c / v to muzes prekopirovat.
2. Potrebujes urcit pocet opakujicich se cisel a seradit podle velikosti.

Reseni:
0. google = excel zjistit pocet duplicit
Treba
https://support.office.com/…f75bb9bb89bd
1. Vlozis tam cisla, pod sebe a vedle das 1, treba

1	1
2	1
3	1
1	1
2	1
3	1
4	1
5	1
6	1

2. oznacis to cele
3. Vložení > Kontingenční tabulka.
- vybrano uz mas (default)
- na novy list (default)
Ok
4. Ted je to trosku slozitejsi.
Mas tam okenka
- seznam poli, ja tam mam '1' a '12'
- filtry
- popisky sloupcu
- popisky radku
- suma hodnoty
'1' pretahnes do 'popisky radku'
'12' pretahnes do 'popisky sloupcu'
Hotovo. 

Popisky řádků	Součet z 12
1	1
2	2
3	2
4	1
5	1
6	1
Celkový součet	8

Ale nemam tam zahlavi sloupcu, tak mi ignoroval prvni radek, proto je u '1' pocet = 1. S tim si ale poradis a nebo prictes 1 k prvni hodnote puvodni tabulky.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:5d0d:36...–
peter
~ Anonymní uživatel
4014 příspěvků
4. 5. 2017   #9
-
0
-

Hele, ale jestli mas nejaky programovy generator, tak mozna lepsi reseni nez pascal je javascript. Www prohlizec ma dnes kazdy a FF umi seradit milion cisel behem mrknuti oka. Takze operovat s 18.000 bude pro nej brnkacka.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:5d0d:36...–
peter
~ Anonymní uživatel
4014 příspěvků
4. 5. 2017   #10
-
0
-

Jo, a v excelu lze sloupec s 1 ziskat tak, ze napises dve 1 pod sebe, oznacis a v pravem dolnim rohu oblasti se meni kurzor na krizek. tak, kdy je krizek, jen to potahnes dolu.
Cisla tam lze zas dostat treba z text souboru nebo csv. Bud vodorovne s oddelovacem nebo svisle. Excel ma schopnost zamenovat x/y. a kdyz to nejde, ma schopost transpodovat nebo tak nejak. Oznacis v excelu bunky ctrl+c, upravy - vloozit jinat, najdes transpondovat nebo mozna cesky tam bude zamenit x/y nebo formatovat vodorovne misto svisle. A vlozi ti to pak pod sebou.

Jinak, programove, se pouzivaji 2 metody. Serazeni nebo vyhledavani stejnych. Serazeni je rychlostne lepsi. Pro vetsi rychlost je treba ale pole duplikovat. 3600 hodnot pro excel nic neni :) To zas jako nekdo prehani. Ale vzdy je mozne si nainstalovat mysql server a poustit to pres nej. sql bezne zvlada milion hodnot, kdyz ma k tabulce indexy.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:5d0d:36...–
MilanL+1
Grafoman
4. 5. 2017   #11
-
0
-

#10 peter
trošku plaveš v zadání, nechtěl nejčastější čísla nebo páry, ale trojkombinace musel bys mít trojrozměrnou tabulku 256x256x256 (spíš ale bude MAX menší ale i tak třeba 49x49x49 dává necelých 125.000 možných trojkombinací), navíc jednoduché řazení podle sloupců nestačí stejné číslo může mít v různých sloupcích. např 1-12-20-22, 12-22-30-31...

Nahlásit jako SPAM
IP: 91.139.9.–
MilanL+1
Grafoman
5. 5. 2017   #12
-
0
-

#11 MilanL
samozřejmě by to šlo udělat programátorsky i jednodušeji, ale časově náročnějším způsobem:

generovat jednotlivé trojkombinace s možností opakování čísel  (1..max X 1..max X 1..max) nebo bez opakování (smyčky 1..max-2 X 1.číslo+1..max-1 X 2.číslo+1..max) a s těmi to kombinacemi procházet všechny řádky a počítat výskyty výsledek porovnat s dosavadním maximálním počtem, když je nový počet výskytů vyšší aktualizovat max počet a uložit si kombinaci.

Nahlásit jako SPAM
IP: 185.112.167.–
gna
~ Anonymní uživatel
1891 příspěvků
5. 5. 2017   #13
-
0
-

A všimli jste si, že to všechno už Mircosoft napsal, že jo?

Nevím, co řešíte. Python:

import sys, collections, itertools, operator

data = []
for line in sys.stdin:
	data.append([int(i) for i in line.strip().split(",")])

counter = collections.defaultdict(int)
for row in data:
	for comb in itertools.combinations(row, 3):
		counter[comb] += 1

counter = sorted(counter.items(), key=operator.itemgetter(1), reverse=True)
print(counter[:3])
Nahlásit jako SPAM
IP: 213.211.51.–
peter
~ Anonymní uživatel
4014 příspěvků
5. 5. 2017   #14
-
0
-

MilanL: cituji:

1-7-11-15-22-35 
 2-5-11-18-32-45 
4-11-22-35-38-42 
3-8-11-16-22-35 
nejčastšjší= 11-22-35  , tak nějak takhle.

Kdyz vsechna ty cisla das pod sebe a zjistis nejcasteji se opakujici cisla, tak prvni 3 bude s vysokou pravdepodobnosti ta trojkombinace, kterou hledas. A jak rikam, v excelu je to brnkacka, kdyz clovek umi googlovat. Coz je min. iq 80. A 80 ma prumerny clovek, protoze prumerne iq je 100, cili logicky vetsina lidi ma mensi, kdyz je nekolik jedincu se 130 a vic.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:d5c8:bf...–
peter
~ Anonymní uživatel
4014 příspěvků
5. 5. 2017   #15
-
0
-

#14 peter
Jo, a mimochodem, programovani take zvladne clovek s min. iq 80. takze nevim, proc se tazatel vymlouva na iq. V programovani je v zakladu asi 20 ruznych veci. Zbytek si muzes doprogramovat nebo vyuzit uz udelane funkce. To umi i 7 lete deti.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:d5c8:bf...–
MilanL+1
Grafoman
5. 5. 2017   #16
-
0
-

#13 gna
v pohodě, ale ne každý Python používá a je schopen ho naplno využít. Co umí jeden jazyk nemusí umět jiný.

Řešení Microsoftu je sice správné, ale  otázkou je náročnost výpočtu indexu z kombinace, musel by mít druhé předem nadefinované pole kombinací kde by musel kombinaci vyhledat a převést na index.
To už by podle mě bylo jednodušší mít větší pole cca 125.000 a index počítat jako jednoznačné číslo z čísel kombinace = 1.číslo + 2.číslo * 50 + 3.číslo * 2500, zpětný převod pak z indexu zpětně 3. číslo = celá část Index / 2500, 2. číslo = celá část Zbytku  / 50 a 1.číslo = Zbytek,

Jako je jasný, že s kapacitou a výkonem dnešních PC to není problém, ale kdyby to někdo chtěl aplikovat na jiný rozsah ať už čísel nebo kombinací, roste náročnost násobně. U řešení s Hashtable nebo Hashmap, klesá náročnost na paměť (v poli pouze vyskytující se kombinace) a rychlost práce s objektem je téměř konstantní..

.#14 peter
s tím, že při seřazení bude na prvních 3 místech nejčastější kombinace nesouhlasím, vem si uvedený příklad. Nejčastější 11-22-35, je X trojkombinacích, které tuto kombinaci doplňují na 6 čísel v řádku, ikdybys udělal statistiku  na jednotlivá čísla a vybral nejčastější nemáš jistotu, že jsou z nějčastější trojkombinace.

v excelu by to šlo udělat i bez většího programování, do prvního listu naimportovat data, tak aby v každém sloupečku bylo 1 číslo tabulka řádků x 6, do druhého listu kombinace (převod na jednoznačné číslo/hash) tabulka: řádků x 20 (k vyplňování udělat kombinace pro první řádek a pak zkopírovat do dalších), no a pak už jen stačí nějaká statistická funkce aplikovaná na druhý list, která najde nejčastější kombinaci.

Nahlásit jako SPAM
IP: 91.139.9.–
peter
~ Anonymní uživatel
4014 příspěvků
5. 5. 2017   #17
-
0
-

#16 MilanL
! S vysokou pravdepodobnosti je mysleno 80%, treba.
Jestli chces 100%, tak si vypises vsechny kombinace a poscitas. Coz je tez brnkacka, jen vic prace
a - b - c - d - e - f
a - b - c | a - b - d | a - b - e | a - b - f | b - c - d | b - c - e | b - c - f | c - d - e | c - d - f | d - e - f
Takhle to rozepises pro kazdou sestici, poscitas uplne vse, seradis, a nahore mas top kombinace. Ze soucet nebude souhlasit s realnym poctem radku puvodnich sestic, neni dulezite, protoze to te nezajima.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:d5c8:bf...–
MilanL+1
Grafoman
5. 5. 2017   #18
-
0
-

#17 peter
možná Ti jen špatně rozumím, bral jsem ty tvé příspěvky jako, že to řazení aplikuješ na tabulku v excelu, což by tak jednoduše nešlo. kdybys ke každý řádce spočítal (nějakým jednoznačným způsobem) do dalších 20 sloupců ty trojkombinace stále by ti to nemohlo seřazením vyjít (stejná čísla mohou být v řádkách na jiných pozicích + tím pádem stejná hodnota kombinace může být v různých sloupcích) , ale už dala by se na oblast kombinací aplikovat statistická funkce na počet výskytů.

Nahlásit jako SPAM
IP: 91.139.9.–
ma ka
~ Anonymní uživatel
4 příspěvky
25. 5. 2017   #19
-
0
-

ahoj, má někdo vytvořený ten program?

Nahlásit jako SPAM
IP: 109.81.210.–
ma ka
~ Anonymní uživatel
4 příspěvky
25. 5. 2017   #20
-
0
-

Ahoj,dostal jsem tuto radu, šlo by to doupravit??


zkoušel jsem zadat Excelu to, co požaduješ. V Excelu ale rozhodně nepatřím mezi profíky, tento příspěvek tě ale snad nakopne k hledání dalšího řešení a následné finalizace.
Jako první jsem si nadefinoval 6 náhodných čísel v rozpětí od 1 do 10 (pro snadnou manipulaci) do každého řádku – jedná se o funkci

RANDBETWEEN(1;10)

A pak z této databáze vyhledat 3 nejčastější čísla, které jsou spolu v jednom řádku a opakují se.

Označil jsem tedy ten řádek s 6 vygenerovanými čísly a zapsal funkci

MODE.SNGL()

(funkce MODE.SNGL vybere nejčastěji vyskytující se číslo v nějaké skupině čísel). Funkce udělala, co měla – z řádku o 6 číslech vybrala číslo, které se mezi ostatními na řádku opakovalo. Pokud se ale číslo neopakovalo – tato situace nastává zejména při větším rozpětí číselné řady (už ne od 1 do 10) – vypsala se chybová hláška.
V případě, kdy bys hledal více více takových čísel, která se vyskytují v řádku vícekrát, mohl bys použít funkci

MODE.MULT()

Bohužel, u této funkce to je pro hledání 3 společných čísel trošku nejasné. Když je totiž společné číslo v tom řádku jen jedno (např. č. 6), vypíše ho hned na všechny 3 místa do tabulky, nikoliv jen na jedno.
Nicméně, koukni na to a zkus si to upravit podle sebe. Snad jsem tě alespoň trochu navedl správným směrem. Kdyby něco, napiš. Hodně štěstí!

Nahlásit jako SPAM
IP: 109.81.210.–
peter
~ Anonymní uživatel
4014 příspěvků
25. 5. 2017   #21
-
0
-

#18 MilanL
Udelej vzorovy seznam treba 20 radku, ukaz, co z toho chces za vypis, jak jsi k tomu dospel. Treba kazdy resime jinou ulohu. At mame stejne vysledky. Ja si myslim, ze by to slo. Pak to treba muzes zaludne upravit tak, aby muj postup nefungoval. :)

Nahlásit jako SPAM
IP: 2001:718:2601:26c:4dbc:38...–
peter
~ Anonymní uživatel
4014 příspěvků
25. 5. 2017   #22
-
0
-

 Tady jsem treba vybral par nahodnych cisel. Nevim, zda tam jsou nejake trojice. Ale ted bohuzel nema cas to dal resit :) 0-9, 6 cisel.

159092
386410
483387
329012
727738
673485
402331
312198
578399
236830
273847
012251
055543
339047
848404
884714343623
516289
460685
Nahlásit jako SPAM
IP: 2001:718:2601:26c:4dbc:38...–
gna
~ Anonymní uživatel
1891 příspěvků
25. 5. 2017   #23
-
0
-

#19 ma ka
ahoj, má někdo vytvořený ten program?

To co jsem napsal je kompletní program. Data to čte ze standarního vstupu jako řádky čísel oddělených čárkou. Dělat to v Excelu je ptákovina. 

data.txt:
1,2,3,...
4,5,6,...
...

 

python3 program.py <data.txt
Nahlásit jako SPAM
IP: 213.211.51.–
peter
~ Anonymní uživatel
4014 příspěvků
26. 5. 2017   #24
-
0
-

krok 1, vypsat trojice, =a1, =a2, -a3 | =1a, =a2, =a4...
a b c a b d a b e a b f b c d b c e b c f c d e c d f d e f
1 5 9 1 5 0 1 5 9 1 5 2 5 9 0 5 9 9 5 9 2 9 0 9 9 0 2 0 9 2
3 8 6 3 8 4 3 8 1 3 8 0 8 6 4 8 6 1 8 6 0 6 4 1 6 4 0 4 1 0
4 8 3 4 8 3 4 8 8 4 8 7 8 3 3 8 3 8 8 3 7 3 3 8 3 3 7 3 8 7
3 2 9 3 2 0 3 2 1 3 2 2 2 9 0 2 9 1 2 9 2 9 0 1 9 0 2 0 1 2
7 2 7 7 2 7 7 2 3 7 2 8 2 7 7 2 7 3 2 7 8 7 7 3 7 7 8 7 3 8
6 7 3 6 7 4 6 7 8 6 7 5 7 3 4 7 3 8 7 3 5 3 4 8 3 4 5 4 8 5
4 0 2 4 0 3 4 0 3 4 0 1 0 2 3 0 2 3 0 2 1 2 3 3 2 3 1 3 3 1
3 1 2 3 1 1 3 1 9 3 1 8 1 2 1 1 2 9 1 2 8 2 1 9 2 1 8 1 9 8
5 7 8 5 7 3 5 7 9 5 7 9 7 8 3 7 8 9 7 8 9 8 3 9 8 3 9 3 9 9
2 3 6 2 3 8 2 3 3 2 3 0 3 6 8 3 6 3 3 6 0 6 8 3 6 8 0 8 3 0
2 7 3 2 7 8 2 7 4 2 7 7 7 3 8 7 3 4 7 3 7 3 8 4 3 8 7 8 4 7
0 1 2 0 1 2 0 1 5 0 1 1 1 2 2 1 2 5 1 2 1 2 2 5 2 2 1 2 5 1
0 5 5 0 5 5 0 5 4 0 5 3 5 5 5 5 5 4 5 5 3 5 5 4 5 5 3 5 4 3
3 3 9 3 3 0 3 3 4 3 3 7 3 9 0 3 9 4 3 9 7 9 0 4 9 0 7 0 4 7
8 4 8 8 4 4 8 4 0 8 4 4 4 8 4 4 8 0 4 8 4 8 4 0 8 4 4 4 0 4
8 8 4 8 8 7 8 8 1 8 8 4 8 4 7 8 4 1 8 4 4 4 7 1 4 7 4 7 1 4
3 4 3 3 4 6 3 4 2 3 4 3 4 3 6 4 3 2 4 3 3 3 6 2 3 6 3 6 2 3
5 1 6 5 1 2 5 1 8 5 1 9 1 6 2 1 6 8 1 6 9 6 2 8 6 2 9 2 8 9
4 6 0 4 6 6 4 6 8 4 6 5 6 0 6 6 0 8 6 0 5 0 6 8 0 6 5 6 8 5

krok2 seradit =MIN(A2:C2), ?, =MAX(A2:C2),
? = =IF(OR(AND(A2<=B2; B2<=C2);AND(C2<=B2; B2<=A2));B2;IF(OR(AND(B2<=A2; A2<=C2);AND(C2<=A2; A2<=B2));A2;C2))

a b c a b d a b e a b f b c d b c e b c f c d e c d f d e f
1 5 9 0 1 5 1 5 9 1 2 5 0 5 9 5 9 9 2 5 9 0 9 9 0 2 9 0 2 9
3 6 8 3 4 8 1 3 8 0 3 8 4 6 8 1 6 8 0 6 8 1 4 6 0 4 6 0 1 4
3 4 8 3 4 8 4 8 8 4 7 8 3 3 8 3 8 8 3 7 8 3 3 8 3 3 7 3 7 8
2 3 9 0 2 3 1 2 3 2 2 3 0 2 9 1 2 9 2 2 9 0 1 9 0 2 9 0 1 2
2 7 7 2 7 7 2 3 7 2 7 8 2 7 7 2 3 7 2 7 8 3 7 7 7 7 8 3 7 8
3 6 7 4 6 7 6 7 8 5 6 7 3 4 7 3 7 8 3 5 7 3 4 8 3 4 5 4 5 8
0 2 4 0 3 4 0 3 4 0 1 4 0 2 3 0 2 3 0 1 2 2 3 3 1 2 3 1 3 3
1 2 3 1 1 3 1 3 9 1 3 8 1 1 2 1 2 9 1 2 8 1 2 9 1 2 8 1 8 9
5 7 8 3 5 7 5 7 9 5 7 9 3 7 8 7 8 9 7 8 9 3 8 9 3 8 9 3 9 9
2 3 6 2 3 8 2 3 3 0 2 3 3 6 8 3 3 6 0 3 6 3 6 8 0 6 8 0 3 8
2 3 7 2 7 8 2 4 7 2 7 7 3 7 8 3 4 7 3 7 7 3 4 8 3 7 8 4 7 8
0 1 2 0 1 2 0 1 5 0 1 1 1 2 2 1 2 5 1 1 2 2 2 5 1 2 2 1 2 5
0 5 5 0 5 5 0 4 5 0 3 5 5 5 5 4 5 5 3 5 5 4 5 5 3 5 5 3 4 5
3 3 9 0 3 3 3 3 4 3 3 7 0 3 9 3 4 9 3 7 9 0 4 9 0 7 9 0 4 7
4 8 8 4 4 8 0 4 8 4 4 8 4 4 8 0 4 8 4 4 8 0 4 8 4 4 8 0 4 4
4 8 8 7 8 8 1 8 8 4 8 8 4 7 8 1 4 8 4 4 8 1 4 7 4 4 7 1 4 7
3 3 4 3 4 6 2 3 4 3 3 4 3 4 6 2 3 4 3 3 4 2 3 6 3 3 6 2 3 6
1 5 6 1 2 5 1 5 8 1 5 9 1 2 6 1 6 8 1 6 9 2 6 8 2 6 9 2 8 9
0 4 6 4 6 6 4 6 8 4 5 6 0 6 6 0 6 8 0 5 6 0 6 8 0 5 6 5 6 8
krok 3 spojit na cisla a*100 + b+10 + c*1
krok 4 soucty pres kontingencni tabulky, resp, dam to do jednoho sloupce, aby stacila 1 tabulka,
Nad sloupec davam aaa, oznacim, vlozit - konting. tabulka, ok, pretahnu aaa do 'hodnoty', pokud je tam soucet, tak to zmenim na pocet. A pretahnu aaa tez do sloupce.
Vyslednou dvojradkovou tabulku oznacim, zkopiruji na jiny list a dam seradit. ctrl+c, upravy > vlozit jinak, vlozit jinak, transpondovat. Oznaci, seradim podle 'Pocet z aaa' DESC. Sem davam jen prvnich top-n

	Počet z aaa
378	7
448	6
348	5
12	4
23	4
29	4
68	4
125	4
277	4
334	4
488	4
48	3
123	3

Cili, nejcastejsi trojice cisel tam jsou
378 , 448, 348, 012, 023
 

Samozrejme je to napikacu postup, ale jde to i v excelu a netrva to dlouho. Kdyz vynecham zadrhely s tim, ze mi excel cosi zmenil na bunkach a pak mi min max zahadne zobrazovalo spatna cisla :) a musel jsem to pretahnout pres far, ktery mi odboural excel formatovani a tak, tak asi 5 min. Havam, ze pro 4000 radku by to bylo asi narocnejsi, tak 30-60 min.
Zajimalo by mne, co vyplivne program. Nechce se mi ho ted sepisovat.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:9975:2d...–
peter
~ Anonymní uživatel
4014 příspěvků
26. 5. 2017   #25
-
0
-

chapu, ze to neni dokonale reseni, ze mi tam naskace spoustu kombinaci, co tam nemaji, co delat.
1-1-1-1-2-3 vytvori spoustu kombinaci 1-2-3, takze 1-2-3 se dostane hned top
Ale predpokladam, ze tak nejak ten vysledek bude.
Ale udelat to programem, da presne vysledky.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:9975:2d...–
MilanL+1
Grafoman
26. 5. 2017   #26
-
0
-

#24 peter

No to byl i můj návrh, jen bych nedělal tu tabulku kombinací.

A ještě drobnost máš tam málo kombinací má jich být 20

abc,abd,abe,abf,acd,ace,acf,ade,adf,aef,bcd,bce,bcf,bde,bdf,bef,cde,cdf,cef,def

Moje řešení

Do listu1 nahrát data, udělat program který ke každé řádce přidá do dalších 20 buněk hodnoty kombinací =číslo1+číslo2*(max+1)+číslo3*druhámocnina(max+1))

max = Maximální číslo

pak už stačí vybrat tu oblast 20 x počet řádků s hodnotami kombinací a aplikovat statistické funkce

Nahlásit jako SPAM
IP: 91.139.9.–
MilanL+1
Grafoman
26. 5. 2017   #27
-
0
-

#26 MilanL
kombinace se pak zjistí zpětně:

číslo3 = celáčást(hodnotakombinace/druhámocnina(max+1))

číslo2 = celáčást((hodnotakombinace-číslo3*druhámocnina(max+1))/(max+1))

číslo1 = (hodnotakombinace-číslo3*druhámocnina(max+1)) modulo (max+1)

modulo - zbytek po celočíselném dělení

EDIT oprava zápisu 

číslo1 = MOD( (hodnotakombinace-číslo3*druhámocnina(max+1)) , (max+1))

Nahlásit jako SPAM
IP: 91.139.9.–
peter
~ Anonymní uživatel
4014 příspěvků
26. 5. 2017   #28
-
0
-

Njn, pravdu mas, vic kombinaci. Dalsi duvod, proc to tak nedelat, clovek snadno udela chybu :)

Nahlásit jako SPAM
IP: 2001:718:2601:26c:48d7:1e...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

Podobná vlákna

C++ a excel — založil doveda

Excel — založil Lolo24

Excel — založil Tomass

Excel — založil marius

Excel — založil Tomass

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý