incrementare alfanumerici con trascinamento cella



  • incrementare alfanumerici con trascinamento cella
    di Alasque data: 12/07/2013 15:14:53

    Ciao a Tutti,

    trascinando ina cella che contiene un numero le celle che seguono vengono incrementate. come faccio a farlo con valori alfanumerici? esempio: se ho AA come faccio a rendere automaticamente AB la seconda ed AC la terza e così via?

    Grazie



  • di Vecchio Frac data: 12/07/2013 18:51:43

    A occhio e croce, solo se prima hai stabilito un elenco: quando trascini un elemento dell'elenco, seguono gli altri.
    Così avviene, per esempio, con i giorni della settimana e i nomi dei mesi (sono due elenchi predefiniti).





  • di paolomath data: 15/07/2013 09:34:11

    Oppure ricorrere ad un po' di codice...

    Seleziona la colonna che ti interessa.

    Questa arriva fino ad CZ, divertiti un po' se ti va.

    Bye
     
    Sub Prova()
    
    For i = 0 To Selection.Count - 1
    Select Case 65 + i
    Case Is < 91
        Cells(Selection.Row + i, Selection.Column) = Chr(i + 65)
    Case Is < 117
        Cells(Selection.Row + i, Selection.Column) = "A" & Chr(i + 39)
    Case Is < 143
        Cells(Selection.Row + i, Selection.Column) = "B" & Chr(i + 13)
    Case Is < 169
        Cells(Selection.Row + i, Selection.Column) = "C" & Chr(i - 13)
    End Select
    Next
    
    End Sub



  • di paolomath data: 15/07/2013 10:14:02

    Questa è un po' più compatta e ariva a ZZ

    Bye.
     
    For i = 0 To Selection.Count - 1
    Select Case i
    Case Is < 26
    Cells(Selection.Row + i, Selection.Column) = Chr(65 + (i Mod 26))
    Case Is < 676
    Cells(Selection.Row + i, Selection.Column) = Chr(65 + (i  26)) & Chr(65 + (i Mod 26))
    End Select
    Next



  • di HarryBosch data: 15/07/2013 10:41:09

    Ciao Ragazzi,
    propongo anch'io una soluzione, tramite l'utilizzo di una UDF, con il seguente utilizzo:
    - inserire il gruppo di partenza in una cella qualsiasi (AA o altro gruppo di due lettere)
    - nella cella sottostante richiamare la funzione con riferimento alla cella (soprastante)
    - trascinare in basso la formula

    La funzione va dal gruppo AA al gruppo ZZ.

    Esempio pratico:
    - in A1 scrivere il gruppo di partenza: AA
    - nelle cella A2 riportare la funzione: =udf_IncrAlfaNum(A1)
    - trascinare la formula in basso
     
    Function udf_IncrAlfaNum(Gruppo_Inizio As Range)
    Dim s As String, a As String, b As String
        
        s = UCase(Gruppo_Inizio.Value)
    
        Select Case Asc(Right(s, 1)) + 1
            Case 91
                a = Chr(Asc(Mid(s, 1)) + 1)
                b = "A"
            Case Else
                a = Mid(s, 1, 1)
                b = Chr(Asc(Right(s, 1)) + 1)
        End Select
        
        udf_IncrAlfaNum = a & b
           
    End Function



  • di Vecchio Frac data: 15/07/2013 10:49:31

    @paolomath
    Il codice è interessante ma va aggiustato un po'.
    Inserendo "AA" in una cella e selezionando le successive dieci in basso, lanciando la macro il risultato è la sequenza "A", "B", "C", "D", ecc. cioè una lettera sola (conseguenza dell'assegnazione alla cella di un solo carattere, come si vede a destra dell'uguale: Cells(Selection.Row + i, Selection.Column) = Chr(65 + (i Mod 26))). Non è quello che chiedeva l'OP (la situazione migliora dopo la prima "Z").

    @Harry
    Ciao :)
    Carina la funzione. E funziona anche bene ^_^





  • di paolomath data: 15/07/2013 10:56:43

    Si lo so, la funzione costuisce la sequenza partendo da A (come le colonne di excel). Un po' diverso da quello richiesto...

    Per partire da AA basta togliere il primo Case.

    Bye