005. Calcolo importo maggiorazioni

Download PDF

Lucia ci ha chiesto:

la cella A1 contiene il valore minuti: 185
i primi 60 minuti vanno pagati tot. euro;
dal 61 a 120 vanno pagati maggiorati del 5%;
dal 121 al 185 vanno pagati maggiorati del 10%.
NOTA: il valore nella cella A1 è variabile.
Che formula devo inserire per il calcolo?
ringrazio anticipatamente per l\’aiuto

—-

Ciao Lucia,

in allegato trovi il file con la formula richiesta

Calcolo maggiorazioni

Riccardo Vincenti

 

004. Aprire FileDialog per selezionare file

Download PDF

Domanda:

Complimenti per il sito…molto interessante
Avrei bisogno di visualizzare un diagramma ad albero (tipo quello che si visualizza con esplora risorse di windows) all\’apertura di excel oppure word, per poterci collegare dei file sia di excel, word, pdf, ecc. in modo di avere una visione generale della struttura del progetto, con possibilità di apertura dei singoli file. Spero di essermi spiegato bene. Saluti

Risposta:

di seguito il codice che lancia il file dialog di Windows
e permette di aprire i file che ti interessano:

Public Sub SelezionaFileDaAprire()

Dim fDialog As Office.FileDialog

Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
Dim selezione As Variant
Dim PercorsoStandard As String

  PercorsoStandard = "C:\"    'inserisci il percorso che desideri aprire di default

With fDialog
    .AllowMultiSelect = False
    .Title = "Seleziona il file da aprire"
    .InitialFileName = PercorsoStandard

    If .Show = -1 Then
        For Each selezione In .SelectedItems
            FileDaAprire = selezione
            ActiveWorkbook.FollowHyperlink Address:=FileDaAprire
        Next
    Else
        MsgBox "Caricamento annullato!", vbInformation  'quanto premi ‘cancella’ la macro si stoppa
        Exit Sub
    End If
End With
Set selezione = Nothing
Set fDialog = Nothing
End Sub

A voi il file:
APRI

Riccardo Vincenti

003. Bloccare riga durante scorrimento

Download PDF

Domanda:

Come posso fare per mantenere sempre in vista il titolo di un foglio di lavoro excel mentre scorro in basso lo stesso foglio. Grazie per la collaborazione.

Risposta:

Per ottenre il risultato puoi usare il ‘Blocca riquadri’ presente nel menu’ ‘Visualizza’.
Potrai scegliere se bloccare la prima riga o un gruppo di righe

Riccardo Vincenti

002. Info su altezza cella tramite VBA

Download PDF

Domanda:

Vorrei sapere se esiste una funzione o istruzione VBA che permette la visualizzazione dell’ALTEZZA delle celle [esempio: in H13 “=CELLA(“larghezza”;G13)”]

Risposta:

Qui abbiamo scritto una semplice funzione che fa quanto richiesto:

Function RiportaAltezzaCella(a As Range) As Double

    Application.Volatile True
    RiportaAltezzaCella = a.Height

End Function

La funzione si aggiorna ogni volta che Excel esegue un ricalcolo. Attenzione quindi: non si aggiorna ogni volta che modificatel l’altezza ma bensi appna utilizzate la cella per un calocolo

potete scaricare qui il file di esempio:

Altezzacella

Riccardo Vincenti

001. Riportare somma tramite VBA

Download PDF

Domanda:

Scopiazzando sul web sono riuscito a creare la seguente macro che
vorrei modificare:
Private Sub Worksheet_Activate()
Dim wSheet As Worksheet
Dim l As Long
l = 1
With Me
.Columns(1).ClearContents
.Cells(1, 1) = \”ELENCO GIOCATORI\”
.Cells(1, 2) = \”IMPORTO Assegnato\”
.Cells(1, 1).Name = \”Sommario\”
End With

For Each wSheet In Worksheets
If wSheet.Name <> Me.Name Then
l = l + 1
With wSheet
.Range(\”A1\”).Name = \”Start\” & wSheet.Index
.Hyperlinks.Add Anchor:=.Range(\”A1\”), Address:=\”\”, SubAddress:= _
\”Sommario\”, TextToDisplay:=\”Torna al Sommario\”

End With
Me.Hyperlinks.Add Anchor:=Me.Cells(l, 1), Address:=\”\”, _
SubAddress:=\”Start\” & wSheet.Index, TextToDisplay:=wSheet.Name
End If
Next wSheet
End Sub

questa crea un sommario automatico dei fogli di lavoro
presenti in una cartella excel.
Mi occorrerebbe inserire nella colonna B il totale del foglio di
lavoro relativo.
Potreste aiutarmi cortesemente?
vi ringrazio anticipatamente ….

——-

Risposta:

negli sheet 2,3,4 ho inserito in posizioni diverse a titolo didattico, una colonna dove puoi inserire gli importi che verranno sommati e mostrati nello sheet ‘Sommario’. Ho parametrizzato infatti il codice per permetterti di collocare la colonna dove prefierisci. La macro viene lanciata automaticamente al verificarsi dell’evento Workbook_Open e può essere eseguita anche premendo il bottone ‘Aggiorna’.

In allegato trovi il file con i commenti inseriti direttamente nel modulo VBA.

Importo Assegnato

Riccardo Vincenti

Formattazione condizionale con celle che lampeggiano

Download PDF

Mi è stato richiesto da più fonti di avere la possibilità di creare una formattazione condizionale tale per celle in Excel possano lampeggiare se una certa condizione sia stata verificata o meno.

Purtroppo tale funzionalità non è disponibile in Excel in modo nativo e non c’é modo per integrarla.

La procedura migliore sarebbe quella di attribuire a una cella un metodo che possa permettere il lampeggio (o flashing) ma questo non è possibile.

Si può però optare per un trucco con un foglio Excel addizionale, a lato del foglio di lavoro.

Tale foglio addizionale conterrà i link alle celle che si vuole “far lampeggiare” e le condizioni che devono essere verificate per il lampeggio.

Ho preparato quindi il foglio che qui troverete che dovrà essere aperto assieme  al foglio Excel le cui celle vorrete far lampeggiare.

Il foglio conterrà i link alle celle, i criteri di lampeggio e i formati del lampeggio.

procedura per avere le celle lampeggianti:

Cominciamo dal file di esempio:

  1. scaricate il file qui: Flashing_cells
  2. Scompattate i due file in una directory
  3. aprite entrambi i file: un file è ukl file di esempio che contiene le celle che dovranno lampeggiare, il secondo è il file master che contiene i link alle celle che dovranno lampeggiare e i criteri di lampeggio
  4. Abilitate le macro sul file master
  5. cambiate lo stato da OFF a ON

flashing-on-off

A questo punto, se tutto è corretto andate sul foglio di esempio. le celle dovrebbero lampeggiare.

Divertitevi pure a cambiare i criteri o i valori o ancora i formati delle celle, le celle e il lampeggio dovrebbe adeguarsi automaticamente

Come fare per usare questa funzionalità con le proprie celle Excel

Modificate i link nella colonna A e cambiate i criteri di lampeggio:

flashing-link

 

fintanto che il file master è aperto, le celle, se vengono rispettate le condizioni, lampeggeranno

Ho inserito 4 diversi criteri di lampeggio: higher than, lower than, between e out of. Credo che le logiche che essi applicano sono sufficientemente semplici da non meritare una spiegazione dettagliata

Attenzione solo ai criteri between e out of: se scambiate tra loro upper e lower limit il criterio stesso non funzionerà.

se scrivete i criteri in modo errato nelle celle, non funzioneranno. Basta anche solo mettere una lettera maiuscola per impedirne il funzionamento.

Se fate qualche link strano la macro che gestisce il lampeggio si incastrerà. Vi consiglio dis tare molto attenti.

Svantaggi di questa soluzione:

  1. la funzionalità Undo viene persa. Non chiedetemi perché: non ne ho la minima idea, so solo che se fate qualcosa di sbagliato nei vostri fogli Excel, non potrete tornare indietro.
  2. Il lampeggio avviene solo una volta al secondo: non è possibile modificare la frequenza
  3. Il file master deve essere aperto.

Il file permette di linkare fino a  dieci celle e di gestire quindi dieci lampeggi. Questo è voluto: su consiglio di un amico lettore metto a disposizione gratuitamente solo una versione limitata. Se siete interessati a una versione con un numero maggiore di celle potete contattarmi a questo indirizzo mail.

Come formattare un numero in una frase con CONCATENA

Download PDF

Può capitare di voler fare in modo che ci siano all’interno del foglio delle scritte del tipo:

– il totale dei ricavi è 1.344,34

– L’incidenza di xyz è del 57,32%

On verità la formula più semplice non funziona. Immaginiamo di avere nella cella A1 il valore 57,32%. nella cella A2 potremo scrivere:

=”L’incidenza di xyz è del “&A1

o alternativamente:

=CONCATENA (“L’incidenza di xyz è del “;A1)

Il risultato sarà:

L’incidenza di xyz è del 0,5732

E’ necessario formattare i numeri. La funzione da usare è TESTO (in inglese TEXT) usando come formato quello voluto, per intenderci, quello presente nella cella che si vuole “replicare” nel testo:

=”L’incidenza di xyz è del “&TESTO(A1,”#.##%”)

se si vogliono due decimali nella percentuale.

I formati sono disponibili premendo CRTL+1 nella cella excel interessata:

formati_custom

Altri esempi sono i seguenti:

formato mmss

e altri, anche stravaganti, si possono creare ad-hoc.

potete vedere un elenco di possibili scelte nel primo capitolo del manuale excel che abbiamo pubblicato

formati_concatena

la funzione INDIRETTO e la funzione INDIRIZZO

Download PDF

La funzione INDIRETTO permette di recuperare un dato presente in un’altra cella del foglio di lavoro indicandone direttamente l’indirizzo della stessa.

 

La procedura più semplice è scrivere:

=INDIRETTO("A1")

questa funzione EQUIVALE a scrivere

=A1

Vista semplicemente in questo modo la funzione INDIRETTO sembra assolutamente inutile.

In realtà aggiunge un livello di flessibiltà interessante ad Excel. Se infatti si costruisce in modo furbo la stringa che rappresenta la cella all’interno di INDIRETTO è possibile recuperare in modo rapido informazioni che sono disperse nel file Excel; è sufficiente che queste siano distribuite sul foglio con uno schema.

Per usare INDIRETTO bisogna conoscere INDIRIZZO

Per poter usare efficacemente la funzione INDIRETTO è necessario costruire il nome delle celle da cui fare riferimento in modo semplice.

Ci viene in contro la funzione INDIRIZZO: questa funzione, inserendo il numero di riga, il numero di colonna e il nome del foglio costruisce il nome della cella:
Ad esempio la formula

INDIRIZZO (1;1;1)

restituisce il valore A1

il primo 1 indica la riga (la prima appunto), il secondo 1 indica la colonna (la A) e il terzo uno indica che la formula deve essere calcolata usando il riferimento assoluto. Si tratta in sostanza di una funzione che gioca a battaglia navale sul foglio Excel.

La combinazione di INDIRETTO e INDIRIZZO può fare cose molto interessanti.

Vediamo ora un caso pratico:

Se per caso vi ritrovate con un file Excel che è strutturato come nell’immagine seguente:

indiretto_01

e volete riportare i dati nel foglio di sintesi dovete fare un sacco di collegamenti del tipo:

=attivita!B3
=attivita!D5
etc..

La cosa diventa complicata e noiosa se ci sono tanti link da fare. In certi casi potrebbero essercene anche centinaia.

Se si osserva il file però si nota una certa regolarità nelle posizioni delle celle dove si vogliono raccogliere i dati.
Il nome dell’attività è spaziato ogni 6 righe: lo ritroviamo infatti alla riga 3, alla 9, alla 15 etc.
Rispetto alla posizione del nome dell’attività, il primo numero da riportare si trova due righe più in basso e due colonne più a destra.
Il successivo numero si trova una riga sotto e l’ultimo numero si trova ancora una riga più sotto.

Vediamo come costruire con INDIRETTO e INDIRIZZO una formula che possa permettere di raccogliere tutti questi numeri in una tabella:

Per prima cosa partiamo dalla funzione INDIRIZZO:
la formula =INDIRIZZO(3;2;1;;”attivita”) permette di calcolare l’indirizzo della cella alla riga 3, colonna 2 del foglio attivita. Il suo risultato sarà:

“attivita!$B$3″

Ora con la funzione =INDIRETTO(INDIRIZZO(3;2;1;;”attivita”)) potremo recuperare il dato presente in questa cella (cfr immagine sopra) e ottenere il testo “Attività A”
Sostituiamo ora al numero di riga (3) il riferimento a una cella che conterrà il dato 3. Apparentemente non cambia nulla ma a questo punto potremo trascinare la cella che contiene INDIRETTO verso il basso e scrivere nella nuova cella di riferimento il valore 9 invece che 3.

In qeusto modo la seconda formula INDIRETTO (identica alla prima) recuperà il dato dalla cella B9 invece che B3.

indiretto_02

Per poi recuperare gli altri dati basterà ad esempio inserire la formula:

=INDIRETTO(INDIRIZZO($A5+2;4;1;;”attivita”))

che rispetto alla precedente recupera il dato che si trova 2 righe più sotto alla formula precedente e alla colonna D (numero 4) dello stesso foglio.
Giocando con questo tipo di logica potremo rapidissimamente riorganizzare i dati in forma tabellare (l’unica che dovrebbe invero essere utilizzata!!)

si veda il file allegato di esempio:

Indiretto_01