Capita avvolte di dover convertire un numero di minuti nel corrispondente (ore,minuti).
Se il valore da convertire si trova nella cella "A1", la funzione che esegue la conversione in excel é:
=(TRONCA(A1/60)+(((A1/60)-TRONCA(A1/60)))*60/100)
...ottime conversioni!
lunedì 8 giugno 2015
domenica 7 giugno 2015
Scacchiera e Dama in Excel
Qualche tempo fa mi venne un idea, quella di sviluppare in Excel il gioco della Dama. Il tempo è poco e l'idea non si è poi concretizzata fino in fondo, è rimasto comunque un po di codice che può sempre tornare utile per altre applicazioni.
La parte di applicazione che pubblico consiste in una scacchiera (8x8) sulla quale vengono disposte delle pedine. L'applicazione consente di spostare le pedine tramite un doppio click del mouse. Il primo doppio click preleva la pedina, il secondo la deposita in una nuova cella.
Per iniziare costruiamo la scacchiera formattando 8 righe e 8 colonne di un foglio di calcolo in maniera che sembrino quadrati. Nella Fig. 1 ho impostato la larghezza delle colonne al valore di 6,57, l'altezza delle righe al valore di 30,75. Successivamente ho impostato il colore di riempimento delle celle con il nero a celle alterne.
Const strAvviso As String = "Mossa non consentita!"
_______________________________________________________________________________
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
'
If cellaTemp Is Nothing Then 'se cellaTemp è Nothing la mossa è di partenza se Not Nothing è di arrivo
If ActiveCell.Value = "" Then 'la cella di partenza non deve essere vuota
MsgBox strAvviso, vbExclamation, "Dama"
Else
Set cellaTemp = ActiveCell
End If
Else
If ActiveCell.Interior.ColorIndex = 1 Then 'verifica che la cella di arrivo sia nera
With ActiveCell
.Value = cellaTemp.Value
.Font.ColorIndex = cellaTemp.Font.ColorIndex
End With
cellaTemp.ClearContents
Set cellaTemp = Nothing
Else
MsgBox strAvviso, vbExclamation, "Dama"
Set cellaTemp = Nothing
End If
End If
Range("A1").Select
'
End Sub
La parte di applicazione che pubblico consiste in una scacchiera (8x8) sulla quale vengono disposte delle pedine. L'applicazione consente di spostare le pedine tramite un doppio click del mouse. Il primo doppio click preleva la pedina, il secondo la deposita in una nuova cella.
Per iniziare costruiamo la scacchiera formattando 8 righe e 8 colonne di un foglio di calcolo in maniera che sembrino quadrati. Nella Fig. 1 ho impostato la larghezza delle colonne al valore di 6,57, l'altezza delle righe al valore di 30,75. Successivamente ho impostato il colore di riempimento delle celle con il nero a celle alterne.
Fig. 1 - Costruzione della scacchiera
Impostare il tipo di carattere di queste celle su "Wingdings", dimensione carattere 26.
Definire come colore del carattere di alcune celle ad esempio il rosso, per altre ad esempio il giallo. Sulle celle in cui è stato definito un colore (giallo o rosso) inserire il carattere 108 (ALT +108). Dopo queste operazioni la scacchiera dovrebbe apparire come in Fig. 2
Fig. 2 - Disposizione delle pedine
Aprire ora l'editor VBA e all'interno della finestra di Gestione progetti (tasti veloci CTRL+R se non è visualizzata) dare un doppio click sul foglio in cui è stata disegnata la scacchiera.
Nel primo combo in alto a sinistra dovrebbe essere selezionato l'oggetto "Worksheet" in quello di destra selezionare l'evento "BeforeDoubleClick". L'edito VBA inserisce dunque una routine che si attiva dopo aver fatto doppio click su una qualsiasi cella del foglio selezionato.
Il parametro più importante della routine è "Target" che rappresenta la cella (il range) su cui si è fatto doppio click.
Prima della routine inserire una variabile per il passaggio dei dati tra 2 lanci consecutivi della routine stessa e una costante string come messaggio da visualizzare quando si tenta di spostare una pedina da una cella nera a una bianca.
Il codice completo della routine è allora:
========================================================================
Dim cellaTemp As Range 'variabile temporaneaConst strAvviso As String = "Mossa non consentita!"
_______________________________________________________________________________
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
'
If cellaTemp Is Nothing Then 'se cellaTemp è Nothing la mossa è di partenza se Not Nothing è di arrivo
If ActiveCell.Value = "" Then 'la cella di partenza non deve essere vuota
MsgBox strAvviso, vbExclamation, "Dama"
Else
Set cellaTemp = ActiveCell
End If
Else
If ActiveCell.Interior.ColorIndex = 1 Then 'verifica che la cella di arrivo sia nera
With ActiveCell
.Value = cellaTemp.Value
.Font.ColorIndex = cellaTemp.Font.ColorIndex
End With
cellaTemp.ClearContents
Set cellaTemp = Nothing
Else
MsgBox strAvviso, vbExclamation, "Dama"
Set cellaTemp = Nothing
End If
End If
Range("A1").Select
'
End Sub
========================================================================
(A seconda dello schermo e delle impostazioni del browser in uso il codice può apparire più o meno in linea, eventualmente per un utilizzo conviene fare il copia-incolla)
Salvare il tutto con l'attivazione delle macro, chiudi e riapri il foglio attivando le macro. Una volta fatto il doppio click su una cella contenente una pedina, facendo un nuovo doppio click su una cella vuota la pedina viene spostata.
Buon riutilizzo!
Excel - Riempimento automatico di celle vuote con il valore immediatamente sopra
Excel 2007. Capita avvolte di dover riempire una serie di
celle (spesso anche molte) con i valori della cella immediatamente sopra. In
generale questo accade quando si utilizza excel come database di dati senza voler digitare di volta in volta i valori corrispondenti per ciascun record inserito,
ma soltanto ad ogni variazione di riga.
Prendiamo
ad esempio un insieme di celle costituito da 3 colonne x 13 righe. Nell'esempio
di Fig. 1 questo insieme è popolato da alcune celle contenenti dei dati
(colori) altre vuote.
Fig. 1
- insieme dati da completare
Se si vuole riempire ogni cella vuota con il contenuto
immediatamente sopra, si può procedere in questo modo.
Selezionare con il pulsante SX del mouse l'area rettangolare
(righe e colonne) che si vuole popolare, successivamente individua il comando "Trova
e Seleziona -> Vai a formato speciale..."
(nelle versioni precedenti di excel, bisogna andare nel "menù modifica
-> vai... -> speciale...")
Fig. 2 - comando Vai
a formato speciale...
selezionare il pulsante "Celle vuote" come in Fig.
3
Fig. 3
- Pulsante "Celle vuote"
Nell'area
individuata ora saranno selezionate solo le celle non contenenti dei dati Fig.
4
Fig. 4 - Selezione di
celle vuote
A questo punto digitare "=" e la freccetta
"SU" dei tasti direzionale. Questo comando dice ad excel di inserire
nella prima cella dei dati una formula che richiama il dato immediatamente
sopra. Per ricopiare la formula su tutte le rimanenti celle selezionate al
passo precedente bisogna premere la combinazione di tasti "Ctrl +
<INVIO>".
Il risultato sarà:
Fig. 5 - Risultato
finale
Per rimuovere dall'area le formule e lasciare i valori,
basterà riselezionare l'area corrente con il tasto SX del mouse, dare un
comando di copia e successivamente incolla valori.
Iscriviti a:
Post (Atom)
Converti Minuti in Ore,Minuti
Capita avvolte di dover convertire un numero di minuti nel corrispondente (ore,minuti). Se il valore da convertire si trova nella cella ...
-
Qualche tempo fa mi venne un idea, quella di sviluppare in Excel il gioco della Dama. Il tempo è poco e l'idea non si è poi concretizzat...
-
Excel 2007. Capita avvolte di dover riempire una serie di celle (spesso anche molte) con i valori della cella immediatamente sopra. In gene...