Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

SVILUPPO COMBINAZIONI SOLO CON FORMULE

Ultimo Aggiornamento: 29/11/2023 15:26
Post: 894
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
OFFLINE
21/11/2023 21:38


Ciao a tutti, vorrei proporre un problemino snervante

Per capirci meglio parliamo di Excel, anche se il problema è più aritmentico.
A parte la possibilità del VBA(sono pieno di queste soluzioni) 
si tratta dello sviluppo delle cominazioni COMB(N;k) tramite FORMULE
In allegato c'è un piccolo file con 4 gruppi di sviluppo:il primo è completo, il secondo solo a metà, il terzo ha solo la prima colonna e il quarto è da fare.
qui sopra uno screenshot di esempio.

Per N=5 e k=3 ho

in A1,B1,C1
1,2,3

in A2,B2,C2 ho
=SE(B1=4;A1+1;A1)
=SE(B1+C1=9;A2+1;SE(C1=5;B1+1;B1))
=SE(C1=5;B2+1;C1+1)
----------------
le colonne A2,B2,C2, che in questo caso sono 3, indicano che il K di COMB(N;k) è uguale a 3.
Se la riga 2 la trascino in basso ottengo lo sviluppo delle combinazioni di 5 elementi presi 3 alla volta
Sapendo che comb(5;3)=10 la tiro giù fino alla riga 10, in modo da avere le sequenze volute.
------------
Ora, premesso che il numero degli elementi del set non è un problema per modificarlo secondo esigenze, il vero problema è estendere le formule di A2,B2,C2 a D2,E2,F2 ecc. in modo tale che il gioco possa sviluppare le combinazioni di N elementi presi a 4 o 5 o 6, o più, alla volta.
E' abbastanza manicomiale, ci vuole tempo, pazienza, calma e un po' di fantasia meccanico-numerica che io non ho.
C'è qualcuno che riesca a fare qualcosa ?
C'è di mezzo la nidificazione dei SE, per cui si rischia di andare a sbattere contro la lunghezza massima di una formula.
Questo problema è soprattutto per i SuperFormulisti.
La risposta finale dovrebbe essere, più che lo sviluppo in sè delle combinazioni, capire come variano, come crescono le formule riguardanti il k per valori superiori a 3, cioè una sorta di struttura generale, ricorrente a seconda del valore di K.
Sarebbe grandioso, perchè mi sembra l'unico modo per sviluppare combinazioni senza il VBA.
In realtà da qualche parte che non ricordo ho trovato un secondo metodo per ottenere le formule delle righe 2
grazie dell'attenzione

Leo


[Modificato da L2018 21/11/2023 23:06]

LEO
https://t.me/LordBrum
Post: 3.589
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
27/11/2023 10:23

Leo

come sai, per sviluppare tramite vba le combinazioni, si ricorre a codici "ricorsivi" per reiterare i calcoli n volte.

Va da se che uno sviluppo con formule richiede l'allungamento della formula stessa e pertanto è dipendente dal numero di caratteri che possono essere scritti all'interno di una cella.

Un esempio allegato

saluti




Domenico
Win 10 - Excel 2016
Post: 912
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
OFFLINE
27/11/2023 10:40

ehi Domenico, grazie, bella sorpresa, non pensavo più che qualcuno rispondesse
quello che tu dici lo so benissimo, lo immaginavo, tanto è vero che ho scritto una postilla che si riferisce alla lunghezza massima di una formula, che mi pare sia 8192 caratteri.
"la nidificazione dei SE, per cui si rischia di andare a sbattere contro la lunghezza massima di una formula"

Ma io mi accontento appunto, come detto, di un k relativamente piccolo, solo per il piacere di veder funzionare un meccanismo intelligente di per sè.
Quindi ti ringrazio per l'esempio, che ho visto un attimo e guarderò meglio, ma tu sapresti, potresti fornirmi un esempio completo per N oggetti presi a 3 a 3, e magari a 4 a 4 ?
mi basterebbe, almeno per capire la struttura di tale formula
Grazie comunque anche se non potrai, e un salutone

LEO
https://t.me/LordBrum
Post: 3.590
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
27/11/2023 11:32

quello sottoposto contiene n oggetti presi a 3 (formula in C) e a 4 (formula in E) per volta, ma ovviamente lo sviluppo di tali colonne si ferma;

Spiego meglio:
7 oggetti presi 3 per volta sviluppano 35 combinazioni, quella formula in C si ferma alla prima voce di ciascun nominativo, in totale 5

Questo schema riporta tutte le combinazioni estratte con macro (colonne A,B,C) di 7 oggetti presi 3 per volta, nella colonna E trovi i risultati della formula proposta che, come vedi (col. D con X) corrispondono alle combinazioni dei singoli nomi soltanto :
1 parte da pippo
1 parte da pluto
1 parte da paperino
1 parte da Gastone
1 parte da Qui

Spero sia chiaro quanto esposto

saluti




[Modificato da dodo47 27/11/2023 11:52]
Domenico
Win 10 - Excel 2016
Post: 913
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
OFFLINE
27/11/2023 12:58

grazie della spiegazione e dell'attenzione
dovrò fare ulteriori riflessioni approfondite perché ancora mi sfugge qualcosa

LEO
https://t.me/LordBrum
Post: 1.233
Registrato il: 15/01/2016
Città: ROMA
Età: 51
Utente Veteran
2016
OFFLINE
29/11/2023 14:14

Ciao
Faccio un esempio con solo 4 dati che sviluppano 256 combinazioni con ripetizioni e 35 univoche da N2 a N5 metto i valori A B C e D
In A1 da trascinare a destra fino a D 1 e poi in basso fino a riga 256

SE(RIF.COLONNA()<=CONTA.VALORI($N$2:$N$6);SE(RIF.RIGA()<=POTENZA(CONTA.VALORI($N$2:$N$6);CONTA.VALORI($N$2:$N$6));(RESTO(ARROTONDA.PER.DIF(RIF.RIGA()/(POTENZA(CONTA.VALORI($N$2:$N$6);CONTA.VALORI($N$2:$N$6)-RIF.COLONNA()));0);CONTA.VALORI($N$2:$N$6))+1);"");"")

In F1 da trascinare a destra fino a I1 e poi in basso fino a riga 256

=SE.ERRORE(PICCOLO($A1:$D1;RIF.COLONNA(A$1));"")

In K1 da trascinare in basso fino a riga 256

=F1&G1&H1&I1

In L2 da trascinare in basso fino a riga 257

=SE.ERRORE(INDICE($K$1:$K$256;CONFRONTA(0;INDICE(CONTA.SE($L$1:$L1;$K$1:$K$256&"");;);0));"")

Per i risultati in O2 da trascinare a destra fino a R2 e poi in basso fino a riga 257

=SE.ERRORE(INDICE($N$2:$N$6;INDICE(A$1:A$256;CONFRONTA($L2;$K$1:$K$256;0)));"")


Se vuoi gestire più di 4 dati ad esempio 5 la prima formula è già adeguata ma devi adeguare i riferimenti delle altre e trascinare tutto fino a riga 3125 (io ci ho provato ma si impalla visto che scrivo da cellulare)

Allego file di lavoro




[Modificato da DANILOFIORINI 29/11/2023 14:15]
Post: 914
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
OFFLINE
29/11/2023 14:24

grazie, gentilissimo, ho appena visto e fra poco vado a provare, di solito uso e studio le combinazioni semplici
a presto

LEO
https://t.me/LordBrum
Post: 915
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
OFFLINE
29/11/2023 14:35

ciao Danilo
da ingordo ho guardato subito, tutto bene per ciò che riguarda le combinazioni con ripetizione
ma mi sembra di non vedere una formula per le combinazioni semplici, cioè senza ripetizioni
Che poi sono quelle che uso normalmente nelle mie applicazioncelle
o mi sfugge qualcosa ?
immagino che la formula per le comb semplici abbiano altra struttura
Grazie

LEO
https://t.me/LordBrum
Post: 1.234
Registrato il: 15/01/2016
Città: ROMA
Età: 51
Utente Veteran
2016
OFFLINE
29/11/2023 14:43

Ciao la soluzione è da O a R ho estrapolato le 35 quaterne che si creano con 4 numeri tutta la procedura serve proprio a questo....con formula unica la vedo dura
Post: 916
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
OFFLINE
29/11/2023 15:20

Re:
DANILOFIORINI, 29/11/2023 14:43:

Ciao la soluzione è da O a R ho estrapolato le 35 quaterne che si creano con 4 numeri tutta la procedura serve proprio a questo....con formula unica la vedo dura



chiedo scusa, quando ho aperto il tuo file non mi sono accorto della visualizzazione di O:R, ora ho visto
sono 35 quaterne, ma non sono combinazioni semplici, quindi A-A-A-B non è ammessa
mantengo certamente il tuo file perchè è comunque utilissimo a certo tipo di sviluppo
tuttavia io cerco quelle SENZA ripetizioni
mi risulta che 35, oltre ad essere il numero delle combinazioni con ripetizione di 4 elementi, è (ed è quello che serve a me) il numero delle combinazioni semplici (quindi senza ripetizioni) di 7 elementi presi 4 alla volta
quindi
1,2,3,4
1,2,3,5
1,2,3,6
1,2,3,7
eccetera
e per evitare equivoci di nomenclatura ti mando il file COMB(7;4)
so bene, e l'ho detto all'inizio, che dev'essere una cosa da manicomio, ma quella era la richiesta
Se la tua frase "la vedo dura" si riferisce a ciò che realmente cerco, eh, lo so, capisco, non devi impazzire
Eppure tempo fa mi sembra di aver trovato una cosa del genere ma devo aver dimenticato di prendere nota del sito
comunque la struttura di tali formule sarebbe quella che ho messo nel mio primo esempio riferendomi a 5 oggetti presi 3 alla volta
e tale numero 3, chiamato classe, richiede 3 formule diverse fra loro.
Poi il rigo composto di 3 formule viene tirato in basso
Intanto un grosso grazie per la tua attenzione
[Modificato da L2018 30/11/2023 10:17]

LEO
https://t.me/LordBrum
Post: 917
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
OFFLINE
29/11/2023 15:26

ti propongo una cosa

ho questa formula, che mi ritrovo scritta non certo da me in data Aprile 2023

=SE(RIGA()-RIGA($D$2)+1>CONTA.VALORI($A$2:$A$5)*CONTA.VALORI($B$2:$B$4),"",INDICE($A$2:$A$5,INT((RIGA()-RIGA($D$2))/CONTA.VALORI($B$2:$B$4)+1))&"-"&INDICE($B$2:$B$4,RESTO(RIGA()-RIGA($D$2),CONTA.VALORI($B$2:$B$4))+1))


non è che per caso tu riesca ad attribuirla ad un possibile sviluppo del tipo chiesto da me ?
se così fosse sarebbe quella del sito non annotato, che quindi aveva trovato la soluzione

LEO
https://t.me/LordBrum
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 01:00. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com