022. Normalizzare DB con l’aiuto dell’algoritmo Soundex

Download PDF

Domanda:

“storicamente nell’arco di alcuni decenni, differenti persone in differenti modi hanno raccolto dati. La raccolta ammonta ad un totale di circa 3.000 celle all’anno per ogni foglio ed è un incubo perchè lo stile dei fogli è stato stravolto dall’avvicendarsi eterogeneo di decine di collaboratori diversi che si sono succeduti nello stesso ufficio a raccogliere i dati. Dati inseriti in maiuscolo, minuscolo, scritti correttamente per intero, abbreviati, storpiati e/o alterati…. cut….dovrei scoprire il modo di far cercare ad Excel variabili più o meno farcite di wildcard singole tipo le ’?’ o ’*’ da vecchio DOS. Per dire: Corso Vittorio Emanuele II lo posso per esempio trovare come CORSO, corso, C.so, C; Vittorio, VITTORIO, V.; Emanuele, Emmanuele o Emanuelle … una cosa da uscire pazzi. Un Vs. collega dal suo blog mi suggeriva: Io metterei tutti i dati in un unico foglio. Ognuno in una sua riga. La prima colonna conterrà l’anno, così non si perde il riferimento.

Poi, la ricerca ne viene probabilmente facilitata anche con l’uso dell’algoritmo Soundex.

…. cut….l’ho incollata in un modulo ma non riesco a trovare il modo di applicarla.”

 

Risposta:

Personalmente non conoscevo questo algoritmo e ne ho trovato una definizione al seguente link:

http://www.excelvba.it/Forum/story/Visual_Basic_for_Applications/Soundex.html

Soundex è un algoritmo di fonetica per l’indicizzazione di parole secondo il loro suono o pronuncia. cut… L’obiettivo è di poter raggruppare parole omofone (dal suono simile) affinché possano essere abbinate per un ricerca veloce, nonostante differenze o errori di ortografia. cut…Ad esempio, MATTONE è codificato come M350; MATTINO e METANO hanno la stessa codifica M350 (e infatti hanno un suono simile)
Continua a leggere

Selezionare una variabile composta da parte letterale e parte numerica

Download PDF

Domanda:

Fabio: Ciao, ho necessità di inserire all’interno di una variabile il valore contenuto in un’altra variabile che fa parte di un gruppo di variabili composte da una parte letterale e da una numerica. esempio, voglio costruire parole casuali, inserisco le lettere dell’alfabeto in variabili che chiamerò da L1 ad L26, poi nella variabile ”parola metterò con dei cicli il valore contenuto nella variabile Lx+ Ly+Lz e così via. come posso far sì che Lx o Ly o Lz sia riconosciuta come variabile e non come testo?

Risposta:

Continua a leggere

Formula per identificare i turni orari

Download PDF

Domanda:

Sto cercando di implementare una formula su Excel per la quale in una cella yy mi restituisca se è un primo, secondo o terzo turno di lavoro, analizzando l’orario immesso nella cella xx. Es, deve restituirmi 1° turno se l’orario nella cella xx è 06:30, ovvero compreso tra le 06:00 e le 14:00. Continua a leggere

Salvataggio del solo foglio attivo

Download PDF

Domanda:

Avrei bisogno di aiuto avrei la necessità di salvare il foglio attivo dove tramite macro ho già provveduto ad incollare delle cose, il problema è che mi salva l’intera cartella e non solo il folglio
in questione ho provato sia con ActiveSheet.SaveAs che con ActiveworkBook.saveas ma salva sempre l’intera cartella!!! con tutti i fogli presenti! Continua a leggere

021. Individuare duplicati

Download PDF

Domanda:

Buongiorno a tutti, avrei bisogno del vostro aiuto se possibile.
io ho una colonna excel piena di codici alfanumerici, questa colonna è in costante aggiornamaento perchè ogni giorno vengo inseriti alcuni codici.
io avrei bisogno di un modo per sapere e evidenziare se il codice che sto inserendo è già presente nell’elenco. non sono esperto in materia. ma per lavoro sto cercando di imparare a fare più cose possibili.

Risposta:

Il problema può essere risolto in due modi:

a) Tramite codice VBA

Public Sub VerificaDuplicati()

Last_Row = Sheet1.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Range(Cells(2, 1), Cells(Last_Row, 1)).Interior.Pattern = xlNone

For i = Last_Row To 2 Step -1     

Conteggio = Application.WorksheetFunction.CountIf(Columns(1), Sheet1.Cells(i, 1))     

If Conteggio > 1 Then        
   Sheet1.Cells(i, 1).Interior.Color = 255     
End If Next i

End Sub

1) Con “Last_Row” identifico l’ultima riga non vuota del foglio che contiene i dati.
2) Identifico tutto il range contenente i codici “Range(Cells(2, 1), Cells(Last_Row, 1))”
e per esso imposto nessun colore di riempimento “.Interior.Pattern = xlNone”
3) Ciclo dall’ultima alla seconda riga del range precedente
“For i = Last_Row To 2 Step -1 …. Next For”
E’ necessario impostare “Step -1” per ciclare dal basso all’alto
4) Per ogni cella analizzata dal ciclo valorizzo una variabile “Conteggio”
con il conteggio delle volte in cui appare il valore della cella analizzata
5) Se la variabile “Conteggio” assume un valore maggiore di 1,
il codice è presente più di una volta e quindi coloro la cella di rosso
“Sheet1.Cells(i, 1).Interior.Color = 255”

B) Utilizzando la formattazione condizionale

Questo è il file d’esempio con le due soluzioni:

VerificaDuplicati

Riccardo Vincenti

020. Estrarre dati da file diversi senza aprirli ad uno ad uno

Download PDF

Domanda:

Ho una cartella contenente diversi file excel che per comodità chiamerò a.xls, b.xls, c.xls, ecc..
Ognuno di questi file ha nel foglio 1 una tabella (identica per tutti i file) con due colonne di dati (a e b)
La mia esigenza è quella di trovare una formula/macro che sommi su un altro foglio (totale.xls) automaticamente tutte le singole celle delle colonne a e b.
Non vorrei aprire i singoli file per fare le somme ma vorrei poter aprire il solo file totale.xls

Risposta:

Innanzitutto facciamo un pò d’ordine nei report da gestire creando una cartella “ARCHIVIO REPORT”
all’interno della quale andremo a creare delle sottocartelle per ciascun Anno_Mese.
All’interno di queste sottocartelle salveremo i report.

La macro lanciata tramite il bottone “Aggiorna” esegue le seguenti operazioni:

Continua a leggere

Estrarre un sottoinsieme di valori da un basket – estrarre i valori per il lotto

Download PDF

Spesso mi si chiede di costruire una macro che permetta di effettuare delle estrazioni come quelle del lotto, della tombola e simili.

Poichè le richieste sono le più varie abbiamo costruito una macro estremamente flessibile per effettuare le estrazioni con il vincolo che i valori estratti non siano ripetuti.

Continua a leggere