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

Cercasi formula per estrapolazione dati

Ultimo Aggiornamento: 13/05/2015 15:47
Post: 1
Registrato il: 07/05/2015
Età: 31
Utente Junior
2007
OFFLINE
07/05/2015 11:08

Buon giorno a tutti,
scoprendo l'esistenza del forum, porgo l'occasione per porvi un quesito per me molto difficile, il seguente:

se io ho dei dati (a, b, c, d, e, f, ecc...) ed un risultato X, è possibile riuscire a trovare tutte le possibili combinazioni dei dati per ottenere il risultato X?

Grazie enormemente
Post: 50
Registrato il: 06/04/2013
Utente Junior
2010
OFFLINE
07/05/2015 13:36

Ciao

Qui c'è un bel lavoro.



Da precisare che il risultato riporta il numero d'ordine degli elementi che sommati forniscono il risultato.
Es:
se in una colonna hai:

1° dato riga3:....1
2° dato riga4:....3
3° dato riga5:....5
4° dato riga6:....2
5° dato riga7:....3
6° dato riga8:....4

e la somma che vuoi è 5, ti restituirà:
1,6 cioè il 1° dato (1) + il 6° dato (4)
2,4 cioè il 2° dato (3) + il 4° dato (2)
3 ecc
4,5 ecc


saluti
[Modificato da dodo47 07/05/2015 18:08]
Domenico
Win 10 - Excel 2016
Post: 1
Registrato il: 07/05/2015
Età: 31
Utente Junior
2007
OFFLINE
07/05/2015 13:43

Fraintendimento?
Ringrazio DODO47 per la collaborazione, ma quello da lui spiegato è solo un esempio, vorrei sapere se si riesce a trovare/creare una formula che riesca ad adattarsi agli esempi precedenti. Grazie
Post: 51
Registrato il: 06/04/2013
Utente Junior
2010
OFFLINE
07/05/2015 18:01

Ciao

Fraintendimento??... forse è anche colpa mia per non aver evidenziato la parola Qui.


Se clicchi sulla parola Qui del mio precedente post, trovi un sito con la macro

saluti
[Modificato da dodo47 07/05/2015 18:02]
Domenico
Win 10 - Excel 2016
Post: 2
Registrato il: 07/05/2015
Età: 31
Utente Junior
2007
OFFLINE
10/05/2015 18:07

Grazie
Ho tentato di capirci qualcosa, non c'è tipo un video tutorial che mi spieghi passo per passo cosa fare? (come per il tuo esempio)
Post: 63
Registrato il: 06/04/2013
Utente Junior
2010
OFFLINE
10/05/2015 18:37

Ciao
Ma nel link c'è spiegato passo passo come procedere e inoltre ci sono delle avvertenze che ti suggerisco di leggere.
Il lavoro è un po' complesso ma non più di tanto (oltre ad essere molto interessante).
Comunque ti allego il file già funzionante con la macro alla quale ho apportato qualche piccola variazione (l'ho scritto nel file stesso).

saluti
[Modificato da dodo47 10/05/2015 18:57]
Domenico
Win 10 - Excel 2016
Post: 4.306
Registrato il: 14/11/2004
Utente Master
Office 2019
ONLINE
10/05/2015 20:59

Somma
Ciao ecco un lavoro di Roberto Mensa, che credo faccia quello che chiedi.

ce anche il sito di roberto, per eventuali spiegazioni o altro.

Ciao By Sal [SM=x423051]

[Modificato da by sal 10/05/2015 21:00]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 64
Registrato il: 06/04/2013
Utente Junior
2010
OFFLINE
11/05/2015 10:53

Ciao
si, avevo visto il lavoro di Roberto, ma i tempi di attesa sono estremamente lunghi.
Quella macro invece elabora 4.000 soluzioni in circa 15 min., cosa non pensabile con l'applicazione delle formule.

saluti
Domenico
Win 10 - Excel 2016
Post: 1.843
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
11/05/2015 14:30

Buon pomeriggi, EBZZ93
ho riflettuto molto sull'opportunità di rispondere.
Il motivo, quella che propongo è la Soluzione di Dodo (un caro saluto, Domenico) leggermente modificata.

Non ho toccato alcuni Codici che, per questa soluzione, sono ridondanti, ho semplicemente cercato di visualizzare i valori in modo più fruibile; almeno questa era la mia intenzione.

La prassi è sempre la stessa:
-    nella Cella "B1" il numero delle soluzioni richieste
-    nella Cella "B2" il Valore da ricercare
-    Pulsante "Cerca" per avviare la Procedura

Spero possa esserti utile.



A disposizione.

Buon Lavoro e buona serata.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 3
Registrato il: 07/05/2015
Età: 31
Utente Junior
2007
OFFLINE
11/05/2015 21:52

Ringrazio tutti
Vedo con piacere che siete tutti molto disponibili, ma devo precisare che fino ad ora non trovo ancora il file "perfetto". Magari devo dire io qualcosa in più, io devo estrapolare da 100+ numeri (positivi e negativi) la combinazione che mi permetta di arrivare ad un risultato X. Sfortunatamente, nonostante i vostri sforzi, la cosa non risulta facile, poiché appena provo, il programma non risponde più... (blocco totale). Qualcuno riesce a risolvere anche questo problema?
Post: 4.308
Registrato il: 14/11/2004
Utente Master
Office 2019
ONLINE
12/05/2015 06:51

Risultato
Ciao Visto che parli di numeri sia positivi che negativi, allora Meglio un esempio, con il risultato voluto.

cosi si ha un range di valori da prendere in considerazione.

Ciao By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 4
Registrato il: 07/05/2015
Età: 31
Utente Junior
2007
OFFLINE
12/05/2015 08:59

Esempio
Come da richiesta, provvedo a caricare un file che vi permetta di chiarire meglio le mie necessità.
Post: 4.310
Registrato il: 14/11/2004
Utente Master
Office 2019
ONLINE
12/05/2015 11:22

Conteggio
Ciao Ebzz, a questo punto, i valori presi in considerazione per il raggiungimento dell'obbiettivo non dovranno più essere considerati per i successivi obbiettivi, oppure SI.

Ciao By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 5
Registrato il: 07/05/2015
Età: 31
Utente Junior
2007
OFFLINE
12/05/2015 13:49

Beh, non sarebbe stato un problema (in quanto li avrei eliminati se avessi avuto sicurezza) sennò, sarebbe un ulteriore passo avanti
Post: 79
Registrato il: 06/04/2013
Utente Junior
2010
OFFLINE
12/05/2015 17:20

Re: Ringrazio tutti
ebzz93, 11/05/2015 21:52:

....poiché appena provo, il programma non risponde più... (blocco totale).



Ciao
non è che si blocca, stai certo, (anche se leggi "non risponde") è che elabora. Io non so che prove tu abbia fatto e se hai seguito i suggerimenti del sito.
Ti trascrivo alcuni risultati (solo il numero delle combinazioni, non gli addendi):

Obiettivi - combinazioni trovate
96,83 0
96,85 0
98,65 1
181,65 1
231,85 2
379,99 0
506,46 0
564,76 0
734,09 0
734,09 0
1.019,30 3
1.375,09 11
1.737,59 36
1.771,81 35
1.771,82 31
3.233,07 1208
3.735,19 3022 - qui mi sono fermato (circa 10 min di attesa)
4.030,05
4.457,58
4.592,88
6.163,20

avevo iniziato con l'ultimo obiettivo, ma francamente ho stoppato la macro (era arrivata ad oltre 13.000 combinazioni).

Comunque se una volta trovata una combinazione elimini gli addendi che l'hanno composta, ovviamente i tempi si riducono, ma non capisco che senso abbia, o forse ho inteso male; Cioè se tu hai:
1-2-3-4 e cerchi 7, una volta trovato per esempio (3+4) ed eliminati, non hai più: (4+2+1)

cari saluti



Domenico
Win 10 - Excel 2016
Post: 4.311
Registrato il: 14/11/2004
Utente Master
Office 2019
ONLINE
12/05/2015 20:15

Conteggio
Ciao vorrei modificare la macro, in modo che mi cerchi il valore della cella B2 ma con uno scarto diciamo da definire 10% o altro.

cioè che mi seleziona i dati in modo che la sommatoria sia compresa nel range, cioè diciamo 1000 e 1100 appunto il 10% di 1000.

sto cercando di modificarla, ma non riesco a capire dove intervenire per avere un risultato del genere.

io continuo, se trovate una soluzione ben venga, mi serve per un mio progetto che ho fermo da tempo, proprio per questo problema.

questa sembra la macro giusta.

Ciao By Sal [SM=x423051]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 81
Registrato il: 06/04/2013
Utente Junior
2010
OFFLINE
13/05/2015 12:37

Ciao
Il target da trovare è alla riga:

TargetVal = Selection.Cells(2).Value della Sub startSearch.

Pertanto (se ho capito) basterebbe de-in/crementare tale valore della % voluta per ottenere il risultato voluto.

Come sicuramente avrai capito, il programma originale prevede la stampa delle "posizioni" degli addendi valutati e non la stampa dei numeri che compongono il totale cercato.

Con qualche modifica ho provveduto a non far stampare tale elenco ma solo i risultati.
Per farlo, alla fine della stessa sub ho inserito un loop sull'array Rslt() che è quello che contiene "gli indici" degli addendi.

Soluzioni trovate:
Ogni volta che nella Function RealEqual(A, B...ecc), RealEqual risulta True, ha trovato una soluzione.
RealEqual = Abs(A - B) <= Epsilon

Qui si potrebbe intervenire per metterlo a True qualora compreso in un range +/- %

Ogni singola soluzione viene riportata nel suddetto array Rlst()

Se nella Sub recursiveMatch inserisci uno stop dopo:

ReDim Preserve Rslt(UBound(Rslt) + 1)

in debug vedrai di volta in volta gli indici che compongono il risultato cercato all'interno del suddetto array.

saluti

Domenico
Win 10 - Excel 2016
Post: 4.313
Registrato il: 14/11/2004
Utente Master
Office 2019
ONLINE
13/05/2015 12:46

Conteggio
Ciao Domenico, si avevo visto che quella la sezione per gli addendi.

anche se in quella sezione compila le combinazioni, dopo aver compilato tutte le combinazioni le trasforma con gli addendi.

a questo punto facendo la somma degli addendi cerca il valore uguale all'obbiettivo.

in questa fase ho messo una specie di contatore, che mi aggiorna un valore prendendo alla fine il valore che si avvicina di più all'obbiettivo, logicamente ogni volta che aggiorna il valore, mi salva anche la combinazione che genera tale valore.

Comunque ci sto lavorando ancora.

Ciao By Sal
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 82
Registrato il: 06/04/2013
Utente Junior
2010
OFFLINE
13/05/2015 13:03

Sicuramente lo avrete letto nelle istruzioni del sito, comunque è raccomandato di ordinare i numeri nel seguente modo:
prima i negativi poi (in ordine decrescente i positivi).

Ho fatto delle prove ed in effetti i tempi variano notevolmente.

saluti
Domenico
Win 10 - Excel 2016
Post: 4.314
Registrato il: 14/11/2004
Utente Master
Office 2019
ONLINE
13/05/2015 15:47

Conteggio
Ciao Domenico si l'ho letto dell'ordinamento, tanto è vero che sto ampliando con una macro faccio l'ordinamento e con un altra facendo la scelta della combinazione preferita, elimino dall'elenco i dati della combinazione.

Ciao By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
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 15:07. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com