Ken si chiede se esiste una funzione del foglio di lavoro che indicherà se il contenuto di una cella è in grassetto. Può trovare altre funzioni informative, come ISBLANK, ma non riesce a trovarne una che indichi se la cella è in grassetto.

Non esiste alcuna funzione ISBOLD incorporata in Excel. Esiste un modo molto arcano per farlo senza ricorrere a una macro, ma funziona solo con alcune versioni di Excel. Apparentemente, ad esempio, questo approccio non funzionerà con Office 365, poiché sembra che Microsoft abbia finalmente rimosso il supporto per esso. Questa vecchia funzione di Excel 4, chiamata GET.CELL, funzionerà con alcune versioni precedenti di Excel. Ecco come lo useresti in una formula:

=IF(GET.CELL(20,A1), "Bold", "Not Bold")

La funzione GET.CELL restituisce True se almeno il primo carattere nella cella è in grassetto.

Un approccio migliore sarebbe creare una funzione definita dall’utente in VBA che potrebbe essere chiamata dal foglio di lavoro. Ecco una semplice versione di tale UDF:

Function CheckBold(cell As Range) As Boolean     Application.Volatile     CheckBold = cell.Font.Bold End Function

Per usarlo nel tuo foglio di lavoro, dovresti farlo in questo modo:

=IF(CheckBold(A1), "Bold", "Not Bold")

La funzione CheckBold si aggiornerà solo quando il foglio di lavoro viene ricalcolato, non se si applica semplicemente la formattazione in grassetto o lo si rimuove dalla cella A1.

Questo approccio può funzionare per la maggior parte dei casi, ma tieni presente che la proprietà Bold può effettivamente avere tre impostazioni possibili: True, False e Null. La proprietà è impostata su False se nessuno dei caratteri nella cella è in grassetto. È impostato su True se sono tutti in grassetto. Infine, è impostato su Null se solo alcuni dei caratteri nella cella sono in grassetto. Se pensi di poter incappare in questa situazione, dovrai modificare la funzione CheckBold:

Function CheckBold(cell As Range) As Integer     Dim iBold As Integer

Application.Volatile

iBold = 0     If IsNull(cell.Font.Bold) Then         iBold = 2     Else         If cell.Font.Bold Then iBold = 1     End If

CheckBold = iBold End Function

Notare che la funzione ora restituisce un valore, compreso tra 0 e 2. Se restituisce 0, non c’è grassetto nella cella. Se restituisce 1, l’intera cella è in grassetto. Se restituisce 2, allora c’è un grassetto parziale nella cella.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (13733) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 e Excel in Office 365.