Tutto bene quel che finisce bene

Primo dramma:

Lunedì scorso avevo un corso di Excel in centro a Milano alle nove. Dato che era la prima volta che visitavo il cliente, volevo arrivare con buon anticipo e ho preso il treno di conseguenza. Arrivato a Milano Cadorna sono sceso in metro e ho trovato le carrozze ferme una folla immensa ad aspettare. Dopo qualche minuto, l’annuncio di “linea interrotta, seguiranno comunicazioni”. Che fare? Ho avvertito del ritardo e mi sono avviato a piedi. Sono arrivato (puf pant) alle nove e venti. Odio arrivare in ritardo. Detesto chi arriva in ritardo.

Secondo dramma:

Entro nella sala riunioni predisposta per la lezione, entrano gli allievi e si siedono attorno al tavolo, tirano fuori i carta e penna, ma non hanno i computer! Rimango sorpreso e chiedo spiegazioni: “e i computer?”. Rimangono sorpresi e chiedono “ah, ma ci vogliono?” (purtroppo non avevano letto le istruzioni). Mantengo la calma e spiego che per imparare bisogna fare (doh!), che il corso è in realtà un laboratorio, e senza PC è inutile. Invece di raffazzonare qualcosa al volo, decido di rimandare il tutto di una settimana.

Già che c’ero, mi son detto “conosciamoci meglio” e mi sono fatto raccontare come usano Excel, che tipo di problemi hanno, e ho fatto vedere alcuni strumenti che potrebbero essere loro utili, promettendo che ci avremmo lavorato durante il corso.

Finale a sorpresa:

Insomma, ho buttato la mattina per niente, dove niente è la mia retribuzione. Ma il cliente è rimasto molto contento, e vuole che tenga lo stesso corso per tutti i membri della sua associazione.

Morale della storia:

Sento dire spesso, e Amazon insegna, che “l’assistenza clienti è il nuovo marketing”. Ebbene, è vero.

Trasformare una data estesa inglese in data di Excel Italiano

In un foglio di Excel ho inserito una query a una pagina web inglese. Una delle colonne si chiama Last report e contiene una data/ora in inglese, scritta così:
12 January 2020 11.00.

A causa del mese in inglese e del punto separatore tra ora e minuti, Excel riconosce la stringa come testo. A me invece serve come data di Excel, ovvero così:
12/01/2020 10:00.

Per prima cosa, in un nuovo foglio ho inerito i mesi inglesi nella colonna A e un numero progressivo da 1 a 12 nella colonna B. Ho dato il nome mesi all’intervallo A1:B:12.

Per ricostruire la data ho usato prima di tutto la funzione =SE.ERRORE(), perché “Last report” può anche essere vuota; al suo interno ho inserito la funzione DATA(ANNO;MESE;GIORNO) a cui ho sommato le ore facendo attenzione a quanto segue:

  • I nomi dei mesi hanno lunghezze diverse, per cui STRINGA.ESTRAI() da solo non basta
  • I minuti sono sempre a zero
  • Le formule di testo restituiscono testo, ma per sommare l’ora alla data ho bisogno dell’ora come numero; inoltre il numero che mi serve non è l’intero ma il suo ventiquattresimo (per Excel un giorno vale 1 e un’ora vale 1/24)
  • La cella risultato usa la formattazione personalizzata
    gg/mm/aaaa hh:mm

Per ottenere l’ANNO:
SINISTRA(DESTRA([@[Last Report]];10);4)

Per ottenere il MESE:
CERCA.VERT(STRINGA.ESTRAI([@[Last Report]];4;LUNGHEZZA([@[Last Report]])-14);mesi;2;0)

Per ottenere il GIORNO:
SINISTRA([@[Last Report]];2)

Per ottenere le ORE:
NUMERO.VALORE(SINISTRA(DESTRA([@[Last Report]];5);2))/24

La formula finale è questa:
=SE.ERRORE(DATA(SINISTRA(DESTRA([@[Last Report]];10);4);CERCA.VERT(STRINGA.ESTRAI([@[Last Report]];4;LUNGHEZZA([@[Last Report]])-14);mesi;2;0);SINISTRA([@[Last Report]];2))+NUMERO.VALORE(SINISTRA(DESTRA([@[Last Report]];5);2))/24;”-“)

Excel: Le Tavole della Legge

Una recente discussione nata da un post di Leonardo Tondelli su facebookmi ha fatto riflettere su come sia facile, in Excel, partire male e commettere errori che ci complicheranno irrimediabilmente la vita nel futuro.Ho pensato di annotarmi qui, in forma di “Dieci Comandamenti”, le cose fondamentali da fare o da non fare per un utilizzo facile, veloce ed efficiente di Excel. Ecco a voi

I 10 Comandamenti di Excel

1. Non inserirai righe vuote o colonne vuote nelle tue tabelle
2. Non allineerai al centro le colonne di numeri
3. Non userai il tasto Backspace (←) per cancellare una cella
4. Non userai il pulsante “Unisci e allinea al centro”
5. Non cliccherai fuori per uscire da una formula
6. Userai gli Stili al posto della formattazione di carattere
7. Formatterai i tuoi elenchi con il pulsante “Formatta come tabella”
8. Non metterai due tabelle nello stesso foglio
9. I tuoi dati saranno tutti in una sola tabella in un solo foglio
10. I tuoi dati si estenderanno verso il basso e non verso destra

Excel: sostituire i caratteri accentati

Speravo che con l’introduzione di Unicode (il draft proposal è del 1980!) queste cose non fossero più necessarie, e invece.

Anna si occupa delle registrazioni a conferenze con migliaia di partecipanti. Uno dei suoi problemi è l’elenco degli iscritti è composto in realtà da più elenchi compilati da più persone in più paesi con diversi layout di tastiera. Un altro problema è che gli elenchi contengono doppioni, ma scritti a volte in modo diverso.

In queste condizioni, un semplice “Rimuovi duplicati” non serve a nulla, occorre lo strumento “santa manina”. Ma una macro che rimuova tutti i caratteri accentati e li sostituisca con i corrispettivi non accentati aiuta per lo meno a sgrossare il lavoro. La metto qui, casomai dovesse servire ad altri:

Sub CaratteriSpeciali()

'Sostituisce tutti i caratteri accentati con il corrispondente non accentato

Const AccChars = "šžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ"
Const RegChars = "szYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy"

For i = 1 To Len(AccChars)
A = Mid(AccChars, i, 1)
B = Mid(RegChars, i, 1)
Selection.Replace What:=A, Replacement:=B, MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False
Next

Selection.Replace What:="ß", Replacement:="ss", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

End Sub

La sostituzione di “ß” con “ss” l’ho fatta separatamente, dato che non si trattava di una sostituzione uno-a-uno.

Come sempre, se sai come migliorare il codice, sono tutto orecchi.

 

Errori nella condivisione dei dati

Quali sono gli errori commessi dagli analisti quando distribuiscono il loro lavoro ai colleghi?

Risponde Ken Gross, Chief Data Scientist presso The Chartis Group:

Tutte le analisi cercano di rispondere a precise domande o gruppi di domande. Nel distribuire i risultati ai colleghi, gli analisti spesso dimenticano di specificare chiaramente quale era la domanda che ha guidato la loro analisi. Gli analisti dovrebbero sempre specificare chiaramente, prima dei risultati, a quali domande si sta cercando di rispondere.

Inoltre, il processo di analisi è spesso iterativo, dove un primo gruppo di domande porta a nuove o più precise domande. Nel presentare i risultati, gli analisti dovrebbero incoraggiare gli interessati a combinarli con le loro conoscenze ed esperienze, per fare in modo che il processo iterativo diventi anche collaborativo

(da distinct values)