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

[RISOLTO] Velocizzare elaborazione VBA

Ultimo Aggiornamento: 13/04/2024 21:52
Post: 1.205
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Veteran
Excel2019
OFFLINE
15/02/2024 11:58

Salve a tutti
Sembra che ci siamo inariditi. Da qualche giorno non ci sono domande. O siamo diventati tutti bravi oppure ci spaventiamo a scrivere.
Cerco, se possibile, di smuovere un po' le acque.

Nel file che allego vi sono circa 2700 estrazioni di SuperEnalotto. Non sono un ludopatico ma mi piace "scavare" nelle cose.
Ho creato una macro che, in base al numero di righe che voglio analizzare (e che scrivo nella cella I1), mi riporta gli ambi per ogni riga e per ogni ambo scrive la frequenza di estrazione.

Ora, se le righe da analizzare sono inferiori a 500 i tempi di elaborazione sono inferiori a 3 sec.
Crescono, ed anche tanto, se aumentiamo il numero di righe.

La macro che ho utilizzato è riportata sotto ma vorrei sapere se esiste un altro modo (io ho usato Dictionary) per eseguire l'elaborazione nel minor tempo possibile.
Dimenticavo di dire che nelle celle N2:N3 appare il tempo impiegato per la prima parte e per la seconda.
Option Explicit

Sub Crea_Ambi()
Dim iTime1 As Single, iTime2 As Single, fTime1 As Single, fTime2 As Single, nRig As Long
Dim estr, ambo()
Dim i As Long, j As Long, k As Long, a As Long, rg As Long
Dim Dic, tempArr, key
iTime1 = Timer
Range("J:L, N2:N3").ClearContents
nRig = Cells(1, 9).Value
If nRig = 0 Then nRig = Cells(Rows.Count, 2).End(xlUp).Row
Cells(1, 10) = "freq.": Cells(1, 11) = "A1": Cells(1, 12) = "A2"
'assume la sestina di ogni riga
estr = Range("B2:G" & nRig) 'Cells(Rows.Count, 7).End(xlUp).Row).Value
ReDim ambo(1 To UBound(estr) * 15)
Set Dic = CreateObject("Scripting.Dictionary")
With CreateObject("Scripting.Dictionary")
  .CompareMode = vbTextCompare
  For i = LBound(estr) To UBound(estr)
    For j = 1 To 5
      For k = j + 1 To 6
        a = a + 1
        ambo(a) = estr(i, j) & "," & estr(i, k)
        If Not .Exists(Dic.Item(ambo(a))) Then
          Dic.Item(ambo(a)) = ambo(a)
        End If
      Next k
    Next j
  Next i
End With
fTime1 = Timer
Cells(2, "N") = fTime1 - iTime1
'
iTime2 = Timer
rg = 2
For Each key In Dic.Keys
  tempArr = Split(key, ",")
  For i = 1 To UBound(ambo)
    If key = ambo(i) Then Cells(rg, 10) = Cells(rg, 10) + 1
  Next i
  For i = 0 To 1
    Cells(rg, i + 11) = CInt(tempArr(i))
  Next i
  rg = rg + 1
Next key
fTime2 = Timer
Cells(3, "N") = fTime2 - iTime2
Set Dic = Nothing
Cells(1, 1).Select
End Sub

Aspetto le vostre considerazioni. Grazie per l'attenzione. Ciao,
Mario
15/02/2024 12:32

In rete ho trovato questo:
https://www.forumexcel.it/forum/threads/come-velocizzare-macro-estremamente-lenta-in-un-foglio-con-molte-formule.69139/
Post: 5.062
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
15/02/2024 13:01

Re:
rex88 (nTdQ231201), 15/02/2024 12:32:

In rete ho trovato questo:
https://www.forumexcel.it/forum/threads/come-velocizzare-macro-estremamente-lenta-in-un-foglio-con-molte-formule.69139/



Che non c'entra nulla con il quesito posto da Marius44



Alfredo
15/02/2024 13:22

Infatti, mi sono attenuto esclusivamente al titolo della discussione.

EDIT

Nel post si parlava di macro "Ho creato una macro" e il link riportato parla di velocizzare una macro
https://www.forumexcel.it/forum/threads/come-velocizzare-macro-estremamente-lenta-in-un-foglio-con-molte-formule.69139/

Il file non l'ho neanche aperto.
[Modificato da rex88 15/02/2024 13:30]
Post: 1.144
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Veteran
EXCEL 2016 - SPREAD32
OFFLINE
15/02/2024 14:07

Re:
Ciao Mario
finalmente un quesito da te, con esordio commendevole, a tutto c'è una spiegazione.
-----------
ora sono impedito ma nel tardo pomeriggio mi riprometto di esaminare la macro, avvertendoti però che io mastico pochissimo il VBA.
Io mi occupo da moooolti anni di questo genere di problemi e so che Excel non è fatto per le grandi elaborazioni ripetitive.
Infatti il mio PowerBasic a confronto è fulmineo
alcune caratteristiche peggiorano la performance di una elaborazione numerica
anzitutto operare con le stringhe
mescolarci e inserire valori stringa per formattare un risultato
chiedere all'algoritmo di scrivere mentre elabora, invece se fosse mai possibile sarebbe il caso di tenere tutto il database in memoria.
Ma a parte queste 2 o 3 cosine, e forse ne dimentico qualcun'altra. bisogna capire perchè il tempo di elaborazione di 2700 estrazioni non sia proporzionale a quello di 400.
La prima risposta che mi viene in mente è che, forse, ogni volta che si aggiorna il database si costringa a ritrovare da capo gli ambi, ma non credo che tu abbia commesso questa ingenuità.
In definitiva a parte la notazione che si usa per un certo linguaggio, a mio avviso la più FONDAMENTALE è l'algoritmo
Da quando ho imparato a programmare io ho rimuginato sempre la stessa minestra di pochi programmetti, solo per migliorare l'algoritmo, per ottenere le massime velocità.
Per esempio al tempo del totocalcio ho realizzato una cosetta che sviluppava 14 triple, quasi 5 milioni di colonne, anche scrivendole su disco, in poco più di mezzo secondo, tanto che un tecnico programmatore si meravigliò di me.
Perciò avrò piacere di esaminare l'opera con calma, e soprattutto mi piacerebbe scambiare con te idee in merito, ma non in questa sede.

LEO
https://t.me/LordBrum
Post: 1.205
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Veteran
Excel2019
OFFLINE
15/02/2024 15:09

Ciao a tutti
Innanzi tutto un ringraziamento ai partecipanti per l'interesse mostrato.
Vorrei che il dialogo avvenisse senza polemiche e nel rispetto reciproco ma basato esclusivamente sui dati, sul codice, sul modo di trattare il problema.

Vi faccio notare che il codice è "grezzo", cioè non ha tutte quelle "appendici" che si usano di solito per velocizzare.
Per esempio manca Application.ScreenUpdating=False/True all'inizio e alla fine. Inserendo queste due righe si guadagna un po' (provare per credere).
Manca anche il Calcolo Manuale (ma credo che in questo caso c'entri poco).
Circa la scrittura sul Foglio nell'esempio ciò avviene alla fine e tutto d'un colpo (almeno credo).

@L2018
Si Leo, sono quei giri che fanno perdere tempo (guarda il codice da rg=2 in poi) ma non mi è venuto meglio di così per realizzare quanto mi proponevo.

Altri suggerimenti?.

Ciao,
Mario
Post: 1.145
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Veteran
EXCEL 2016 - SPREAD32
OFFLINE
15/02/2024 15:27

Re:
Mario
puoi stare tranquillo che in questa discussione non ci sarà posto per veruna polemica, di che tipo poi ?
Tutti i programmi cominciano in modo grezzo
Updating vero o falso va bene, ma non risolverebbe
Calcolo manuale sinceramente non so cosa sia
scrittura su foglio, non dovresti credere ma saperlo di certo
il timer dovrebbe partire solo un istante prima della elaborazione, ma poco risolve
Se possibile eliminare le stringhe, variabili eccessive e tutto ciò che si inserisce nel conteggio
Se il database non deve estendersi molto oltre le 2700 estrazioni si dovrebbe vedere se riesce a stare in memoria
Di suggerimenti se ne possono trovare, ma come ho detto ora devo andare in un posto bruttissimo che si chiama Banca
nel frattempo qualche suggeritore uscirà fuori
mi dedicherò alla macro al mio rientro, con la speranza di poterlo fare come dico io

LEO
https://t.me/LordBrum
Post: 7.529
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
15/02/2024 15:57

Ciao Mario, lo stavo facendo con il metodo tradizionale, ma il tempo diventa proibitivo, poi mi sono ricordato.
è un problema che ho risolto tempo fa, leggendo un articolo nel web, che mi ha dato l'imbeccata ed ho aggiustato la macro che usava.
Bisogna usare le Tabelle per velocizzare al massimo, questo sono riuscito a tirare fuori

Ho inserito tutti i 4000 e rotti ambi ed ho inserito, l'archivio del superenalotto che ho io, lo vedi nel foglio archivio che ho inserito sono 3723 estrazioni, come vedrai ci impiega solo 4 secondi e rotti, per riportare ogni ambo quante volte è uscito

Ciao Salvatore (8-D

P.S. ricorda che i due archivi nel foglio Sal sono impostate come tabelle, nella seconda ho tolto i filtri, l'ho lasciati solo sulla prima per filtrare i dati e vedere quali sono gli ambi che hanno avuto una maggiore frequenza o altro, Bye bye
[Modificato da by sal 15/02/2024 16:13]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 1.206
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Veteran
Excel2019
OFFLINE
15/02/2024 16:32

Ciao

@bySal
Ciao Salvatore, vedo che stai bene e son contento per te.
Complimenti per la macro (che andrò a studiarmi passo-passo).
In effetti è una scheggia in confronto alla mia. Dipenderà solo dal fatto che hai "intabellato" il tutto?
Voglio approfondire.
Intanto grazie per la condivisione.

Ciao,
Mario

PS - Ma come fai ad allegare un file .xlsm senza zipparlo? A me non lo fa allegare.
[Modificato da Marius44 15/02/2024 16:33]
Post: 7.530
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
15/02/2024 17:29

Ciao Mario, cerco di non abbattermi tenendomi impegnato, ma faccio fatica a respirare, in effetti si, il tutto e la tabella che fa da base, e si usano i comandi tabella, ma poi fa un semplice ragionamento, visto che sono ambi, se non trova il primo numero, non controlla il resto, e questo lo fa simultaneamente per tutte le estrazioni, e solo se trova il secondo numero passa allo step successivo contando le volte che lo trova.

come vedi non usa nessuna funzione Match o countif, è il Bodyrange che fa da base per la ricerca, certo non conosco tutte le funzioni tabelle, qualche appunto lo puoi trovare qui Acosani non so se conosci il sito, ma devi cercare perche è un poco criptico trovare gli argomenti, ed è anche ricco di altri linguaggi di programmazione.

non so perche a te non carica il file xlsm, ma forse hai le estensioni visibili, prova a nascondere le estensioni, io non le ho visibili, tanto lo vedo che tipo di file sono dall'icona.

Ciao Salvatore (8-D
[Modificato da by sal 15/02/2024 17:32]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 1.146
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Veteran
EXCEL 2016 - SPREAD32
OFFLINE
15/02/2024 17:33

Re:
Ciao
sono rientrato
mi chiedo fra tanti miei limiti se per caso alle volte l'intabellamento equivalga a ciò che io chiamo database in memoria
quindi è evidente che Excel e altri linguaggi differiscono per molte cose, anche se i ragionamenti di base sono simili
infatti io stesso sono riuscito a creare qualche macro con frasi di tipo Basic.
Riguardo al programma di Sal gli chiederei: che cosa intendi per 1°, 2°, 3° uscito ? non sono mica ambi e terni
se ben capisco è uno dei motivi della maggior velocità: altro è cercare un ambo, altro i primi 3 usciti.
quindi per capire i motivi delle differenze bisognerebbe smembrare le 2 macro, ma forse non siamo i tipi adatti ?

LEO
https://t.me/LordBrum
Post: 7.531
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
15/02/2024 17:35

Ciao Leo, la terza colonna sono le volte che è uscito l'ambovede solo 2 numeri.

bye bye (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 1.147
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Veteran
EXCEL 2016 - SPREAD32
OFFLINE
15/02/2024 17:49

Re:
SAL
non seguo questa tua risposta perchè non ho capito la logica della ricerca, in A,B,C io vedo solo primo, secondo uscito e forse numero uscite
ma se tu fai prima mi sapresti dire al volo quante volte è uscito l'ambo 1-2 nelle 3700 estrazioni ?



LEO
https://t.me/LordBrum
Post: 1.207
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Veteran
Excel2019
OFFLINE
15/02/2024 17:53

Salve a tutti

E proprio li sta l'inghippo. Salvatore ha barato! Poco, ma ha barato.
Mi spiego.
Stavo studiando la macro quando mi sono accorto che i dati in col.A e B sono fissi, cioè non vengono scritti dalla macro. La macro si limita a confrontare i numeri estratti col primo in col.A; se questo è uguale allora cerca il 2° estratto. Ovvio che i tempi sono di gran lunga inferiori.
Ho notato anche che se si mettono i dati delle col.A:C in ordine dal più piccolo al più grande in base alla col.C i tempi si accorciano ancora: solo 5 sec. invece di 5,1 e 5,08. Ovvio che è poco ma su grandi numeri di righe ...

Continuo a studiare.
Ciao,
Mario
Post: 7.532
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
15/02/2024 17:54

Ciao Leo ecco un esempio usando i filtri puoi trovare quello che ti serve



Ciao Salvatore (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 7.533
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
15/02/2024 17:58

Certo Mario che bisogno ho di far scrivere gli ambi, tanto lo so per tutti i 90 numeri sono 4007 credo, non ricordo mai il numero preciso.
e i tempi si accorciano ancora di più se le estrazioni vengono ordinate dal più piccolo al più grande, questo per il lotto in quanto non sono ordinati

Salvatore (8-D
[Modificato da by sal 15/02/2024 18:10]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 1.148
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Veteran
EXCEL 2016 - SPREAD32
OFFLINE
15/02/2024 17:59

Re:
capito adesso quante solo le trappole della programmazione, ed anche del modo in cui ci si spiega se si scrive ?
non crederò mai che l'ambo 1-2 sia uscito 15 volte su 3700, perchè ogni estrazione è fatta di 10 ambi


LEO
https://t.me/LordBrum
Post: 7.534
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
15/02/2024 18:02

Ciao Leo anche se sono 10 ambi che nel superenalotto sono di più in quanto sono 6 numeri, ma il numero 1-2 si troverà 1 sola volta in ogni estrazione

Salvatore (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 1.149
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Veteran
EXCEL 2016 - SPREAD32
OFFLINE
15/02/2024 18:03

Re: Re:
L2018, 15/02/2024 17:59:

capito adesso quante solo le trappole della programmazione, ed anche del modo in cui ci si spiega se si scrive ?
non crederò mai che l'ambo 1-2 sia uscito 15 volte su 3700, perchè ogni estrazione è fatta di 10 ambi



e invece è così: 1-2 uscito 15 su 3700, come non detto
mi rimane da capire meglio il ragionamento della ricerca di Sal


LEO
https://t.me/LordBrum
Post: 1.150
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Veteran
EXCEL 2016 - SPREAD32
OFFLINE
15/02/2024 18:17

invece vorrei dire una cosa
se la macro di SAL deve servire solo a sapere quanti ambi in tot estrazioni, allora io non l'ho lanciata ma nel foglio ho messo una semplice formula di ricerca
Risposta in 0,0 secondi !

LEO
https://t.me/LordBrum
Post: 3.739
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
15/02/2024 18:21

ciao
non entro nel merito di quanto si vuole ottenere, ma solo per dire che la "velocizzazione" in questo caso NON dipende dall'uso delle tabelle, ma dal metodo adottato da Salvatore (un abbraccio) che evita inutili ricerche....

Prova ne è il seguente codice che è lo stesso di quello di Salvatore, ma senza tabelle

(GLI INTERVALLI SONO FISSI PER PIGRIZIA, MA.....)

saluti
Option Explicit

Sub RMatr()

   Dim ArrAmbi As Variant
   Dim arrEstrazioni As Variant
   Dim i As Long, j As Long, t As Long, y As Long
   Dim contaAmbi As Long
   Dim v1 As Long
   Dim v2 As Long
   Dim v3 As Long
   Dim v4 As Long
   
   Dim dTimer As Double
   
   Range("C2:C5000").ClearContents
   dTimer = Timer
   ArrAmbi = Range("A2:C4015")
   arrEstrazioni = Range("E2:J3724")

   For i = 1 To UBound(ArrAmbi, 1)
      v1 = ArrAmbi(i, 1)
      v2 = ArrAmbi(i, 2)
      For t = 1 To UBound(arrEstrazioni, 2) - 1
         For j = 1 To UBound(arrEstrazioni, 1)
            v3 = arrEstrazioni(j, t)
            If v3 = v1 Then
               For y = t + 1 To UBound(arrEstrazioni, 2)
                  v4 = arrEstrazioni(j, y)
                  If v4 = v2 Then
                     contaAmbi = contaAmbi + 1
                  End If
               Next y
            End If
         Next j
      Next t
      ArrAmbi(i, 3) = contaAmbi
      contaAmbi = 0
   Next i
   Range("A2").Resize(UBound(ArrAmbi), 3) = ArrAmbi
   MsgBox "Uso Tabelle secondi = " & Timer - dTimer
End Sub






[Modificato da dodo47 15/02/2024 18:22]
Domenico
Win 10 - Excel 2016
Post: 1.151
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Veteran
EXCEL 2016 - SPREAD32
OFFLINE
15/02/2024 18:22

Re:
L2018, 15/02/2024 18:17:

invece vorrei dire una cosa
se la macro di SAL deve servire solo a sapere quanti ambi in tot estrazioni, allora io non l'ho lanciata ma nel foglio ho messo una semplice formula di ricerca
Risposta in 0,0 secondi !



e se le estrazioni diventano 7447 ?

Risposta in 0,0 secondi !

LEO
https://t.me/LordBrum
Post: 7.535
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
15/02/2024 18:31

Ciao Domenico, quando ho trovato la macro faceva uso di tabelle per cui mi sono fidato ed ho ritenuto che le tabelle aumentassero la velocità, e non sono andato oltre, ma tu hai dimostrato che non sono le tabelle ma il metodo di ricerca applicato.
a questo punto dovrò andare a riguardarmi il metodo e vedere se possono esserci ulteriori miglioramenti, grazie per la Dritta.

Ciao Salvatore (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 1.152
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Veteran
EXCEL 2016 - SPREAD32
OFFLINE
15/02/2024 19:00

Re:
by sal, 15/02/2024 17:58:

... gli ambi, tanto lo so per tutti i 90 numeri sono 4007 credo, non ricordo mai il numero preciso.


gli ambi di 90 numeri sono 90 * 89 / 2 = 4005

non ci pioverà mai

ma.....SAL, perchè nel tuo file ne sono 4014 ?

LEO
https://t.me/LordBrum
Post: 1.208
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Veteran
Excel2019
OFFLINE
15/02/2024 19:09

Salve a tutti

Rispondo in ordine

@Dodo47
Ciao Domenico e ben arrivato.
Si, si può fare come dici tu ma rimane un tantino meno veloce di quella con le Tabelle.
Stavo lavorando anch'io sulla macro di Salvatore e, sempre con le tabelle ma eliminando qualche fronzolo, ho ottenuto un un piccolo miglioramento (provare il codice sottostante
Sub AmbiMatrix() 'by Marius44
Dim ArrAmbi As Variant, ArrEstr As Variant
Dim sTime As Single
Dim i As Long, j As Long, t As Long, y As Long, contaAmbi As Long
Dim a1 As Integer, a2 As Integer
  Range("C2:C" & Cells(Rows.Count, 3).End(xlUp).Row).ClearContents 'cancella frequenze
  sTime = Timer 'avvia timer
  ArrAmbi = Worksheets("Sal").ListObjects("Tabella1").DataBodyRange.Value
  ArrEstr = Worksheets("Sal").ListObjects("Tabella2").DataBodyRange.Value
  For i = 1 To UBound(ArrAmbi, 1)
    a1 = ArrAmbi(i, 1)  'primo numero riga della tabella ambi
    a2 = ArrAmbi(i, 2)  'secondo numero riga della tabella ambi
    For t = 1 To UBound(ArrEstr, 2) - 1
      For j = 1 To UBound(ArrEstr, 1)
        If ArrEstr(j, t) = a1 Then 'se uguale al numero estratto
          For y = t + 1 To UBound(ArrEstr, 2)
            If ArrEstr(j, y) = a2 Then
              contaAmbi = contaAmbi + 1
            End If
          Next y
        End If
      Next j
    Next t
    ArrAmbi(i, 3) = contaAmbi
    contaAmbi = 0
  Next i
  Worksheets("Sal").ListObjects("Tabella1").DataBodyRange.Value = ArrAmbi
  Cells(4, 12) = Timer - sTime
  MsgBox "Uso Tabelle secondi = " & Timer - sTime
'
End Sub


@L2018
Leo, ma che formula hai messo? e dove?

----
Tabelle o oggetti ovvero modificando l'approccio delle verifiche credo si possa fare ancora meglio. Adesso, scusate, ma vado a fare il nonno.
A domani,
Mario
Post: 1.153
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Veteran
EXCEL 2016 - SPREAD32
OFFLINE
15/02/2024 19:14

Re:
Marius44, 15/02/2024 19:09:

Salve a tutti
@L2018
Leo, ma che formula hai messo? e dove?
,
Mario



scusa Mario, non ti seguo, ho solo detto che gli ambi di 90 numeri sono 4005, mentre nel file di SAL colonna A e B ce ne sono 4014

dove sbaglio ?

LEO
https://t.me/LordBrum
Post: 3.740
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
15/02/2024 21:47

Mario
Io ho semplicemente evidenziato che la velocità della macro di Salvatore non è da addebitarsi alla forma tabellare ma al metodo.....null'altro.

Cari saluti





Domenico
Win 10 - Excel 2016
Post: 1.154
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Veteran
EXCEL 2016 - SPREAD32
OFFLINE
15/02/2024 22:51

Ciao
non mi sbagliavo
gli ambi di 90 numeri sono 4005, mentre nell'archivio di Salvatore ce ne sono 4014, 9 in più, perchè doppioni, infatti sono speculari ai corrispettivi, e sono questi
sarà il caso di correggere

LEO
https://t.me/LordBrum
Post: 1.209
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Veteran
Excel2019
OFFLINE
16/02/2024 09:34

Buongiorno a tutti

@L2018
Leo hai ragione in merito al numero di ambi.
Per quanto riguarda la mia domanda (Quale formula e dove?) mi riferivo al tuo post #20

@dodo47
Domenico ho capito che ti riferivi al "metodo" ed infatti mi sono "tuffato" ma, nonostante l'impegno profuso già da stamani, nulla di nuovo. Ho "aggiustato" un po' la mia prima macro ma impiega quasi il doppio di quella di Salvatore.

Adesso visite alle sorelle (95 e 91 anni) e poi a scuola a "ritirare" i fanciulli.
Ciao,
Mario
Post: 1.156
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Veteran
EXCEL 2016 - SPREAD32
OFFLINE
16/02/2024 12:55

Re:
Marius44, 16/02/2024 09:34:

Buongiorno a tutti
@L2018
Per quanto riguarda la mia domanda (Quale formula e dove?) mi riferivo al tuo post #20



intendevo dire che invece di aspettare il tempo della tua macro o quello di SAL, dal momento che si vuole solo sapere la frequenza di ambi, ho semplicemente usato la formula diretta

=SOMMA(--(MATR.PRODOTTO(CONTA.SE($A2:$B2;$B:$F);RIF.RIGA($A$1:$A$5)^0)=2))

dove A2.B2 sono le due celle di un ambo e B e F sono l'intervallo di ricerca


LEO
https://t.me/LordBrum
Vota: 15MediaObject4,17672 5
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 2 3 | 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 10:58. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com