Excel Forum Per condividere esperienze su Microsoft Excel

Dimensionare la larghezza delle colonne in base al valore numerico nelle celle

  • Messaggi
  • OFFLINE
    Anthony D'Acunto
    Post: 146
    Registrato il: 24/07/2013
    Città: SALERNO
    Età: 52
    Utente Junior
    Excel LTSC 2021
    00 06/12/2023 20:30
    Buonasera a tutti gli utenti del Forum.
    Chiedo cortesemente una soluzione VBA, non alla mia portata e non trovata sul Web, riguardo all'esigenza in oggetto:

    Vorrei poter dimensionare automaticamente la larghezza delle colonne di un foglio di lavoro
    in base a valori numerici definiti, inseriti nelle celle in 'riga 1'.
    Esempio:
    in cella 'A1' è inserito il valore numerico 9,14
    in cella 'B1' è inserito il valore numerico 3,43
    in cella 'C1' è inserito il valore numerico 5,29 e così via

    quando lancio la macro, vorrei che la larghezza di

    colonna 'A' sia adattata automaticamente a 9,14
    colonna 'B' sia adattata automaticamente a 3,43
    colonna 'C' sia adattata automaticamente a 5,29 e così via.

    Naturalmente, nelle celle vuote in 'riga 1' la larghezza delle relative colonne non subisce variazione.

    Allego file di esempio e ringrazio anticipatamente per una risposta.
    Buona serata

    P.S. Riga 1 ha il formato numero con due decimali, ma può essere formattata anche diversamente.
    Windows 10 - Excel LTSC
  • OFFLINE
    L2018
    Post: 949
    Registrato il: 02/04/2018
    Città: PESCARA
    Età: 75
    Utente Senior
    EXCEL 2016 - SPREAD32
    00 06/12/2023 20:35
    non è praticamente la stessa domanda del 27 ottobre con 5 STELLE ?

    LEO
    https://t.me/LordBrum
  • OFFLINE
    Anthony D'Acunto
    Post: 146
    Registrato il: 24/07/2013
    Città: SALERNO
    Età: 52
    Utente Junior
    Excel LTSC 2021
    00 06/12/2023 21:01
    Re:
    Lo stesso argomento, non la stessa domanda.
    'Praticamente' è l'inverso
    (Vedo che quella discussione ti è rimasta impressa nella memoria 😆
    L2018, 06/12/2023 20:35:

    non è praticamente la stessa domanda del 27 ottobre con 5 STELLE ?




    Windows 10 - Excel LTSC
  • OFFLINE
    L2018
    Post: 950
    Registrato il: 02/04/2018
    Città: PESCARA
    Età: 75
    Utente Senior
    EXCEL 2016 - SPREAD32
    00 06/12/2023 21:14
    Re: Re:
    adesso non ho la calma per verificare che sia l'inverso, te la do per buona

    ma quella discussione, o per meglio dire quella precedente del 24 ottobre, mi è effettivamente rimasta impressa, e non ho difficoltà a dirlo, per 2 motivi
    - il modo perfetto di scrivere in italiano (cosa introvabile)
    - il tentativo (più di così non posso chiamarlo) di giustificare l'attribuzione dei voti ad una conversazione, sia pur condotto con ottima dialettica ma con scarse motivazioni

    LEO
    https://t.me/LordBrum
  • OFFLINE
    L2018
    Post: 951
    Registrato il: 02/04/2018
    Città: PESCARA
    Età: 75
    Utente Senior
    EXCEL 2016 - SPREAD32
    00 06/12/2023 21:19
    tuttavia prima della mia ultima risposta ho visto il tuo problema ricorrente della larghezza delle colonne,almeno in certi casi, e ho voluto fare una prova volenterosa
    ho notato che se il controllo convalida dati occupa piu di una casella, succede che anche la parola precipitevolissimevolmente viene visualizzata per intero al momento della interrogazione.
    Purtroppo è un risultato statico, non funziona ad organetto

    LEO
    https://t.me/LordBrum
  • OFFLINE
    federico460
    Post: 3.147
    Registrato il: 10/10/2013
    Città: VICENZA
    Età: 69
    Utente Master
    365
    10 06/12/2023 23:09
    ciao
    ciao Leo
    per curiosità e per imparare
    ho messo

    Sub sostituisci()
    Dim Lista As Range
    Set Lista = Range("A1:ZZ1")
    For Each CL In Lista
    If CL <> "" Then
    CL.ColumnWidth = CL.Value
    End If
    Next
    End Sub



    ho notato però che le misure vengono similari ma non uguali
    mi spieghi il perchè
    grazie

    nb
    se non si colorano di bianco le misure in riga 1
    vengono delle schifezze ####### se la misura è piccola
    [Modificato da federico460 06/12/2023 23:11]
  • OFFLINE
    Anthony D'Acunto
    Post: 147
    Registrato il: 24/07/2013
    Città: SALERNO
    Età: 52
    Utente Junior
    Excel LTSC 2021
    00 06/12/2023 23:29
    Re:
    Federico460, grazie per la risposta e per la tua soluzione.
    É perfetta.
    Riguardo al fatto che le misure ti vengano similari e non uguali al valore inserito in cella, credo che ciò avvenga quando il valore in questione, riguardo al suo frazionamento decimale, non rispecchi fedelmente quello predefinito della colonna:
    cioè
    0,14 - 0,29 - 0,43 - 0,57 - 0,71 - 0,86

    Quindi, se inserisci in cella 5,43 e lanci la macro, la larghezza della colonna sarà 5,43
    se inserisci in cella 5,48 e lanci la macro, la larghezza della colonna sarà sempre 5,43
    se inserisci in cella 5,54 e lanci la macro, la larghezza della colonna sarà 5,57 in quanto 5,54 è più vicino al frazionamento 0,57 rispetto a quello 0,43

    Almeno credo che questo sia, descritto 'maccheronicamente', il motivo.

    Quanto alle 'schifezze' ###### cui fai riferimento, è perchè la larghezza della colonna risulta troppo stretta in rapporto alla dimensione del carattere della cella.
    Occorrerà, al riguardo, andare sulla cella in questione --> Tasto destro --> Formato Celle --> Allineamento --> 'Flaggare' la casella 'Riduci e adatta' --> OK e il valore in cella si adatterà alla 'ristrettezza' della colonna.
    Per quanto possibile: in quanto se la colonna è molto stretta - es. inferiore a 1,43 - il carattere si ridurrà al punto da essere troppo piccolo per risultare leggibile.

    federico460, 06/12/2023 23:09:

    ciao
    ciao Leo
    per curiosità e per imparare
    ho messo

    Sub sostituisci()
    Dim Lista As Range
    Set Lista = Range("A1:ZZ1")
    For Each CL In Lista
    If CL <> "" Then
    CL.ColumnWidth = CL.Value
    End If
    Next
    End Sub



    ho notato però che le misure vengono similari ma non uguali
    mi spieghi il perchè
    grazie

    nb
    se non si colorano di bianco le misure in riga 1
    vengono delle schifezze ####### se la misura è piccola




    [Modificato da Anthony D'Acunto 06/12/2023 23:42]
    Windows 10 - Excel LTSC
  • OFFLINE
    L2018
    Post: 952
    Registrato il: 02/04/2018
    Città: PESCARA
    Età: 75
    Utente Senior
    EXCEL 2016 - SPREAD32
    00 06/12/2023 23:32
    Ciao Federico,ma....hai scritto a me ?
    Sono io che per curiosità e per imparare che ho preso e usato la tua macro che ha diligentemente funzionato ( stavo pensando pure io di inventarmene una che faceva il contrario di Rollis di giorni fa )
    ma l'altra domanda che mi fai mi sorprende, mica sono un maestro da interpellare
    o forse non ho capito bene, o non ce l'avevi con me ?
    forse domani ci si capisce meglio ?
    -------------
    capito, hai salutato entrambi ma hai risposto all'OP, ok
    [Modificato da L2018 06/12/2023 23:34]

    LEO
    https://t.me/LordBrum
  • OFFLINE
    federico460
    Post: 3.148
    Registrato il: 10/10/2013
    Città: VICENZA
    Età: 69
    Utente Master
    365
    10 07/12/2023 00:31
    ciao
    Quanto alle 'schifezze' ###### cui fai riferimento, è perchè la larghezza della colonna risulta troppo stretta in rapporto alla dimensione del carattere della cella.
    Occorrerà, al riguardo, andare sulla cella in questione --> Tasto destro --> Formato Celle --> Allineamento --> 'Flaggare' la casella 'Riduci e adatta' --> OK e il valore in cella si adatterà alla 'ristrettezza' della colonna.
    Per quanto possibile: in quanto se la colonna è molto stretta - es. inferiore a 1,43 - il carattere si ridurrà al punto da essere troppo piccolo per risultare leggibile.


    beh! questo lo sapevo ma pensavo volessi lasciare il carattere com'era e nasconderlo.

    sistemiamo tutto così

    Sub sostituisci()
    Dim Lista As Range
    Set Lista = Range("A1:ZZ1")
    For Each CL In Lista
    If CL <> "" Then
    CL.ColumnWidth = CL.Value
    CL.ShrinkToFit = True
    End If
    Next
    End Sub



    ora il carattere si adeguerà alla larghezza.

    Leo
    certo che chiedevo a te
    io di VBA ne conosco poche righe
    comunque ora ho capito perchè le misure non tornano😀
    [Modificato da federico460 07/12/2023 00:35]
  • OFFLINE
    Anthony D'Acunto
    Post: 148
    Registrato il: 24/07/2013
    Città: SALERNO
    Età: 52
    Utente Junior
    Excel LTSC 2021
    00 07/12/2023 00:34
    Re:
    Troppa grazia...e grazie; che non sono mai troppe.
    Un abbraccio
    federico460, 07/12/2023 00:31:

    ciao
    Quanto alle 'schifezze' ###### cui fai riferimento, è perchè la larghezza della colonna risulta troppo stretta in rapporto alla dimensione del carattere della cella.
    Occorrerà, al riguardo, andare sulla cella in questione --> Tasto destro --> Formato Celle --> Allineamento --> 'Flaggare' la casella 'Riduci e adatta' --> OK e il valore in cella si adatterà alla 'ristrettezza' della colonna.
    Per quanto possibile: in quanto se la colonna è molto stretta - es. inferiore a 1,43 - il carattere si ridurrà al punto da essere troppo piccolo per risultare leggibile.


    beh! questo lo sapevo ma pensavo volessi lasciare il carattere com'era e nasconderlo.

    sistemiamo tutto così

    Sub sostituisci()
    Dim Lista As Range
    Set Lista = Range("A1:ZZ1")
    For Each CL In Lista
    If CL <> "" Then
    CL.ColumnWidth = CL.Value
    CL.ShrinkToFit = True
    End If
    Next
    End Sub



    ora il carattere si adeguerà alla larghezza.




    Windows 10 - Excel LTSC
  • 15MediaObject5,0051015MediaObject5,00210 2