È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Risolutore e Dintorni

Ultimo Aggiornamento: 31/03/2023 13:28
Post: 505
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
28/03/2023 17:08

ciao a tutti

finalmente sono riuscito a impratichirmi un po' del Risolutore di Excel, ma mancano alcune cose.
da qualcuno che ne è pratico vorrei sapere se, dato un elenco di addendi, esista o si possa inventare un vincolo che imponga di fare una somma solo con un numero definito di addendi.
(Poi, peccato che le variabili del risolutore siano al massimo 200,se ho ben capito).
Inoltre se si facesse vivo Federico vorrei chiedergli una cosa specifica in relazione ad un suo file che ho trovato in altro forum, e che potrebbe forse sostituire il Risolutore.

Grazie

leo

LEO
https://t.me/LordBrum
Post: 3.426
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
28/03/2023 18:30

ciao
come si capisce quanti e quali addendi ??
(magari un esempio non guasta)

saluti



Domenico
Win 10 - Excel 2016
Post: 505
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
28/03/2023 18:45

ciao Dodo

quali addendi, sono tutti quelli della lista di un esempio che mi ci vuole qualche minuto per prepararla
il problema è quanti addendi, ed è proprio la mia vera domanda.
Cioè chiedo al risolutore di restituirmi solo il caso o i casi in cui la somma sia formata per esempio da 3 addendi, e questo immagino che debba essere un vincolo, ma nello specchietto dei vincoli pare non ci sia questa possibilità.
nell'esempio inviato c'è anche una formula che non mi funziona, ripresa da un video di Zuccalà.
(mumble...Temo di aver fatto una domanda impossibile, a meno che io non sia capace di stilare una serie di addendi molto particolare).


Leo

[Modificato da L2018 28/03/2023 18:51]

LEO
https://t.me/LordBrum
Post: 3.427
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
28/03/2023 19:49

ciao
ho capito....ci penso.

Tu intanto dai una letta a questo link dove viene citato un AddIn che potrebbe fare al tuo caso.

saluti




Domenico
Win 10 - Excel 2016
Post: 506
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
28/03/2023 20:54

ho guardato, SUMMATCH, era in fondo, è stato difficilissimo prelevarlo, non certo dal sito dichiarato, costa 40 $, allora installato in modo protetto, ma non ha trovato certe librerie che cercava sul suo sito.
Morale...nisba.
Comunque mi rendo conto che la mia richiesta è davvero eccessiva, forse devo approfondire molto, e da solo, il concetto. Magari ci arrivo.
Tutta questa storia però fa capo a una certa mia domanda ricorrente, cui ho già dato in ogni caso una brillante risposta.
La/le formule richiesta sarebbero state il top.
Peccato che io non sappia strutturare le formule come sapete fare voi.
Riguardo a Federico, le 2 formule da me trovate su ForumExcel mi sa che non sono sue ma di un certo PKrome, e sono:

{=INDICE($A$1:$A$180;CONFRONTA(MIN(ASS($E$1-($G$2+$A$1:$A$180)));ASS($E$1-($G$2+$A$1:$A$180));0))}

{=INDICE($A$1:$A$180;CONFRONTA(MIN(ASS($E$1-$A$1:$A$180));ASS($E$1-$A$1:$A$180);0))}

entrambe matriciali, e vorrebbero con 2 risultati avvicinarsi alla somma richiesta, dato un totale prestabilito.
ma non le so adattare per evitare l'approssimazione che dichiarano

Più guardo e più vedo, continuerò

Leo

Ora ho trovato una macro di tal Tushar-Metha, che mi ha incuriosito

FIND-SUM

ma da inesperto non so collocarla nell'Editor VBA: c'è un Option Explicit, 2 Function, 1 Sub
come la devo posizionare ?

Grazie dell'aiuto

Leo

Ore 21,31
fatto tutto
Bel Giocattolo, molto interessante, ma non era la mia aspettativa, oltretutto mi sembra che non dia risultati corretti.

Leo
[Modificato da L2018 28/03/2023 23:15]

LEO
https://t.me/LordBrum
Post: 3.428
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
29/03/2023 10:16

ciao
Leo....forse un po' meno di carne al fuoco e un po' più di chiarezza non guasterebbe.

Qual è la tua richiesta?

E' questa ??:
Leo:

Cioè chiedo al risolutore di restituirmi solo il caso o i casi in cui la somma sia formata per esempio da 3 addendi,



Se è così e vuoi usare il Solver, sai bene che lo stesso è gestibile tramite vba, pertanto nel codice si può inserire un controllo che conti quanti addendi siano stati utilizzati, ed un loop che effettui il ricalcolo.

Ma questo diventa complesso e poco agevole.

Ci sarebbe un'alternativa con un codice veramente ben fatto e complesso che calcola tutte le combinazioni che sommate restituiscono il valore cercato, ma pretende che gli addendi siano univoci, positivi ed interi. ed è fortemente consigliato di imporgli un numero x di risultati, non tutti.

Qualora ti interessasse te lo propongo.

saluti


[Modificato da dodo47 29/03/2023 10:21]
Domenico
Win 10 - Excel 2016
Post: 508
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
29/03/2023 10:54

Ciao
sì Dodo, la richiesta che hai quotato è ciò che cerco, alla lettera

Da notare che questa materia di nicchia l'ho già sviscerata e risolta
- con Power Basic da anni
- con una macro da me fatta riportandoci il codice Basic l'anno scorso
- con una tabella recente che dà risultati con CERCA.X qualche settimana fa
- in qualche modo anche col Risolutore, qualche giorno fa

e premesso che per me è un hobby, cercavo di battere il record della semplicità chiedendo se con poche semplici formule si possa raggiungere lo scopo imponendo (in più) al sistema di calcolo che la somma venga eseguita con un numero di addendi da me ogni volta stabilito.
Sto addirittura cercando di escogitare un metodo empirico per cui gli addendi siano molto particolari e sommabili solo in certi modi, ma questa è una specie di follia.
Come avrai letto ho trovato diversi giochini, mentre il SUMMATCH, di cui non so ancora cosa fa esattamente, non mi funziona finchè non riesco a installarlo a regola d'arte.

In definitiva, se tu hai un metodo che
"pretende che gli addendi siano univoci ed interi. ed è fortemente consigliato di imporgli un numero X di risultati, non tutti"
puoi benissimo postarlo, perchè al di là di tutto, mi interessa sempre qualsiasi cosa che unisca la matematica combinatoria ad EXCEL.
N.B. non devi creare tu il codice, non oserei mai chiedere una cosa simile, ma solo se già lo possiedi.

Un grazie sommatorio per la tua disponibilità

Leo

LEO
https://t.me/LordBrum
Post: 3.429
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
29/03/2023 11:06

ciao
come ti ho accennato il codice è abbastanza complesso nonchè veloce.

Già avevo apportato alcune modifiche per le mie necessità e non ho fatto altro che aggiungere una colonna (E) dove ti viene riportato il numero degli addendi.

Leggi con attenzione:
1) da B3 in giù riporta i tuoi numeri, non importa l'ordine, interessante siano interi, positivi ed univoci.
2) in B1 metti il numero di risultati voluti (NON mettere 0)
3) in B2 scrivi la somma da cercare

premi pulsante cerca.

saluti



[Modificato da dodo47 29/03/2023 11:07]
Domenico
Win 10 - Excel 2016
Post: 509
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
29/03/2023 11:17

bello, davvero molto interessante, funzionale e veloce.

qualcosa di simile l'avevo trovata ieri, il tuo pare più "pulito", sicuramente più preciso
vedo di usarlo e di cavarci qualcosa con addendi "addomesticati" (sì, un'idea che ho in mente)

Grazie Domenico

vedo che sei approdato anche tu a TUSHAR....!
vedo che hai tolto qualche riga inutile come il tempo ad ogni somma trovata, ecc
ora, se io ci riuscissi, il mio divertimento sarebbe fargli evidenziare TUTTE e SOLO le soluzioni che hanno un numero FISSO di addendi

Ciao
[Modificato da L2018 29/03/2023 11:40]

LEO
https://t.me/LordBrum
Post: 3.430
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
29/03/2023 12:13

ciao
ho modificato la Sub startSearchF() e uso la cella A15 per immettere il numero degli addendi.
NB: se tale cella è=0 proporrà tutte le soluzioni.

(nota: aggiunte due dim e modificata la sezione con commento= ' qui stampa su foglio risultati)

saluti

edit:

potrebbe segnalarti errori, ma tu fai proseguire la macro comunque.....se avrò tempo ci dò un'occhiata
[Modificato da dodo47 29/03/2023 12:20]
Domenico
Win 10 - Excel 2016
Post: 510
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
29/03/2023 12:43

ciao
Ottima e utile modifica
in 2 o 3 prove non ha dato errori
ci aggiorniamo, per altri 2 dettagli

Grazie

Leo

LEO
https://t.me/LordBrum
Post: 3.432
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
29/03/2023 17:34

ciao
era un problema del mio office...accidenti a loro e agli aggiornamenti....

saluti




Domenico
Win 10 - Excel 2016
Post: 511
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
29/03/2023 21:05

Ciao Domenico

non ho capito quale era il problema del tuo Office, cmq il mio EXCEL 2007 non è stato mai aggiornato
ho spaziato un po' col giocattolo, ripeto molto interessante
forse c'è qualche sbavatura ma soprattutto:
- perchè mette la lista degli addendi sempre in ordina discendente, e il termine più piccolo sempre al primo posto,cioè in B3 ?
forse è necessario in qualche modo al codice ?

Leo

LEO
https://t.me/LordBrum
Post: 3.434
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
30/03/2023 09:58

ciao Leo
Quel file ha circa 12 anni (e nasce in xls) e non me lo ricordo più nei dettagli
Ti ho fatto quella modifica perchè avevo contrassegnato la parte che stampava e ci ho messo una "pezza", nel senso che i calcoli e la stampa li fa comunque e se non corrisponde il numero addendi cancello quanto stampato....
questa la parte di codice
                    ' qui stampa su foglio risultati
                    Cells(r, c) = Mid(Cells(r, c), 1, Len(Cells(r, c)) - 2)
                    mAdd = UBound(Split(Cells(r, c), "+")) + 1
                    If mAdd = nAddendi Or nAddendi = 0 Then
                    Cells(r, c + 2) = UBound(Split(Cells(r, c), "+")) + 1
                        Cells(r, c + 1) = Gt
                        r = r + 1
                    Else
                        Cells(r, c) = "" ' <<<<<<<<<<<< qui cancello se non corrisponde al num di addendi
                    End If


segui in debug per capire i9l perchè del sort.....

saluti




[Modificato da dodo47 30/03/2023 13:25]
Domenico
Win 10 - Excel 2016
Post: 512
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
30/03/2023 10:46

acc...devo uscire
guardo più tardi

ciao
Leo

LEO
https://t.me/LordBrum
Post: 513
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
30/03/2023 15:39

Ciao
intanto ho trasformato il file da XLS antico a XLSM moderno per Excel 2007.
non avevo mai usato il Debug per seguire una macro, forse ci sono riuscito ma ho perso l'inseguimento.
Comunque sono incappato in qualcosa di tipo Sort, ho trovato la chiamata, e disattivato, sperando di aver semplicemente evitato l'ordinamento.
Evidentemente il Sort serve per trovare comodamente i doppioni, cosa che in molte mie situazioni non interessa, anzi è controproducente.
Rifatto il processo senza Sort pare che funzioni lo stesso, controllerò.
Vuol dire che attiverò e disattiverò l'ordinamento a seconda delle situazioni, perchè i dati di solito li controllo prima di inserirli e in certi casi i doppioni mi servono, l'unico che mi potrebbe servire sarebbe lo Zero, e come ripeto l'ordinamento non lo vorrei.
Il fatto è che qui, in questa sede, non è facile spiegare a che cosa di preciso mi servirebbe il Sommatore, certo dovrebbe tener conto proprio della posizione occupata dagli addendi, e in particolare dallo zero.
Quindi va bene così.
Invece, forse per la mia perenne ansia e fretta, non ho capito lo scopo dello snippet che hai postato: a che servirebbe ?
è da aggiungere, sostituire, o solo per illustrare qualcosa ?
Infine....ho trovato un altro giocattolo simile al tuo che si basa su una grossa UDF, pur esso interessante e preciso
Se per caso ti interessa dimmelo, te lo posto.

Leo
[Modificato da L2018 30/03/2023 17:15]

LEO
https://t.me/LordBrum
Post: 3.436
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
31/03/2023 11:36

ciao
se leggi con attenzione te lho scritto....

quella parte di codice postata corrisponde alle righe di istruzione che stampano sul foglio il risultato riga per riga.

Poichè tu avevi chiesto di avere solo un certo numero di addendi, io non faccio altro che intercettare la riga di stampa, contare quanti sono gli addendi e, se corrispondono lascio la riga che ha stampato, altrimenti la cancello.

saluti

tralascio ogni commento sul fatto che non hai mai usato il debug e le finestre immediata e delle variabili locali!!!!
(non te la prendere, ma è inammissibile per chi fa programmazione...)



[Modificato da dodo47 31/03/2023 11:37]
Domenico
Win 10 - Excel 2016
Post: 514
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
31/03/2023 12:31

Ciao Domenico,
ti prego, non infierire in mortuos
non sai in che contesto io mi muovo negli ultimi anni
Ogni mezza ora che trovo cerco di rifare mente locale alle cose della programmazione e non mi è facile, da qualche anno a questa parte, procedere con calma e dedizione in excel e programmazione.
una volta visto che una cosa funziona sono contento e passo appresso senza approfondire
E' vero che ho creato 2 o 3 macro, ma solo perchè il codice Power Basic facilmente si adattava, altrimenti preferisco usare le formule, fin dove possibile.
Andrò a rivedere il tutto della tua macro.
Approfitto di questo post per citare @Marius44, del quale in questi giorni, ho trovato fortunosamente un lavoro, poi aggiornato, che somma gli addendi, e mi piace citarlo:

https://www.forumexcel.it/forum/threads/modifica-codice-vba-di-un-lavoro-precedente-di-marius-44.34232/#post-272381

un lavoro davvero ben fatto, anche graficamente, complimenti.
gli farei però una domandina:
Perchè, fissata una somma, nei risultati si trovano tante combinazioni che non la uguagliano ?
oppure non ho visto bene ?

Intanto saluti a tutti

Leo

LEO
https://t.me/LordBrum
Post: 3.437
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
31/03/2023 13:21

perchè oltre al numero di addendi devi mettere una "x" in G9








Domenico
Win 10 - Excel 2016
Post: 515
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
ONLINE
31/03/2023 13:28

sarò rincitrullito ?

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 20:56. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com