Keith ha un foglio di lavoro che utilizza le colonne dalla A alla H. Vorrebbe essere in grado di ampliare ogni colonna di un importo proporzionale. Ad esempio, se seleziona tutte le 8 colonne, sarebbe fantastico se potesse afferrare il bordo destro della colonna H e mentre trascina a destra, tutte le colonne sarebbero spaziate proporzionalmente. Si chiede se c’è un modo per fare questo tipo di allargamento della colonna.

Per capire meglio di cosa parla Keith, forse serve un esempio. Il modo normale di regolare la larghezza delle colonne utilizzando il mouse consiste nel selezionare le colonne e quindi trascinare un divisore tra le intestazioni delle colonne a destra oa sinistra. Supponiamo che la larghezza della colonna A sia 5, la colonna B sia 10 e la colonna C sia 15. Se selezioni A: C e trascini il divisore sul lato destro dell’intestazione della colonna C su 20, si tratta di un aumento del 33% per colonna C. Idealmente, entrambe le colonne A e B sarebbero anch’esse ridimensionate del 33% (come Keith desidera), ma sono invece entrambe impostate su una larghezza di 20 per corrispondere alla colonna C.

Inoltre, tenere premuto un tasto modificatore (Ctrl, Alt o Maiusc) mentre trascini il mouse non ha alcun effetto; le larghezze delle colonne sono ancora tutte uguali tra loro. Se provi a fare clic con il pulsante destro del mouse e trascinare, non fa altro che visualizzare un menu contestuale. Pertanto, da tutti i test che siamo stati in grado di eseguire, non c’è modo di regolare proporzionalmente la larghezza delle colonne in Excel che siamo stati in grado di scoprire.

Forse il modo più semplice è utilizzare una macro per regolare la larghezza delle colonne.

Quello che segue è un buon esempio di tale approccio.

Sub ProportionalWidth()

Dim C As Range     Dim sRaw As String     Dim sTemp As String     Dim P As Single

sRaw = InputBox("Increase width by how what % (0 to 100)?")

P = Val(sRaw)

If P >= 0 And P <= 100 Then         P = 1 + (P / 100)

sTemp = ""

For Each C In Selection.Columns             sTemp = sTemp & "Column " & ColumnLetter(C.Column)

sTemp = sTemp & ": " & C.ColumnWidth & " ==> "

C.ColumnWidth = C.ColumnWidth * P             sTemp = sTemp & C.ColumnWidth & vbCrLf         Next C         MsgBox sTemp     Else         MsgBox "Out of range; no adjustment made"

End If End Sub
Function ColumnLetter(Col As Long) As String     Dim Arr     Arr = Split(Cells(1, Col).Address(True, False), "$")

ColumnLetter = Arr(0)

End Function

In realtà ci sono due macro in questo esempio. Il primo (ProportionalWidth) cambia la larghezza di qualunque colonna tu abbia selezionato. La seconda (ColumnLetter) viene utilizzata per convertire un numero di colonna numerico nelle lettere di colonna. Viene utilizzato solo per mettere insieme il report (in sTemp) delle larghezze prima e dopo le colonne.

Quando selezioni le colonne ed esegui la macro, ti viene chiesto di quanto più ampia desideri rendere quelle colonne. Immettere un numero compreso tra 0 e 100, fare clic su OK e le colonne verranno ampliate di quella percentuale. Inoltre, vedrai una finestra di messaggio che mostra la larghezza originale di ogni colonna e la larghezza regolata.

Notare che questa macro allarga solo le colonne. Se vuoi usarlo anche per rendere le colonne proporzionalmente più strette, dovresti modificarlo, forse, per gestire valori negativi.

_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 (13429) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.