| | Post: 2 | Registrato il: 06/02/2017
| Utente Junior | 2016 | | OFFLINE | |
|
02/11/2018 16:58 | |
Buongiorno a tutti, sono nuovo del forum , voglio approfittare del vostro buon cuore e chiedervi di aiutarmi.
Il mio problema è quello di riuscire a trovare in una colonna formata da un minimo di 10 numeri ad un max di 30 numeri, tutti interi, la somma che va da un minimo X ad un massimo Y. Si ottengono XX combinazioni e gli addendi che devono essere 6 sono XXX, poi vengono estratti solo quelli formati da 2 dispari e 4 pari, 3 dispari e 3 pari, 4 dispari e 2 pari. Io purtroppo sono molto limitato in informatica.
Vi ringrazio tutti...
Esempio: prendo i primi 10 numeri ma possono essere diversi
colonna A somma 36 combinazioni date 4
1 2 4 5 6 7 8
2 2 3 5 6 7 9
4 2 3 4 6 8 9
5 2 3 4 6 7 10
3
7
10
9
8
6
|
|
| | Post: 5.529 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
02/11/2018 17:35 | |
Ciao non so chi l'ha detto, ma un file d'esempio vale più di mille parole.
crea un file e metti il risultato voluto indicando quanto più possibile le varianti che potrebbero esserci.
Ciao By Sal
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
| | Post: 2 | Registrato il: 06/02/2017
| Utente Junior | 2016 | | OFFLINE | |
|
04/11/2018 17:04 | |
trovare addendi da una data somma e .... Grazie Sal, ci provo.
|
| | Post: 3 | Registrato il: 06/02/2017
| Utente Junior | 2016 | | OFFLINE | |
|
04/11/2018 17:23 | |
ecco il file spero sia chiaro, ho trovato questa prima parte di macro che trova gli addendi |
| | Post: 1.975 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
04/11/2018 18:28 | |
Ciao
Conosco discretamente quella routine della TM.
Il ciclo che devi analizzare è il seguente:
For J = 0 To UBound(Rslt)
arr0 = Split(Rslt(J), ",")
For I = 0 To UBound(arr0)
Cells(drow, dcol) = Cells(arr0(I) + 2, 2)
drow = drow + 1
Next
dcol = dcol + 1
drow = 1
Next
NOTA: nella variabile array Rslt vanno a finire tutte le combinazioni che generano la somma richiesta in B2.
Da tenere presente che tali combinazioni NON rappresentano i numeri che compongono la somma, BENSI' le celle della colonna B ( a partire dalla riga 3 - quindi 3=1) che contengono i numeri.
Per esempio, se Rslt(0) è pari a 3,5,7
le celle che compongono la somma si trovano in:
B5,B7 e B9.
Ciò premesso, per sapere da quanti "numeri" è composta la somma del risultato, e visto che nell' Rlst gli elementi sono separati da virgola (,), potresti contare tali virgole per ogni item dell'array e, se corrispondono a quanto cercato, stampare solo quelle.
Esempio: cerchi solo le combinazioni con 5 addendi:
For J = 0 To UBound(Rslt)
quanti = Len(Rslt(J)) - Len(Replace(Rslt(J), ",", "")) + 1 '<<<<<<<
If quanti = 5 Then '<<<<<<
arr0 = Split(Rslt(J), ",")
For I = 0 To UBound(arr0)
Cells(drow, dcol) = Cells(arr0(I) + 2, 2)
drow = drow + 1
Next
dcol = dcol + 1
drow = 1
End If '<<<<<<
Next
Saluti
[Modificato da dodo47 04/11/2018 18:55] Domenico
Win 10 - Excel 2016 |
| | Post: 4 | Registrato il: 06/02/2017
| Utente Junior | 2016 | | OFFLINE | |
|
04/11/2018 23:29 | |
Grazie Dodo, provo a inserire i tuoi consigli... |
| | Post: 5 | Registrato il: 06/02/2017
| Utente Junior | 2016 | | OFFLINE | |
|
04/11/2018 23:54 | |
Dodo, ho apportato le variazioni, ma a me servirebbe che estraesse le colonne già formate dal numero di addendi da me richiesti ( 4,5,6,) e non il riferimento alla colonna B e le relative celle, perché non mi da tutte le combinazioni ma evidenzia solo il riferimento. Non so se sono stato chiaro |
| | Post: 1.976 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
05/11/2018 09:57 | |
Quelli che vengono stampati sul foglio sono comunque gli addendi.
Io ti ho solo suggerito (cercando di spiegare il meccanismo dei riferimenti) come farti stampare le colonne con solo n addendi. Come vedi la somma delle singolo colonne è 33, come richiesto in B2.
Ti suggerisco di inserire la cancellazione delle colonne da D in poi ad inizio macro, in modo da eliminare i risultati dell ricerca precedente.
saluti [Modificato da dodo47 05/11/2018 10:21] Domenico
Win 10 - Excel 2016 |
| | Post: 6 | Registrato il: 06/02/2017
| Utente Junior | 2016 | | OFFLINE | |
|
05/11/2018 15:11 | |
Ok… grazie ci provo, perché non sono molto ferrato... |
| | Post: 1.977 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
05/11/2018 17:25 | |
Columns("D:XFD").ClearContents
ad inizio macro
Domenico
Win 10 - Excel 2016 |
| | Post: 7 | Registrato il: 06/02/2017
| Utente Junior | 2016 | | OFFLINE | |
|
05/11/2018 21:39 | |
Ancora grazie Dodo, ma la macro mi da questo errore che ti allego |
| | Post: 1.978 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
06/11/2018 10:01 | |
Abbi pazienza, quel codice non è una macro a se stante, ma è la parte di codice che devi sostituire nell'originale (Sub startSearch()
Comunque allego file: In C1 (cella gialla) metti quanti addendi vuoi e premi il pulsante.
saluti
[Modificato da dodo47 06/11/2018 10:37] Domenico
Win 10 - Excel 2016 |
| | Post: 8 | Registrato il: 06/02/2017
| Utente Junior | 2016 | | OFFLINE | |
|
06/11/2018 14:48 | |
Dodo sei un grande e ti ringrazio infinitamente, era quello che volevo, ma non ci sarei mai riuscito. |
|
|