inserimento valori con macro



  • inserimento valori con macro
    di Antony (utente non iscritto) data: 29/11/2013 23:31:54

    Ciao a tutti, vi seguo da tempo e grazie a voi ho sempre risolto tantissimi dilemmi. Oggi però ho un piccolo problema ho un file excel dove ci sono tantissimi codici a barre, solo che alcuni non sono costituiti da 13 numeri ma da 12 o 11 o altro. Come si può indicare con una macro di aggiungere degli zeri a sinistra del numero, fin quanto i numeri nella cella non raggiungono i 13 numeri. Spero di essere stato chiaro. Attenzione alcune volte i valori all'interno delle celle sono costituite anche da lettere.

    es. io ho tali numeri

    0001543278324 (sono 13 numeri)
    001543278324 (sono 12 numeri)
    13425263Y36 (sono 11 Valori)

    io vorrei questo:

    0001543278324 (sono 13 numeri)
    0001543278324 (sono 13 numeri)
    0013425263Y36 (sono 13 Valori)


    Grazie ancora per l'aiuto.




  • di gaetanopr data: 29/11/2013 23:37:53

    Ciao prova questa formula

    =SE(LUNGHEZZA(A1)=13;A1;RIPETI(0;13-LUNGHEZZA(A1))&A1)



  • di Antony (utente non iscritto) data: 29/11/2013 23:47:46

    Ciao Funziona benissimo. Ti posso chiedere un favore... siccome ci sono tantissime righe (circa 330000) non ci sarebbe una macro?

    Grazie comunque, sei stato velocissimo




  • di gaetanopr data: 30/11/2013 01:07:07

    Ciao, prova questa
     
    Sub lunghezza()
    Set Rng = Range("A1:A330000")
    For Each C In Rng
     If C.Value <> "" Then
      C.NumberFormat = "@"
      C.Value = Evaluate("IF(LEN(" & C.Address & ")= 13," & C.Address & ",REPT(0,13-LEN(" & C.Address & "))&" & C.Address & ")")
    End If
    Next C
    End Sub



  • di Mister_x (utente non iscritto) data: 30/11/2013 01:09:47

    ciao

    ammettendo i tuoi dati in colonna A:A
    se non e' la A cambia la colonna
    questa ti sostituisce il valore della cella aggiungendo degli zeri

    ciao Mister_X



     
    Sub aggiungi0()
    Dim A_A As Range
    Set A_A = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
    Dim cella As Variant
    For Each cella In A_A
    With cella
          .NumberFormat = "@"
    End With
      If Len(cella) < 13 And cella <> "" Then
          Cells(cella.Row, "A") = Application.Rept("0", 13 - Len(cella)) & cella
      End If
    Next
    Set A_A = Nothing
    End Sub