Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

cercare somma 45

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

cercare somma 45

Postdi giorgioa » 26/05/15 15:41

Salve a tutti,

Un aiuto per trovare con una formula 2 numeri con distanza 45.

20 numeri in una riga da C10:V10 se in questo range di celle sono presenti
2 numeri con distanza 45 al primo numero dei 2 calcolare X 4 e se supera
90 scartare 90.
esempio primo numero presente 30 secondo numero presente 75
30 X 4 = 120 - 90 = 30.
Però si da il caso che si possono trovare diversi numeri con tale distanza
come 31 e 76 = 31 ecc;
alla fine il risultato sarà 30; 31 da avere in una cella.
Con una formula e in una cella si può ottenere questo risultato?
Tenere conto che la formula sarà distribuita in giù:

Grazie
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Sponsor
 

Re: cercare somma 45

Postdi wallace&gromit » 26/05/15 21:18

ciao,
con una formula mi sa che è difficile (per non dire impossibile).
Però con questa funzione ad hoc mi sembra che funzioni:
Codice: Seleziona tutto
Public Function diff45(val)
Quanti = val.Count
Trovato = "("
For i = 1 To Quanti - 1
For ii = i + 1 To Quanti
If val(ii) - val(i) = 45 Then
Trovato = Trovato & val(i) * 4 Mod 90 & ","
End If
Next ii
Next i
diff45 = Left(Trovato, Len(Trovato) - 1) & ")"
End Function
Da inserire in un modulo di vba
In W10 scrivi
Codice: Seleziona tutto
=diff45(C10:V10)
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1420
Iscritto il: 16/01/12 14:21

Re: cercare somma 45

Postdi giorgioa » 26/05/15 21:47

Salve Wallace,

Lino Banfi dice che 1 parola è poca ma 2 sono troppe.
invece io dico 1 parola è pochissima e 4 sono sempre poche.
OK Funzione e formula funzionano perfettamente.

Grazie, Grazie, g....
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: cercare somma 45

Postdi giorgioa » 27/05/15 00:14

Salve Wallace,

volevo dire che c'è sempre il problema dello 0 (zero) che deve dare 90.
Cioè quando inconta 45 e aggiunge 45 e trova 90 rispetta la regola della distanza
quindi 45 * 4 = 180 deve sottrarre 90 a 180 e dovrebbe rimanere 90.
Diciamo che se non è semplice apportare una correzione in fin dei
conti il problema si risolve che so che 0 (zero) vale 90.
Ho provato ad aggiungere un se ma non ha nessuna efficacia
oppure non ho scritto la formula col se corretta.

Cmq dico che non è un problema.

Saluti
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: cercare somma 45

Postdi giorgioa » 27/05/15 08:51

Salve Wallace,

non so se devo aprire un altro post ma quanto appresso è
collegato alla discussione in corso e quindi complicato
da spiegarsi in un altro post.
Però prima se puoi risolvere il caso 0 (zero) che deve dare 90;
Con la Function che hai creato mi ha fatto evitare di distribuire
la formula per i 45 casi possibili nel senso che dal 46 in poi
non può produrre distanza 45 perchè si passa a 91;
Ora il problema è: i numeri che ottengo dalla formula Diff45
in W10 dovrebbero essere controllati se presenti in c11:v11.

Ad esempio =Diff45(c10:v10) esito in W10= (5,13,70,71,85)
questi numeri = (5,13,70,71,85) devono essere verificati
se presenti in C11:V11.

Sarebbe ancora possibile?

Grazie della pazienza.
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: cercare somma 45

Postdi wallace&gromit » 27/05/15 21:25

per il problema del 90 puoi risolvere con questa funzione modificata:
Codice: Seleziona tutto
Public Function diff45(val)
Quanti = val.Count
Trovato = ""
For i = 1 To Quanti - 1
For ii = i + 1 To Quanti
If val(ii) - val(i) = 45 Then
Prodotto = val(i) * 4
Do While Prodotto > 90
Prodotto = Prodotto - 90
Loop
Trovato = Trovato & Prodotto & ","
End If
Next ii
Next i
diff45 = Left(Trovato, Len(Trovato) - 1)
End Function

per l'altra tua richiesta devo lavorarci (mi sembra di avere già visto qualcosa di simile nel forum, vediamo se ci riesco da solo o se interviene qualche guru). Nel frattempo ho provato a togliere le parentesi, nella speranza di semplificare il lavoro successivo.
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1420
Iscritto il: 16/01/12 14:21

Re: cercare somma 45

Postdi giorgioa » 27/05/15 21:59

Salve Wallace,

posto il file così apporti la correzione dovuta
sul pratico.

http://www.filedropper.com/wallace

Grazie dell'interessamento
Aspetto nuove, Ciao
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: cercare somma 45

Postdi giorgioa » 31/05/15 10:35

Salve Wallace,

buona domenica,
fino a quando non risolvi la lettura di
più numeri in una cella utilizzo
la prima proposta cioè quella che mi da 0
al posto di 90.
Vorrei dire e faccio per dire in genere
il massimo di numeri che trovi in cella
potrebbe essere di 6-7, chiaro che non
me ne intendo, ma potresti risolvere
il caso con una Function?
Visto che le functione sono di costruzione
personale.
Non faccio nomi ma di bravi nel sito ce ne sono
se non riesci personalmente.
E' una idea... non si sa mai.

Ciao e ancora buona domenica
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: cercare somma 45

Postdi wallace&gromit » 01/06/15 20:28

eccomi qua.
Qualcosa sono riuscito a ricavare, è perfettibile ma sembra funzionare.
In W10 inserisci questa formula:
Codice: Seleziona tutto
=diff45(C10:V10)
che fa capo alla funzione già proposta in precedenza:
Codice: Seleziona tutto
Public Function diff45(val)
Quanti = val.Count
Trovato = ""
For i = 1 To Quanti - 1
For ii = i + 1 To Quanti
If val(ii) - val(i) = 45 Then
Prodotto = val(i) * 4
Do While Prodotto > 90
Prodotto = Prodotto - 90
Loop
Trovato = Trovato & Prodotto & ","
End If
Next ii
Next i
diff45 = Left(Trovato, Len(Trovato) - 1)
End Function

in X10 inserisci:
Codice: Seleziona tutto
=cercaSotto(W10;RIF.RIGA())
che invece si riferisce a questa funzione:
Codice: Seleziona tutto
Public Function cercaSotto(elenco, posiz)
confronto = Range("W" & posiz).Address
RigaSotto = ""
trovati = Split(Replace(elenco, """", "", , , vbTextCompare), ",")
For i = 0 To 3
For j = 0 To 20
confronto2 = Range(confronto).Offset(1, -j)
    If confronto2 = val(trovati(i)) Then
    RigaSotto = RigaSotto & confronto2 & ","
    End If
Next j
Next i
cercaSotto = Left(RigaSotto, Len(RigaSotto) - 1)
End Function
fai un po' di test e dimmi se funziona.
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1420
Iscritto il: 16/01/12 14:21

Re: cercare somma 45

Postdi giorgioa » 01/06/15 21:06

Salve Wallace,

la formula che ho messo in cella X10 da VALORE.

Per fare dei test direttamente e con gli stessi dati
ho caricato il file su cui lavoro.
Vedi se lo puoi scaricare, sono passati appena 1 o 2 giorni
e dovrebbe essere ancora lì.
L'indirizzo e il file (Wallace) sta al messaggio più sù.
Ciao

http://www.filedropper.com/wallace_1
Ho controllato e non era più presente.
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: cercare somma 45

Postdi wallace&gromit » 02/06/15 07:52

hai ragione, non avevo provato tutte le situazioni e mancava qualche passo nella mia funzione.
Ma ora eccola qui:
Codice: Seleziona tutto
Public Function cercaSotto(elenco, posiz)
confronto = Range("W" & posiz).Address
If elenco = "nessuno" Then
RigaSotto = "nessuno."
GoTo fine
End If

ContaVirgole = 0
contaNumeri = 0
RigaSotto = ""
         n = InStr(1, elenco, ",")
         While n <> 0
            ContaVirgole = ContaVirgole + 1
            n = InStr(n + 1, elenco, ",")
         Wend
contaNumeri = ContaVirgole

trovati = Split(Replace(elenco, """", "", , , vbTextCompare), ",")
For i = 0 To contaNumeri
For j = 0 To 20
confronto2 = Range(confronto).Offset(1, -j)
    If confronto2 = val(trovati(i)) Then
    RigaSotto = RigaSotto & confronto2 & ","
    End If
Next j
Next i
If RigaSotto = "" Then
RigaSotto = "nessuno."
End If

fine:
cercaSotto = Left(RigaSotto, Len(RigaSotto) - 1)
End Function
testata e funzionante sul tuo esempio.

Ho dovuto modificare anche l'altra funzione per il caso in cui non si trovino corrispondenze. Ecco qui la versione corretta:
Codice: Seleziona tutto
Public Function diff45(val)
Quanti = val.Count
trovato = ""
For i = 1 To Quanti - 1
For ii = i + 1 To Quanti
If val(ii) - val(i) = 45 Then
Prodotto = val(i) * 4
Do While Prodotto > 90
Prodotto = Prodotto - 90
Loop
trovato = trovato & Prodotto & ","
End If
Next ii
Next i
If trovato = "" Then
trovato = "nessuno."
End If
diff45 = Left(trovato, Len(trovato) - 1)
End Function
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1420
Iscritto il: 16/01/12 14:21

Re: cercare somma 45

Postdi giorgioa » 02/06/15 10:38

Salve Wallace e buona giornata,

ti dico bravissimo non che possa giudicarti,
avevo fatto questa richiesta altre 2 volte
e ottenuto una risposta negativa.

In caso di altri sviluppi per oggi ti saluto
ma soprattutto GRAZIE.
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: cercare somma 45

Postdi giorgioa » 04/06/15 10:19

Salve Wallace e buona giornata,

volevo ancora ringraziati e chiudere il topic.

[RISOLTO]
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: cercare somma 45

Postdi giorgioa » 04/06/15 17:44

Salve Wallace,

se non ti dispiace dovresti rivedere la seconda Function scritta.
Non so se hai il file che ho postato, se si dovresti vedere la
cella y50 dell'archivio oppure y59 del foglio.
In quella cella figurano 2 volte 66 e questo è impossibile perchè
in ogni riga non c'è ripetizione di numero qui riposto i numeri della riga
così potrai confrontare
4 5 6 7 13 30 32 36 39 41 48 50 52 55 64 72 79 81 84 85=20-28-54-66 |28-66.66
4 6 12 24 25 28 32 33 37 39 40 52 58 66 68 74 75 80 84 88.
20-28-54-66 sono i numeri ricavati dalla prima riga;
26-66-66 sono i numeri che va a vedere il rigo sotto.
Poi visto che hai già il filone cioè hai trovato la strada se separatamente puoi scrivere altre 2 function
una che messa in colonna y va a controllare se i numeri che stanno in w ci sono 2 righe sotto.
mentre l'altra che messa in colonna z va a controllare se i numeri che stanno in w ci sono 3 righe sotto.
Le function separate.
Ciao
Spero di essermi spiegato
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: cercare somma 45

Postdi wallace&gromit » 18/06/15 21:25

vedo adesso che avevi aggiunto qualcosa che mi era sfuggito.
Puoi ripubblicare il file wallace_1, che non avevo scaricato?
La tua nuova richiesta c'entra con questa domanda?
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1420
Iscritto il: 16/01/12 14:21

Re: cercare somma 45

Postdi giorgioa » 18/06/15 22:44

Ciao Wallace,

no ti ho fatto più richieste perchè pensavo non ti interessava la mia richiesta.
Resta sempre il fatto che non puoi accontentare sempre la stessa persona
in quanto ci sono richieste di altri e comunque sempre grazie.

Il file Wallace_1 l'ho cestinato ma ho ancora il primo che ho postato.
Si trattava che il file ma solo su una riga presentava 2 numeri uguali e precisamente
il numero 66. Il filotto di numeri sono gli stessi postati nel mio ultimo.
Ma quello che volevo era di controllare separatamente il secondo passo dei numeri
ed il terzo. Mi spiego hai scritto una function che controlla i dati al rigo sotto
cioè se presenti, chiedevo se a fianco alla colonna ne scrivessi altre 2 function
che la seconda controlla 2 righe sotto e la terza controlli 3 righe sotto.
Faccio un esempio i numeri che ottengo dalla riga 10 la function va a vedere
se a riga 11 sono uscit; la seconda funcitio va a controllare i numeri ottenuti a riga 10
va a vedere se sono usciti a rigo 12; cosi la terza function i numeri ottenuti a rigo 10
va a controllare a rigo 13 se sono presenti.
Quindi le formule andrebbero a colonna x la prima; a colonna y la seconda e a colonna z la terza.

Ciao e grazie dell'interessamento.




http://www.filedropper.com/wallace
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00


Torna a Applicazioni Office Windows


Topic correlati a "cercare somma 45":


Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti