e sicuramente, credo, solo te mi puoi aiutare.
Sono riuscito a modificare una tua macro, che legge le stringhe in colonna e funziona al 100%.
Scrive le righe sul foglio alternativamente perché ho commentato una riga di codice quindi
si dovrebbe compattare la matrice e non lo so fare ma va benissimo così.
Richiesta di aiuto
Quindi non ti chiedo né di aggiustarla né tanto meno di modificarla o addirittura una nuova macro
ma ti chiedo, dato che in rete ho scaricato 70 macro e quasi 200 esercizi di array
e non ho trovato nessuna risposta alle mie domande vorrei, se è possibile e se hai del tempo
da dedicarmi per qualche info su come vengono incanalati i dati dopo che sono stati raccolti in memoria.
Con un esempio concreto ho in colonna B (foglio Scuola) migliaia di righe e tot colonne con delle
scritte biglia Verde, biglia Bianca, biglia Rossa quindi carico la mia matrice e, in memoria, ho
tutti i dati recuperati dall’intervallo in esame quindi le domande:
1a) all’uscita della memoria, come posso incanalare, le sole biglie verdi e i dati
(tutta la riga 4 celle) sul foglio di nome “Verde” accodandoli in cella B2?
Questo dato del salvare i dati sul foglio per me è difficoltoso perché c’è di mezzo il resize
che per me è ostico anche se so che l’intervallo di lettura deve essere uguale all’intervallo
di scrittura sul foglio di destinazione.
2b) Come posso, all’uscita della memoria, incanalare i dati dei 3 tipi di biglie colorate e scriverli
su un foglio “Verde” partendo dalla cella B2 e con una distanza fra loro di 5-6-7 colonne?
3c) Come posso contare, all’uscita della memoria, un solo tipo di biglia e, il risultato, scriverlo
in A2 del foglio “Verde”?
Allegati: un unico file con dentro tre fogli:
__Foglio1 con la struttura dei dati e la bandiera che cliccandola partono 4 macro tutte
uguali cambiano solo le stringhe da trovare.
La macro in pochissimi secondi cerca, confronta e scrive i dati nelle colonne assegnate.
C’è da dire che ci sono 4 macro e 60 tipi di stringhe diverse e oltre 800 mila righe che la
macro deve cercare, confrontare, copiare e accodarle nelle colonne assegnate con
“l’aggravante” che scrive una riga si e una riga no eppure impiega una mancata di secondi.
Con la mia macro casareccia impiegava scarso 4 ore quindi le matrici sono utilissime
non tanto per il risparmio di soldi in corrente ma quanto in risparmio di corrente ossia ecologiche.
__Foglio Scuola dove ci sono le righe con i nomi delle biglie colorate per eventuali prove cliccare
la bandiera e verranno scritte in colonna le i nomi Verde Bianca Rossa con relative
celle a dx (4 celle ad ogni riga)
__Foglio Verdi vuoto per eventuale prove.
Sotto la macro che ho usato per tutto il lavoro e clonato per 5 volte.
Ringraziandoti anticipatamente per eventuali risposte cordialmente ikwae
https://we.tl/t-ePCmymQP5z
- Codice: Seleziona tutto
Sub Macro_Heads_2Punti_Rete()
Dim WArr, oarr(), oInd As Long, Heads
'Valori da cercare:
'lFor = Array(2, 3, 4, 5, 6)'org
Heads = Array("01àDi2", "02àDi2", "03àDi2", "04àDi2", "05àDi2", _
"06àDi2", "07àDi2", "08àDi2", "09àDi2", "10àDi2", _
"11àDi2", "12àDi2", "13àDi2", "14àDi2", "15àDi2")
'Copia dati in array: ' org
WArr = Range(Range("B2"), Range("B2").End(xlDown)).Resize(, 4).Value
'oArr stesse dimensioni (max): 'org
ReDim oarr(1 To UBound(WArr), 1 To UBound(WArr, 2))
'Loop in array: ' org
For I = 1 To UBound(WArr)
If Not IsError(Application.Match(WArr(I, 1), Heads, False)) Then
oInd = oInd + 1 'org
For J = 1 To UBound(WArr, 2) 'org
'oarr(oInd, J) = WArr(I - WArr(I, 1), J) 'copia riga 1 'org
oarr(oInd + 1, J) = WArr(I, J) 'copia riga 2 'org
Next J
oInd = oInd + 1
End If
Next I
If oInd > 0 Then
Range("G" & Rows.Count).End(xlUp).Offset(1, 0).Resize(oInd, UBound(WArr, 2)) = oarr
End If
End Sub