Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Trovare gli addendi di una somma

2,650 views
Skip to first unread message

lave...@despammed.com

unread,
Mar 2, 2017, 10:15:00 AM3/2/17
to
Ho un dato importo e devo individuare tra una lista di altri importi gli addendi che, sommati tra di loro, lo compongono.
L'importo dato è 2.290.16
Questi sono gli importi tra cui trovare gli addendi:
a 748,80
b 1.664,00
c 2.147,60
d 239,20
e 1.554,80
f 1.040,00
g 374,40
h 758,16
i 1.148,16
j 104,00
k 1.040,00
l 1.144,00
m 1.160,12
n 1.438,84
o 728,00
p 1.148,16
q 1.707,16
r 1.352,00
s 1.008,80
t 1.008,80
u 807,30
w 1.404,00
Finora ho provato a sommare gli importi uno per uno, inserendo nella somma uno degli importi che portano 16 centesimi, ma la combinazione (che si può ottenere in almeno tre modi, sommando i+j+k oppure i+j+f oppure i+l) che si avvicina di più alla somma data è 2.292,16.
Esiste un modo semplice (cioè alla portata di un utente quasi digiuno di fogli di calcolo e più in generale di matematica) di individuare tra dati numeri gli addendi di una data somma?

Grazie!

Andrea.9

unread,
Mar 2, 2017, 11:04:36 AM3/2/17
to

Norman Jones

unread,
Mar 2, 2017, 11:14:50 AM3/2/17
to
> digiunodi fogli di calcolo e più in generale di matematica) di
> individuare tra dati numeri gli addendi di una data somma?

No, perché non è un compito banale!!

Detto questo, potrei postare un codice estremamente complesso che
potresti eseguire molto facilmente, premendo un semplice pulsante.





===
Regards,
Norman

lave...@despammed.com

unread,
Mar 5, 2017, 5:20:52 PM3/5/17
to
Il giorno giovedì 2 marzo 2017 17:04:36 UTC+1, Andrea.9 ha scritto:
> Guarda qui:
> https://sites.google.com/site/e90e50fx/home/recuperare-gli-addendi-che-costituiscono-la-somma

Grazie!

La pagina, molto interessante, propone tre soluzioni.
1) Soluzione VBA proposta da Harlan Grove in una discussione del 2005.
Ho provato a seguirla ma è davvero troppo complicata per me.

2) Usare il risolutore, che però "non offre flessibilità e sopratutto non restituisce un elenco di tutte le possibili combinazioni".
In ogni caso non sono riuscito a installare il risolutore su Excel 2016 per Mac.

3) Soluzione con sole formule excel, che però "può essere utilizzata con elenchi di valori ridotti (non più di 10-12 addendi)".
Per il mio calcolo non sarebbe andata bene, perché gli addendi erano di più; ma comunque anche questa mi è sembrata molto superiore alle mie capacità.

Tutto sommato continuerò a cercare gli addendi a mano.

(Per la cronaca, la somma era in effetti una di quelle individuate nel primo post; lo scarto di 2 era dovuto a una correzione sulla somma data, di cui non ero al corrente.)

lave...@despammed.com

unread,
Mar 5, 2017, 5:25:34 PM3/5/17
to
Il giorno giovedì 2 marzo 2017 17:14:50 UTC+1, Norman Jones ha scritto:
> No, perché non è un compito banale!!
>
> Detto questo, potrei postare un codice estremamente complesso che
> potresti eseguire molto facilmente, premendo un semplice pulsante.

Grazie, Norman.
Come ho scritto nella risposta ad Andrea.9, le soluzioni finora trovate sono al di sopra delle mie capacità.
A questo punto dubito che saprei premere un semplice pulsante per eseguire il tuo codice estremamente complesso, ma se vuoi postarlo sono curioso di scoprirlo...

Bruno Campanini

unread,
Mar 5, 2017, 8:16:29 PM3/5/17
to
lave...@despammed.com wrote on 05-03-17 :
La soluzione è quella di adottare un più accurato sistema di
registrazioni contabili che eviti il sorgere di qualsivoglia
ambiguità.

Non so se sia il tuo caso specifico, ma dover ricorrere a fantasiose
ricerche per individuare a posteriori quali fatture si siano pagate
con un assegno, andando a ricercare gli addendi che concorrono a
formarne il totale... è cosa che fra gli addetti ai lavori farebbe
sghignazzare assai.

Pensa a un caso come 40+30+30 o a una correzione "di cui non ero
al corrente".
Cose allucinanti per un contabile!

Bruno

Final Job

unread,
Mar 6, 2017, 7:31:11 AM3/6/17
to
Certo, però questa situazione si può creare anche quando si deve
risalire a quale conteggio possa aver effettuato un'altra struttura
(esempio un fornitore o una banca) ed in varie altre situazioni
indipendenti dalla qualità della gestione "interna" di un'attività. Un
qualche automatismo che affronta tale scenario potrebbe essere utile per
qualcuno.

casanmaner

unread,
Mar 6, 2017, 7:40:47 AM3/6/17
to
Il giorno lunedì 6 marzo 2017 02:16:29 UTC+1, Bruno Campanini ha scritto:

>
> La soluzione è quella di adottare un più accurato sistema di
> registrazioni contabili che eviti il sorgere di qualsivoglia
> ambiguità.
>
La soluzione è quella di tenere una prima nota contabile come dio comanda.
A volte basterebbe, con gli attuali sistemi di home banking, l'esportazionie in excel dei movimenti di c/c dove integrare nelle celle delle descrizioni eventuali dati non direttamente desumibili dalle descrizioni.
E poi una prima nota cassa (che in raltà dovrebbe avere ben pochi movimenti).
Per i clienti "educati" in tal modo non solo i tempi di lavorazione si riducono ma anche la precisione delle contabilizzazione aumenta in maniera esponenziale.
Ho avuto modo di vedere e prendere in mano contabilità tenute da "CNA" dove il tutto veniva buttato in pasto a "anticipi", "altre spese", "fornitori aperti da anni" e conti i più generici possibili perché la prima nota contabile non veniva richiesta.
Non ci si più affidare alla "ricerca di addendi più probabile" purtroppo.

Final Job

unread,
Mar 6, 2017, 4:09:11 PM3/6/17
to
Avete ragione ma vi dico che (in qualche modo analogamente all'esempio
della contabilità CNA appena citata) alcune aziende hanno dei sistemi di
censimento e conteggio di note di debito, note di credito, cauzioni,
fatture di vendita, annessi e connessi veramente cervellotici.

Più sono grandi e peggio è perchè partono dal concetto che sei tu a
doverti adeguare a loro.

Più eventi hai e peggio è perchè la platea dei numeri si ingrandisce.

Ora, sarà pure mancanza di perizia contabile però, quando capita, star
dietro ad una sfilza di cifre e dover trovare la quadra fa perdere
veramente tanto tempo.

Ciao
Ale

lave...@despammed.com

unread,
Mar 8, 2017, 5:23:27 AM3/8/17
to
Il giorno lunedì 6 marzo 2017 02:16:29 UTC+1, Bruno Campanini ha scritto:
> La soluzione è quella di adottare un più accurato sistema di
> registrazioni contabili che eviti il sorgere di qualsivoglia
> ambiguità.

Se dipendesse da me lo farei volentieri.
Purtroppo la situazione è questa: fatture emesse nel corso di due o tre anni e pagate quando e come piace al cliente (cioè senza seguire l'ordine cronologico delle fatture, e con pagamenti cumulativi), che non si cura di indicare nel bonifico il riferimento alle fatture pagate e per giunta si fa anche un'autoriduzione di 2 euro.

Poiché l'unica alternativa è smettere di lavorare o di fatturare, ci si adatta alle fantasiose ricerche e si trova conforto almeno nella consapevolezza di aver fatto sghignazzare qualche addetto ai lavori ;-)

E per tornare in tema con il ng, almeno sono state proposte delle soluzioni, troppo complicate per me ma che ad altri potranno forse essere utili.

popovic

unread,
Mar 8, 2017, 5:52:38 AM3/8/17
to


ha scritto nel messaggio
news:96732209-2b99-4569...@googlegroups.com...

<Se dipendesse da me lo farei volentieri.
<Purtroppo la situazione è questa:

cose che succedono quando si usa excel come fosse un database relazionale.
Se tu usassi tabelle referenziate, ogni fattura è legata al pagamento da un
ID (codice partita e codici scadenze) , per cui è impossibile fare casino.
Investite in un gestionale!
Oppure te lo fai in Access.

Bruno Campanini

unread,
Mar 8, 2017, 6:42:05 AM3/8/17
to
lave...@despammed.com explained on 08-03-17 :
È del tutto evidente che lo sghignazzare è riferito a chi
ha prodotto/introdotto il sistema e non a chi, obtorto collo,
è poi costretto a corregerne le malefatte.

Ciò premesso pregherei Norton di mettere online quel codice
di cui ha parlato, poi provvederei io ad applicarlo ai tuoi
bisogni (dovresti fornire un estratto esemplificativo del
tuo database).
Sempreché non voglia Norton stesso completar l'opera.

Bruno

Norman Jones

unread,
Mar 8, 2017, 7:17:04 AM3/8/17
to
Ciao Bruno!

On 08/03/2017 11.42, Bruno Campanini wrote:
> Ciò premesso pregherei Norton di mettere online quel codice
> di cui ha parlato, poi provvederei io ad applicarlo ai tuoi
> bisogni (dovresti fornire un estratto esemplificativo del
> tuo database).
> Sempreché non voglia Norton stesso completar l'opera.

Ecco il codice a cui mi riferivo:
'=========>>
Option Explicit

'--------->>
Sub findsums()
'This *REQUIRES* VBAProject references to
'Microsoft Scripting Runtime
'Microsoft VBScript Regular Expressions 1.0 or higher

Const TOL As Double = 0.000001 'modify as needed

Dim c As Variant
Dim j As Long, k As Long, n As Long, p As Boolean
Dim s As String, t As Double, u As Double
Dim v As Variant, x As Variant, y As Variant
Dim dc1 As New Dictionary, dc2 As New Dictionary
Dim dcn As Dictionary, dco As Dictionary
Dim re As New RegExp

re.Global = True
re.IgnoreCase = True

On Error Resume Next
Set x = Application.InputBox( _
Prompt:="Enter range of values:", _
Title:="findsums", _
Default:="", _
Type:=8 _
)

If x Is Nothing Then
Err.Clear
Exit Sub
End If

y = Application.InputBox( _
Prompt:="Enter target value:", _
Title:="findsums", _
Default:="", _
Type:=1 _
)

If VarType(y) = vbBoolean Then
Exit Sub
Else
t = y
End If
On Error GoTo 0

Set dco = dc1
Set dcn = dc2
Call recsoln

For Each y In x.Value2
If VarType(y) = vbDouble Then
If Abs(t - y) < TOL Then
recsoln "+" & Format(y)
ElseIf dco.Exists(y) Then
dco(y) = dco(y) + 1
ElseIf y < t - TOL Then
dco.Add Key:=y, Item:=1
c = CDec(c + 1)
Application.StatusBar = "[1] " & Format(c)
End If
End If
Next y

n = dco.Count
ReDim v(1 To n, 1 To 3)

For k = 1 To n
v(k, 1) = dco.Keys(k - 1)
v(k, 2) = dco.Items(k - 1)
Next k

qsortd v, 1, n

For k = n To 1 Step -1
v(k, 3) = v(k, 1) * v(k, 2) + v(IIf(k = n, n, k + 1), 3)
If v(k, 3) > t Then dcn.Add Key:="+" & _
Format(v(k, 1)), Item:=v(k, 1)
Next k

On Error GoTo CleanUp
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

For k = 2 To n
dco.RemoveAll
swapo dco, dcn

For Each y In dco.Keys
p = False

For j = 1 To n
If v(j, 3) < t - dco(y) - TOL Then Exit For
x = v(j, 1)
s = "+" & Format(x)
If Right(y, Len(s)) = s Then p = True
If p Then
re.Pattern = "\" & s & "(?=(\+|$))"
If re.Execute(y).Count < v(j, 2) Then
u = dco(y) + x
If Abs(t - u) < TOL Then
recsoln y & s
ElseIf u < t - TOL Then
dcn.Add Key:=y & s, Item:=u
c = CDec(c + 1)
Application.StatusBar = "[" & Format(k) & "] " & _
Format(c)
End If
End If
End If
Next j
Next y
If dcn.Count = 0 Then Exit For
Next k

If (recsoln() = 0) Then _
MsgBox Prompt:="all combinations exhausted", _
Title:="No Solution"

CleanUp:
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.StatusBar = False
End Sub

'--------->>
Private Function recsoln(Optional s As String)
Const OUTPUTWSN As String = "findsums solutions" 'modify to taste

Static r As Range
Dim ws As Worksheet

If s = "" And r Is Nothing Then
On Error Resume Next
Set ws = ActiveWorkbook.Worksheets(OUTPUTWSN)
If ws Is Nothing Then
Err.Clear
Application.ScreenUpdating = False
Set ws = ActiveSheet
Set r = Worksheets.Add.Range("A1")
r.Parent.Name = OUTPUTWSN
ws.Activate
Application.ScreenUpdating = False
Else
ws.Cells.Clear
Set r = ws.Range("A1")
End If
recsoln = 0
ElseIf s = "" Then
recsoln = r.Row - 1
Set r = Nothing
Else
r.Value = s
Set r = r.Offset(1, 0)
recsoln = r.Row - 1
End If
End Function

'--------->>
Private Sub qsortd(v As Variant, lft As Long, rgt As Long)
'ad hoc quicksort subroutine
'translated from Aho, Weinberger & Kernighan,
'"The Awk Programming Language", page 161

Dim j As Long, pvt As Long

If (lft >= rgt) Then Exit Sub
swap2 v, lft, lft + Int((rgt - lft + 1) * Rnd)
pvt = lft
For j = lft + 1 To rgt
If v(j, 1) > v(lft, 1) Then
pvt = pvt + 1
swap2 v, pvt, j
End If
Next j

swap2 v, lft, pvt
qsortd v, lft, pvt - 1
qsortd v, pvt + 1, rgt
End Sub

'--------->>
Private Sub swap2(v As Variant, i As Long, j As Long)
'modified version of the swap procedure from
'translated from Aho, Weinberger & Kernighan,
'"The Awk Programming Language", page 161

Dim t As Variant, k As Long

For k = LBound(v, 2) To UBound(v, 2)
t = v(i, k)
v(i, k) = v(j, k)
v(j, k) = t
Next k
End Sub

'--------->>
Private Sub swapo(a As Object, b As Object)
Dim t As Object

Set t = a
Set a = b
Set b = t
End Sub
'<<=========




===
Regards,
Norman

lave...@despammed.com

unread,
Mar 8, 2017, 10:40:15 AM3/8/17
to
Il giorno mercoledì 8 marzo 2017 12:42:05 UTC+1, Bruno Campanini ha scritto:
> È del tutto evidente che lo sghignazzare è riferito a chi
> ha prodotto/introdotto il sistema e non a chi, obtorto collo,
> è poi costretto a corregerne le malefatte.

Non mi ero offeso, eh!

>
> Ciò premesso pregherei Norton di mettere online quel codice
> di cui ha parlato, poi provvederei io ad applicarlo ai tuoi
> bisogni (dovresti fornire un estratto esemplificativo del
> tuo database).

Grazie.
Il mio database in realtà non esiste. Ho creato, proprio per cercare di risolvere il problema che ho esposto nel ng, un foglio di lavoro excel in cui sono riportate le fatture con numero e data di emissione, cliente, importo e data di pagamento (colonna in gran parte vuota).
Approfittando della tua disponibilità - e di quella di Norman Jones - posso inviarti il foglio di excel per email, o caricarlo su dropbox.
Ho visto il messaggio con il codice di Norman e non ho idea di come usarlo.

lave...@despammed.com

unread,
Mar 8, 2017, 10:47:08 AM3/8/17
to
Il giorno mercoledì 8 marzo 2017 11:52:38 UTC+1, popovic ha scritto:
>
> <Se dipendesse da me lo farei volentieri.
> <Purtroppo la situazione è questa:
>
> cose che succedono quando si usa excel come fosse un database relazionale.
> Se tu usassi tabelle referenziate, ogni fattura è legata al pagamento da un
> ID (codice partita e codici scadenze) , per cui è impossibile fare casino.
> Investite in un gestionale!
> Oppure te lo fai in Access.

Forse stiamo andando fuori tema, e spero che non sembri una risposta polemica, ma non riesco a immaginare in che modo tabelle referenziate, un gestionale, Access potrebbero soccorrere chi lavora per un cliente che invia pagamenti praticamente a caso e senza alcun riferimento.
Ho creato il foglio di Excel al solo scopo di cercare una soluzione al problema che ho esposto nel primo messaggio di questo filone.

Bruno Campanini

unread,
Mar 8, 2017, 10:53:23 AM3/8/17
to
It happens that lave...@despammed.com formulated :

> Il mio database in realtà non esiste. Ho creato, proprio per cercare di
> risolvere il problema che ho esposto nel ng, un foglio di lavoro excel in cui
> sono riportate le fatture con numero e data di emissione, cliente, importo e
> data di pagamento (colonna in gran parte vuota). Approfittando della tua
> disponibilità - e di quella di Norman Jones - posso inviarti il foglio di
> excel per email, o caricarlo su dropbox. Ho visto il messaggio con il codice
> di Norman e non ho idea di come usarlo.

Metti online il link, chissà che Norman, che già conosce il programma
che ha inviato, non colga l'occasione per adattarlo più
velocemente al caso tuo.

Bruno

casanmaner

unread,
Mar 8, 2017, 11:19:28 AM3/8/17
to
Il giorno mercoledì 8 marzo 2017 11:23:27 UTC+1, lave...@despammed.com ha scritto:

> Se dipendesse da me lo farei volentieri.
> Purtroppo la situazione è questa: fatture emesse nel corso di due o tre anni e pagate quando e come piace al cliente (cioè senza seguire l'ordine cronologico delle fatture, e con pagamenti cumulativi), che non si cura di indicare nel bonifico il riferimento alle fatture pagate e per giunta si fa anche un'autoriduzione di 2 euro.

In questi casi "patologici" l'unica soluzione possibile è utilizzare un metodo di pagamento "FIFO".
Cioè dai per pagate le prime fatture ricevute fino all'importo della provvista che il cliente ha dato.
Ovvio che richieda comunque un lavoro "extracontabile".
Ma se il cliente ti fa un assegno di 1000 e tu hai 3 fatture da 750 dai per pagata interamente la prima, dai per pagata la seconda per 250 e dai per non pagata la terza (in ordine di emissione).
Per le autoriduzioni, se sai che la cosa è sistematica allora assegni una prima riduzione alla prima fattura, poi se c'è l'incasso di una seconda alla seconda e via dicendo.
Credo che per te sia il modo più immediato senza "rincorrere" gli eventuali addendi (che potrebbero nemmeno esserci).

lave...@despammed.com

unread,
Mar 8, 2017, 11:31:08 AM3/8/17
to
Il giorno mercoledì 8 marzo 2017 16:53:23 UTC+1, Bruno Campanini ha scritto:
>
> Metti online il link

Eccolo:
https://www.dropbox.com/s/zc8lixo76ythwqo/Somma_Addendi.xlsx?dl=0

Grazie!

Bruno Campanini

unread,
Mar 8, 2017, 12:37:54 PM3/8/17
to
lave...@despammed.com formulated on Wednesday :
E io con quel file cosa dovrei farci?
Io vedo solo una serie di valori che immagino essere i totali
delle fatture... e i pagamenti?

Bruno

Norman Jones

unread,
Mar 8, 2017, 6:40:08 PM3/8/17
to

Ciao laverdure,
Se vorresti fa clic sul mio profilo:
https://answers.microsoft.com/it-it/profile/048befde-f0d3-4182-8e20-7791d92e9413#user-profile-tab-activity
troverai un indirizzo decifrabile.




===
Regards,
Norman

Norman Jones

unread,
Mar 8, 2017, 7:19:52 PM3/8/17
to
Ciao Popovic ("sono sempre Fano"),

On 08/03/2017 10.53, popovic wrote:
> Se tu usassi tabelle referenziate, ogni fattura è legata al pagamento da
> un ID (codice partita e codici scadenze) , per cui è impossibile fare
> casino.

Lo prometti?



===
Regards,
Norman

lave...@despammed.com

unread,
Mar 9, 2017, 2:09:08 AM3/9/17
to
Il giorno mercoledì 8 marzo 2017 18:37:54 UTC+1, Bruno Campanini ha scritto:
> E io con quel file cosa dovrei farci?

Trovare gli addendi che portano alla somma di 2.290,16 ;-)

> Io vedo solo una serie di valori che immagino essere i totali
> delle fatture... e i pagamenti?

L'unico pagamento è quello di 2.290,16, ahimè.

Norman Jones

unread,
Mar 9, 2017, 5:04:29 AM3/9/17
to
Ciao Bruno, ciao Laverdure,

Avendo ricevuto una email e un file di esempio da laverdure, ho
modificati il codice per facilitare il suo uso nell'ambiente italiano e
e aggiungere istruzioni per l'inserimento dei riferimenti necessari a
librerie esterne:

• Alt+F11 per aprire l'editor di VBA
• Alt+IM per inserire un nuovo modulo di codice
• Nel nuovo modulo vuoto, incolla il seguente codice:
'=========>>
Option Explicit

Const OUTPUTWSN As String = "Soluzioni Trovati" '\\modifica a piacere

'--------->>
Sub FindSums()
'==============
'\\ Questo codice RICHIEDE che siano stati aggiunti
'\\ rifertimenti alle due library:
'\\Microsoft Scripting Runtime
'\\ Microsoft VBScript Regular Expressions 1.0 o versione più recente

'\\ Alt + F11
'\\ Strumenti
'\\ Riferimenti
'==============
Const TOL As Double = 0.000001 'modify as needed

Dim c As Variant
Dim j As Long, k As Long, n As Long, p As Boolean
Dim s As String, t As Double, u As Double
Dim v As Variant, x As Variant, y As Variant
Dim dc1 As New Dictionary, dc2 As New Dictionary
Dim dcn As Dictionary, dco As Dictionary
Dim re As New RegExp

re.Global = True
re.IgnoreCase = True

On Error Resume Next
Set x = Application.InputBox( _
Prompt:="Seleziona l'intervallo degli addendi:", _
Title:="TrivaSomme", _
Default:="", _
Type:=8 _
)

If x Is Nothing Then
Err.Clear
Exit Sub
End If

y = Application.InputBox( _
Prompt:="Immetti il totale da cercare:", _
Application.StatusBar = _
"[" & Format(k) & "] " & Format(c)
End If
End If
End If
Next j
Next y
If dcn.Count = 0 Then Exit For
Next k

If (recsoln() = 0) Then
MsgBox Prompt:="Esaurite tutte le combinazioni", _
Title:="Niente Soluzione!"
Else
MsgBox Prompt:="Si trova le soluzioni sul foglio: " & OUTPUTWSN, _
Buttons:=vbInformation, _
Title:="SOLUZIONI"
End If

CleanUp:
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.StatusBar = False
End Sub

'--------->>
Private Function recsoln(Optional s As String)
• Alt+Q per chiudere l'editor di VBA e tornare a Excel
• Salva il file con l’estensione xlsm
• Alt+F8 per aprire la finestra di gestione delle macro
• Seleziona FindSums | Esegui






===
Regards,
Norman


Norman Jones

unread,
Mar 9, 2017, 5:16:37 AM3/9/17
to
On 09/03/2017 10.04, Norman Jones wrote:
> ho modificati
modificato





===
Regards,
Norman

Bruno Campanini

unread,
Mar 9, 2017, 6:03:38 AM3/9/17
to
lave...@despammed.com brought next idea :
Non occorrono certo programmi esotici per asserire che non esistono
addendi che diano la somma esatta di 2 290.16=

Bruno

Bruno Campanini

unread,
Mar 9, 2017, 8:15:46 AM3/9/17
to
Norman Jones laid this down on his screen :
Popovic ha illustrato il concetto molto sinteticamente.
Infatti data la correlazione fra le tabelle (presupposto necessario)
occorre poi un po' di codice per poter assegnare ciascun
pagamento a una o più fatture.

Nel gergo contabile italiano il procedimento è normalmente
denominato "Metodo delle partite separate".

Bruno

Norman Jones

unread,
Mar 9, 2017, 6:29:10 PM3/9/17
to
Ciao Bruno, ciao Lavedure.

In un successivo scambio di e-mail, è diventato chiaro che Lavedure
aveva trascurato di aggiungere i riferimenti alle due library Microsoft
Scripting Runtime e Microsoft VBScript Regular Expressions. Tuttavia,
molto più problematico credo sia il fatto che Lavedure ha rivelato che
utilizza una versione di Excel per Mac. Purtroppo, a prescindere poi
dal fatto che io non sono totalmente a conoscenza del Mac, queste
library non sono disponibili nell'ambiente Mac e, senza i riferimenti,
il codice suggerito da me non può funzionare. ((:-




===
Regards,
Norman


On 09/03/2017 10.04, Norman Jones wrote:
--



===
Regards,
Norman

lave...@despammed.com

unread,
Mar 9, 2017, 6:35:08 PM3/9/17
to
Il giorno venerdì 10 marzo 2017 00:29:10 UTC+1, Norman Jones ha scritto:
> Ciao Bruno, ciao Lavedure.
>
> In un successivo scambio di e-mail, è diventato chiaro che Lavedure
> aveva trascurato di aggiungere i riferimenti alle due library Microsoft
> Scripting Runtime e Microsoft VBScript Regular Expressions. Tuttavia,
> molto più problematico credo sia il fatto che Lavedure ha rivelato che
> utilizza una versione di Excel per Mac. Purtroppo, a prescindere poi
> dal fatto che io non sono totalmente a conoscenza del Mac, queste
> library non sono disponibili nell'ambiente Mac e, senza i riferimenti,
> il codice suggerito da me non può funzionare. ((:-

Che dire, mi spiace.
Se avessi scritto sin dall'inizio che usavo Excel per Mac non avreste perso tanto tempo.
Spero comunque che il codice offerto da Norman sarà utile a qualcuno con la stessa esigenza e un computer Windows!

Bruno Campanini

unread,
Mar 9, 2017, 8:29:12 PM3/9/17
to
Norman Jones formulated the question :
> Ciao Bruno, ciao Lavedure.
>
> In un successivo scambio di e-mail, è diventato chiaro che Lavedure aveva
> trascurato di aggiungere i riferimenti alle due library Microsoft Scripting
> Runtime e Microsoft VBScript Regular Expressions. Tuttavia, molto più
> problematico credo sia il fatto che Lavedure ha rivelato che utilizza una
> versione di Excel per Mac. Purtroppo, a prescindere poi dal fatto che io non
> sono totalmente a conoscenza del Mac, queste library non sono disponibili
> nell'ambiente Mac e, senza i riferimenti, il codice suggerito da me non può
> funzionare. ((:-

Quello stesso tuo codice l'ho poi reperito nei miei confusi archivi
che non mi perito mai di ordinare decentemente.
In un file vecchio di oltre 10 anni!
L'ho provato col sample ivi integrato e funziona.
L'ha scritto tu quel codice?

Bruno

Norman Jones

unread,
Mar 9, 2017, 9:13:41 PM3/9/17
to
Ciao Lavedure,
Non ho nessun modo per provare il seguente codice nel ambiente Mac ma
funziona senza la necessità di riferimenti esterni e ti chiederei di
provarlo.

• Alt+F11 per aprire l'editor di VBA
• Alt+IM per inserire un nuovo modulo di codice
• Nel nuovo modulo vuoto, incolla il seguente codice:

'===========>>
Option Explicit
'------------------------------
'\\ Code by Greg Wilson:
'\\ http://http://goo.gl/CTna2X
''-----------------------------

Dim Abort As Boolean

'----------->>
Public Sub FindCombins()
Dim a As Long, b As Long, c As Long
Dim d As Long, e As Long, f As Long
Dim g As Long, h As Long, i As Long
Dim j As Long, x As Long, y As Long
Dim s1 As Long, s2 As Long, s3 As Long
Dim s4 As Long, s5 As Long, s6 As Long
Dim s7 As Long, s8 As Long, s9 As Long
Dim s10 As Long, col As Long
Dim Resp As Integer, Style As Integer
Dim v As Single, v0 As Single, Ar() As Double
Dim cell As Range
Dim txt As String, Title As String
Dim t1 As Date, t2 As Date

Title = "Find Combinations"
s1 = 0: s2 = 0: s3 = 0: s4 = 0: s5 = 0
s6 = 0: s7 = 0: s8 = 0: s9 = 0: s10 = 0
On Error GoTo SkipToHere
If Selection.Count < 9 Then
txt = "Errore: un minimo di nove valori devono essere " _
& " selezionat!!! "
MsgBox txt, vbCritical, Title
Exit Sub
End If
txt = "Questa macro troverà le combinazioni della corrente" _
& "- selezione di celle che che hanno un totale uguale " _
& "al valore specificato." _
& vbCr & vbCr _
& "- È supportato un massimo di 10 elementi in combinazione" _
& vbCr _
& "- Un minimo di 9 valori devono essere selezionato" _
& vbCr _
& "- La scelta può essere non contigua" _
& vbCr _
& "- Solo valori numerici devono essere selezionati" _
& vbCr _
& "- Valori duplicati dovrebbero essere rimossi dalla " _
& "selezione" _
& "per evitare risultato duplicati"

Style = vbInformation + vbOKCancel
Resp = MsgBox(txt, Style, Title)
If Resp = vbCancel Then Exit Sub

col = ActiveCell.Column
ReDim Ar(0 To Selection.Count)
Ar(0) = 0
i = 1
For Each cell In Selection.Cells
Ar(i) = cell.Value
i = i + 1
Next
Ar = SortArray(Ar)

Call FindDupes(Ar)
If Abort Then Exit Sub

txt = vbCr & vbCr & "Specify target value:"
With Application
v0 = .InputBox(txt, Title)
If v0 = 0 Then Exit Sub
.ScreenUpdating = False
End With
t1 = Now
ActiveCell.EntireColumn.Insert
x = 0
y = UBound(Ar)
'xxxxxxxxxxxx Start Loop xxxxxxxxxx
For a = s1 To y - 9: For b = a + s2 To y - 8
For c = b + s3 To y - 7: For d = c + s4 To y - 6
For e = d + s5 To y - 5: For f = e + s6 To y - 4
For g = f + s7 To y - 3
For h = g + s8 To y - 2
For i = h + s9 To y - 1
For j = i + s10 To y
v = Ar(a) + Ar(b) + Ar(c) _
+ Ar(d) + Ar(e) _
+ Ar(f) + Ar(g) _
+ Ar(h) + Ar(i) + Ar(j)
If v = v0 Then
x = x + 1
txt = GetText( _
Ar(a), Ar(b), Ar(c), _
Ar(d), Ar(e), _
Ar(f), Ar(g), _
Ar(h), Ar(i), _
Ar(j))
Cells(x, col) = txt
txt = ""
ElseIf v > v0 Then
Exit For
End If
s10 = 1
Next:
s9 = 1
Next:
s8 = 1
Next
s7 = 1
Next
s6 = 1
Next
s5 = 1
Next:
s4 = 1
Next
s3 = 1
Next
s2 = 1
Next
s1 = 1
Next
'xxxxxxxxxxxx End Loop xxxxxxxxxxxxxx
SkipToHere:
Columns(col).EntireColumn.AutoFit
t2 = Now
If x > 2 ^ 20 Then
txt = "Too many combinations found. Max capacity 2^20. "
Style = vbExclamation
ElseIf x = 0 Then
Columns(col).Delete
If Err.Number = 0 Then
txt = "Non sono state trovate combinazioni pari a " _
& v0 & " "
Else
txt = "Un errore ha causato la macro di fallire. " _
& vbCr & vbCr _
& "- Assicurarsi che la selezione non include " _
& "dei valori " _
& "non numerici" _
& vbCr _
& "- Assicurarsi che un minimo di sette valori " _
& "sono " _
& "stati selezionati" _
& vbCr & _
"- Assicurarsi che i valori numerici non sono " _
& "preceduti da apostrofi"
End If
Style = vbExclamation
Else
txt = "Combinazioni trovate eguagliando " _
& v0 & " = " & x & " " _
& vbCr & vbCr & _
"Hours = " & Hour(t2 - t1) & vbCr & _
"Minutes = " & Minute(t2 - t1) & vbCr & _
"Seconds = " & Second(t2 - t1)
Style = vbOKOnly
End If
ActiveCell.Select
Application.ScreenUpdating = True
MsgBox txt, Style, Title
End Sub

'----------->>
Private Function GetText(a As Double, b As Double, c As Double, _
d As Double, e As Double, f As Double, _
g As Double, h As Double, _
i As Double, j As Double) As String
Dim Ar As Variant
Dim x As Integer
Dim t As String
Ar = Array(a, b, c, d, e, f, g, h, i, j)
For x = 9 To 0 Step -1
If Ar(x) = 0 Then Exit For
t = " + " & Ar(x) & t
Next
GetText = Right(t, Len(t) - 3)
End Function

'----------->>
Private Function SortArray(Ar As Variant) As Variant
Dim i As Integer, j As Integer
Dim Temp As Double
For i = LBound(Ar) To UBound(Ar) - 1
For j = (i + 1) To UBound(Ar)
If Ar(i) > Ar(j) And Ar(i) <> 0 Then
Temp = Ar(j)
Ar(j) = Ar(i)
Ar(i) = Temp
End If
Next j
Next i
SortArray = Ar
End Function

'----------->>
Private Sub FindDupes(Ar As Variant)
Dim i As Integer, ii As Integer, cnt As Integer
Dim val As Double
Dim ar2() As Variant
Dim ar3() As Variant
Dim txt As String, txt2 As String
Dim Style As Integer
Dim Resp As Integer
Dim Dupes As Boolean

Dupes = False
Abort = False
ii = 0
For i = LBound(Ar) + 1 To UBound(Ar)
If Ar(i) = Ar(i - 1) Then
Dupes = True
cnt = 0
val = Ar(i)
ReDim Preserve ar2(ii)
ReDim Preserve ar3(ii)
ar2(ii) = Ar(i)
Do Until Ar(i) <> Ar(i - 1)
i = i + 1
cnt = cnt + 1
If i = UBound(Ar) Then Exit Do
Loop
ar3(ii) = cnt + 1
ii = ii + 1
End If
Next
If Not Dupes Then Exit Sub
For i = LBound(ar2) To UBound(ar2)
txt2 = txt2 & "Value: " & ar2(i) _
& " Repetitions: " & ar3(i) & vbCr
Next
txt = "Duplicate values found in selection:" _
& vbCr & txt2 & vbCr & vbCr _
& "La presenza di duplicati rallenterà le prestazioni " _
& "e non serve a nulla." & _
vbCr & vbCr & "Continue ?"

Resp = MsgBox(txt, vbOKCancel + vbExclamation, _
"Find Combinations")
If Resp = vbCancel Then Abort = True
End Sub
'<<===========

• Alt+Q per chiudere l'editor di VBA e tornare a Excel
• Salva il file con l’estensione xlsm
• Alt+F8 per aprire la finestra di gestione delle macro
• Seleziona FindCombins | Esegui

Ti ho inviato il tuo file aggiornato con questo codice,

Per eseguire il codice, seleziona nove valori e premi il pulsante. Se i
valori da sommare fossero meno di nove, potresti inserisci altri valori,
ognuno superiore al totale di interesse, altrove e quindi completare la
selezione sfruttando questi altri valori. Eventualmente, forse potrei
modificare il codice per evitare che sia necessario selezionare nove
valori. Comunque. precediamo un passo alla volta - si deve prima
verificare il codice nel tuo ambiente Mac!





===
Regards,
Norman

Norman Jones

unread,
Mar 9, 2017, 9:20:25 PM3/9/17
to
Ciao Bruno,
Bene! Ha sempre anche funzionato per me.

> L'ha scritto tu quel codice?
No. Questo è un codice, *classico* e molto citato, di Harlan Grove.





===
Regards,
Norman

lave...@despammed.com

unread,
Mar 10, 2017, 12:36:23 PM3/10/17
to
Il giorno venerdì 10 marzo 2017 03:13:41 UTC+1, Norman Jones ha scritto:

> Non ho nessun modo per provare il seguente codice nel ambiente Mac ma
> funziona senza la necessità di riferimenti esterni e ti chiederei di
> provarlo.
(SNIP)
> Ti ho inviato il tuo file aggiornato con questo codice,
>
> Per eseguire il codice, seleziona nove valori e premi il pulsante. Se i
> valori da sommare fossero meno di nove, potresti inserisci altri valori,
> ognuno superiore al totale di interesse, altrove e quindi completare la
> selezione sfruttando questi altri valori. Eventualmente, forse potrei
> modificare il codice per evitare che sia necessario selezionare nove
> valori. Comunque. precediamo un passo alla volta - si deve prima
> verificare il codice nel tuo ambiente Mac!

Ho aperto il file che mi hai inviato (grazie!), selezionato 9 celle contenenti importi (tra cui le 3 celle che già sapevo essere quelle degli addendi), poi premuto il pulsante Trova Somme, inserito nella finestrella la somma (2290,16) di cui trovare gli addendi e premuto OK.
Il risultato è "Non sono state trovate combinazioni pari a 2290,16."
Ho riprovato selezionando altre 9 celle (tra cui le solite 3). Stesso risultato.
Ho riprovato scrivendo l'importo come 2.290,16 e come 2,290.16. Stesso risultato.
Ho provato con altre 9 celle e, per rendere l'esperimento più semplice, ho selezionato 9 celle tra cui una il cui valore è 7000 e ho inserito nel campo di ricerca della finestrella il valore 7000 da cercare, e il risultato è stato "Non sono state trovate combinazioni pari a 7000."
Mi sono arreso...

Norman Jones

unread,
Mar 10, 2017, 1:24:11 PM3/10/17
to
Ciao Lavedure,
Ho appena aperto lo stesso file, aprendolo direttamente dalla mia email
a te; ho selezionate le celle D16:D24, e ho premuto il pulsante per
avviare la macro. Quasi instantaneamente, ho visto il messaggio che due
risultati sono stati trovati e i due risultati sono stati immessi nelle
prime due celle di una nuova colonna, insertita davanti alla colonna E.

Tuttavia, sfortunatamente, io non posso provare il codice nel tuo
ambiente perchè non possiedo un Mac. Sono comunque spiacevolmente
sorpreso che pare che il codice non funzioni per te.

Purtroppo, credo pertanto che io non possa aiutarti ulteriormente con
questo problema. ((:-






===
Regards,
Norman

Bruno Campanini

unread,
Mar 12, 2017, 7:11:59 AM3/12/17
to
lave...@despammed.com expressed precisely :
1 - Nel file che hai inviato a me non esistono addendi che diano per
totale 2290.16, come ti ho già detto.
Esistono invece in quello che tu stai citando ora?
2 - il valore da immettere è 2290.16
Il VBA interpreterebbe erroneamente ogni altro formato.

Bruno

Norman Jones

unread,
Mar 12, 2017, 8:16:26 AM3/12/17
to
Ciao Buno,

On 12/03/2017 11.11, Bruno Campanini wrote in response to Lavedure:

> 1 - Nel file che hai inviato a me non esistono addendi che diano per
> totale 2290.16, come ti ho già detto.
> Esistono invece in quello che tu stai citando ora?

Nel file che Lavedure mi ha inviato, ci sono i seguenti addendi:
250,00
748,80
1,664,00
2,147,60
3,325,00
239,20
1,554,80
228,80
7,000,00
1,040,00
374,40
758,16
1,148,16
104,00
1,040,00
1,144,00
1,160,12
1,438,84
728,00
1,148,16
1,707,16
1,352,00
1,008,80
1,008,80
807,30
1,404,00

inoltre, nella sua email a me , Lavedure aveva indicato un valore di
2292,16!


> 2 - il valore da immettere è 2290.16
> Il VBA interpreterebbe erroneamente ogni altro formato.

Dato l'operazione del codice, il valore viene immessa (dall'interfaccia
Excel) nel formato locale e quindi viene interetata da VBA. Pertanto,
con settaggi italiani, il totale verrebbe inmmessa come 2292,16 (con la
virgola); per contrapposizione, tu o io immetterebbero il totale, con il
punto, come 2292.16.




===
Regards,
Norman

Norman Jones

unread,
Mar 12, 2017, 8:21:07 AM3/12/17
to
Ciao Lavedure,

On 10/03/2017 17.36, lave...@despammed.com wrote:
Grazie alla risposta vicina di Bruno, credo tu debba riprovare il
codice, immettendo un totale do 2292,16 anzichè 2290,16!





===
Regards,
Norman

Norman Jones

unread,
Mar 12, 2017, 8:40:33 AM3/12/17
to
On 12/03/2017 12.16, Norman Jones wrote:
> tu o io immetterebbero

tu o io immetteremmo ((:-




===
Regards,
Norman

lave...@despammed.com

unread,
Mar 12, 2017, 10:46:34 AM3/12/17
to
Il giorno domenica 12 marzo 2017 12:11:59 UTC+1, Bruno Campanini ha scritto:
> 1 - Nel file che hai inviato a me non esistono addendi che diano per
> totale 2290.16, come ti ho già detto.
> Esistono invece in quello che tu stai citando ora?

Hai ragione, avevo scritto male nel messaggio. Il risultato è però lo stesso anche cercando gli addendi della somma 2292,16. Per evitare errori di digitazione ed essere sicuro che vi fosse almeno un addendo esattamente corrispondente, avevo provato a eseguire la ricerca anche per 7.000 e per 250. Stesso risultato.

> 2 - il valore da immettere è 2290.16
> Il VBA interpreterebbe erroneamente ogni altro formato.

Il programma è Excel per Mac 2016, gira su un sistema in inglese (anche i menù e le formule di Excel sono in inglese), ma ho impostato la convenzione italiana per separare decimali e migliaia, sicché nelle celle i valori vengono espressi in questo formato: 2.290,16.
Avevo comunque provato sia con la convenzione italiana (2.292,16) sia con quella inglese (2,290.16), in entrambi i casi anche provando a omettere il separatore delle migliaia. Stesso risultato.

Ora però ho riprovato e qualcosa è cambiato: la finestra conclusiva dell'operazione non dice più che non sono state trovate combinazioni per la somma richiesta, bensì "Compile error: Can't find project or library" con un pulsante "OK", premendo il quale si apre l'editor di Virtual Basic con un lungo testo, che riporto in calce, in cui sono evidenziate in giallo le quattro righe seguenti:

Private Function GetText(a As Double, b As Double, c As Double, _
d As Double, e As Double, f As Double, _
g As Double, h As Double, _
i As Double, j As Double) As String


Norman Jones

unread,
Mar 12, 2017, 11:51:58 AM3/12/17
to
Ciao Lavedure,

On 12/03/2017 14.46, lave...@despammed.com wrote:
> Il giorno domenica 12 marzo 2017 12:11:59 UTC+1, Bruno Campanini ha scritto:
>> 1 - Nel file che hai inviato a me non esistono addendi che diano per
>> totale 2290.16, come ti ho già detto.
>> Esistono invece in quello che tu stai citando ora?
> Hai ragione, avevo scritto male nel messaggio. Il risultato è però lo stesso
> anche cercando gli addendi della somma 2292,16. Per evitare errori di
> digitazione ed essere sicuro che vi fosse almeno un addendo esattamente
> corrispondente, avevo provato a eseguire la ricerca anche per 7.000 e per
> 250. Stesso risultato.

>> 2 - il valore da immettere è 2290.16
>> Il VBA interpreterebbe erroneamente ogni altro formato.
> Il programma è Excel per Mac 2016, gira su un sistema in inglese (anche i menù e le formule di Excel sono in inglese), ma ho impostato la convenzione italiana per separare decimali e migliaia, sicché nelle celle i valori vengono espressi in questo formato: 2.290,16.
> Avevo comunque provato sia con la convenzione italiana (2.292,16) sia con quella inglese (2,290.16), in entrambi i casi anche provando a omettere il separatore delle migliaia. Stesso risultato.
>
> Ora però ho riprovato e qualcosa è cambiato: la finestra conclusiva
> dell'operazione non dice più che non sono state trovate combinazioni
> per la somma richiesta, bensì "Compile error: Can't find project or
> library" con un pulsante "OK", premendo il quale si apre l'editor di
> Virtual Basic con un lungo testo, che riporto in calce, in cui sono
> evidenziate in giallo le quattro righe seguenti:
>
> Private Function GetText(a As Double, b As Double, c As Double, _
> d As Double, e As Double, f As Double, _
> g As Double, h As Double, _
> i As Double, j As Double) As String

Sempre ricordandosi del fatto che non parlo Mac e non posso testare
nulla su un Mac, incolla la seguente procedura nello stesso modulo di
codice e eseguila:
'=========>>
Public Sub Tester()
Dim V As Variant
V = GetText(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
MsgBox Evaluate(V)
End Sub
'<<=========

Inoltre, nell'Edotor VBA, dal menu, seleziona:
Strumenti | Riferimenti
e controlla se ci sia un library evidenziato come MANCANTE (MISSING
nella mia versione inglese).




===
Regards,
Norman

lave...@despammed.com

unread,
Mar 12, 2017, 1:49:59 PM3/12/17
to
Il giorno domenica 12 marzo 2017 16:51:58 UTC+1, Norman Jones ha scritto:
> Sempre ricordandosi del fatto che non parlo Mac e non posso testare
> nulla su un Mac, incolla la seguente procedura nello stesso modulo di
> codice e eseguila:
> '=========>>
> Public Sub Tester()
> Dim V As Variant
> V = GetText(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
> MsgBox Evaluate(V)
> End Sub
> '<<=========

Qui mi sono un po' perso.
Apro il foglio excel che mi hai inviato, con il codice già inserito; seleziono 9 celle; premo il pulsante Trova Somme; indico la somma da trovare (2292,16); compare la finestrella che dice "Compile error: Can't find project or library" con un pulsante "OK"; premo OK e si apre Virtual Basic Editor, che presenta a sinistra un riquadro con queste voci:
VBAProject (nome del file excel)
- Microsoft Excel Objects
--ThisWorkBook
--Sheet1 (Sheet1)
-Modules
--Module1
--Module2

La parte destra dell'Editor è divisa verticalmente in due riquadri, in quello superiore compare del codice se clicco su Module1 o Module2. Il codice è diverso per i due moduli.
Posso scrivere sia nel riquadro superiore sia in quello inferiore.
Tra i due riquadri ci sono dei pulsanti:
Toggle Breakpoint
Continue Program Execution
Reset
Step Over
Step Into
Step Out

Non ho idea di dove dovrei incollare il codice della nuova procedura che mi hai indicato.


> Inoltre, nell'Edotor VBA, dal menu, seleziona:
> Strumenti | Riferimenti
> e controlla se ci sia un library evidenziato come MANCANTE (MISSING
> nella mia versione inglese).

Questa è più facile!
Nell'editor VBA ci sono due library evidenziate come missing:
MISSING: Microsoft Scripting Runtime#Microsoft Scripting Runtime
MISSING: Microsoft VBScript Regular Expressions 1.0#Microsoft VBScript R…
(Il margine della finestra copre la fine del nome della seconda library mancante.)

Norman Jones

unread,
Mar 12, 2017, 2:24:23 PM3/12/17
to
Ciao Lavedure
On 12/03/2017 17.49, lave...@despammed.com wrote:
> Questa è più facile!
> Nell'editor VBA ci sono due library evidenziate come missing:
> MISSING: Microsoft Scripting Runtime#Microsoft Scripting Runtime
> MISSING: Microsoft VBScript Regular Expressions 1.0#Microsoft VBScript R…
> (Il margine della finestra copre la fine del nome della seconda library mancante.)

OK!! Stiamo facendo progresso!

Togli la spunta per il riferimento a Microsoft Scripting Runtime e anche
per Microsoft VBScript Regular Expressions 1.0

Quindi, riprova il codice per trovare gli addendi.

Fammi sapere i rsultati!




===
Regards,
Norman

Norman Jones

unread,
Mar 12, 2017, 2:36:11 PM3/12/17
to
Ciao Lavedure.

Ti ho mandato un file aggiornato.

In questo file ho tolto i due riferimenti problematici e ho inserito
io il codice de test.

Basta scaricare il file e premere il pulsante Tester.

Fammi sapere cosa succede!




===
Regards,
Norman

Norman Jones

unread,
Mar 12, 2017, 2:40:29 PM3/12/17
to
On 12/03/2017 18.36, Norman Jones wrote:
> il codice de test.
di test





===
Regards,
Norman

lave...@despammed.com

unread,
Mar 12, 2017, 5:03:03 PM3/12/17
to
Il giorno domenica 12 marzo 2017 19:36:11 UTC+1, Norman Jones ha scritto:
> Ti ho mandato un file aggiornato.
>
> In questo file ho tolto i due riferimenti problematici e ho inserito
> io il codice de test.
>
> Basta scaricare il file e premere il pulsante Tester.
>
> Fammi sapere cosa succede!

Ciao Norman,

Grazie.
Ho aperto il nuovo file e premuto il pulsante Tester. Compare una finestra con il testo “55”, qualunque siano le celle selezionate.
È corretto?

Norman Jones

unread,
Mar 12, 2017, 5:09:32 PM3/12/17
to
--



===
Regards,
Norman

lave...@despammed.com

unread,
Mar 12, 2017, 5:12:29 PM3/12/17
to
Nel nuovo file ho provato a premere il pulsante "Trova Somme", ho inserito la somma 2292,16, premuto OK...
Magia! Sono comparse tutte le combinazioni degli addendi che danno quella somma!

Non ho capito che cosa tu abbia fatto, ma era esattamente quello che avevo chiesto all'inizio!

Grazie, Norman!

Norman Jones

unread,
Mar 12, 2017, 5:15:35 PM3/12/17
to
On 12/03/2017 21.02, lave...@despammed.com wrote:
Sì,Benissimo!

Ora:
• Seleziona le celle D12:D21
• Premi l'altro pulsante (Trova Somme)
• Fammi sapere i risultati




===
Regards,
Norman

Norman Jones

unread,
Mar 12, 2017, 5:46:22 PM3/12/17
to
Ciao Lavedure,
Mi fa piacere che tu abbia risolto il problema e ti ringrazio per il
cortese riscontro.




===
Regards,
Norman

erinna

unread,
Mar 12, 2017, 9:20:55 PM3/12/17
to
> Purtroppo la situazione è questa: fatture emesse nel corso di due o tre
> anni e pagate quando e come piace al cliente (cioè senza seguire l'ordine
> cronologico delle fatture, e con pagamenti cumulativi), che <<non si cura
> di indicare nel bonifico il riferimento alle fatture pagate e per giunta
> si fa anche un'autoriduzione di 2 euro.



hai voluto risparmiare sulle RiBa?
Bravo!

0 new messages