Condividi:        

Come ordinare colonna dati alfanumerici

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Come ordinare colonna dati alfanumerici

Postdi RaeleaR » 25/11/14 13:43

Salve a tutti,
ho una colonna in cui scrivo un riferimento progressivo ai dati che seguono nella colonna successiva.
Necessito che questo riferimento contenga alcuni caratteri, oltre al numero progressivo.
I riferimenti sono RL1, RL2, RL3.... RL10, RL11, RL12... ecc
Succede che peró quando vado ad ordinare questa colonna mi restituisce RL1, RL10, RL11.. ecc e questo anche se formatto le celle come numero.
Ho fatto alcune prove, come da file allegato qui:
http://www.filedropper.com/esempioordinamento

e mi sembra di capire che l'unico modo per evitare ció é aggiungere tanti zeri, secondo l'esigenza, dopo RL.. questo peró comporta che se ad esempio scrivo RL001.. ecc.. potró avere al massimo 999 items nel mio elenco, prima di doverlo cambiare/estendere/aggiornare.. ..peró se non ho possibilitá di prevedere quanti saranno approssimatamente i miei items? o se non volessi limitare il mio elenco?

Come faccio a impostare il mio riferimento lasciando il solo RL(n) senza incorrere nel problema?
Rael
Win 8.1 - Office 2010 Esp
Avatar utente
RaeleaR
Utente Junior
 
Post: 70
Iscritto il: 26/09/14 08:55
Località: Argentina

Sponsor
 

Re: Come ordinare colonna dati alfanumerici

Postdi ricky53 » 25/11/14 14:57

Ciao,
a mia conoscenza è l'unico modo.
Ma quanti riferimenti avrai?

Se proprio vogliamo liberarci dallo scrivere gli zeri ... si potrebbe far fare ad una macro l'inserimento degli zeri:
ipotizziamo che tu
1. scriva "RL13"
2. abbia deciso che le cifre debbano essere "5"
3. con del codice VBA si può trasformare quanto hai scritto in "RL00013"
4. se le cifre devono essere diverse si può utilizzare una cella di appoggio in cui scrivere il numero di cifre e ... tutto si svolgerà automaticamente

Può esserti utile?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Come ordinare colonna dati alfanumerici

Postdi ricky53 » 25/11/14 15:36

Ciao,
tanto per gradire un esempio di codice
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Intervallo As Range, mApp As String, UR As Long, mCifre As Integer
    If Target.Count > 1 Then
        Exit Sub
    End If
    UR = Range("F" & Rows.Count).End(xlUp).Row
    mCifre = 5 ' <<===== è il numero di cifre dopo "RL"
    Set Intervallo = Range("F5:F" & UR) ' <<====== QUI INSERISCI IL TUO INTERVALLO DI CELLE
    If Not Intersect(Target, Intervallo) Is Nothing Then
        Application.EnableEvents = False
        mApp = Mid([Target], 3, Len([Target]) - 2)
        Target = Left([Target], 2) & String(mCifre - Len(mApp), "0") & mApp
        Application.EnableEvents = True
    End If
End Sub

da copiare nel "FOGLIO" ove hai i dati (posizionati sul nome del foglio, tasto destro, visualizza codice e copia il codice che ti ho inviato)

Per il recupero dei dati già scritti:
posizionati sulle varie celle e premi "F2".
Se le celle sono tante allora ci vuole altro codice e ... a più tardi.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Come ordinare colonna dati alfanumerici

Postdi wallace&gromit » 25/11/14 17:24

vedi i consigli di ricky,
oppure scrivi semplicemente in una colonna d'appoggio (per es. G) i numeri crescenti.
In H5
Codice: Seleziona tutto
="RL" & G5

poi fai l'ordinamento sempre sulla colonna G e non sulla H
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: Come ordinare colonna dati alfanumerici

Postdi RaeleaR » 29/11/14 00:07

Ciao Ricky,
per prima cosa ti ringrazio per il validissimo aiuto. Mi sembra geniale anche il fatto di avere un riferimento al numero di cifre che desidero perché in questo modo se dovessi avere necessitá di piú items, basterebbe cambiare quel numero.
Ho fatto come mi hai detto ed ho potuto aggiornare anche le celle che giá avevano qualche ID scritto utilizzando F2 come mi hai suggerito.
Ho un problemino peró. Il file di prova che ho postato era ovviamente limitato all'analisi di questo problema ed io, stupidamente, ma anche per non dilungarmi, non ho formito le informazioni complete pensando di riuscire a risolvere da solo il resto.
Il punto é questo. Ho un programmino di gestione di un "Posto di Libri". I dati del foglio che abbiamo analizzato provengono da una UserForm e non so come interfacciare il tuo codice con il mio.
Sarebbe chiederti troppo se ti potessi passare il file originale privatamente? Potrei comunicarmi con te via mail?
Grazie e perdonami se la richiesta non é del tutto ortodossa :)
Rael
Win 8.1 - Office 2010 Esp
Avatar utente
RaeleaR
Utente Junior
 
Post: 70
Iscritto il: 26/09/14 08:55
Località: Argentina

Re: Come ordinare colonna dati alfanumerici

Postdi ricky53 » 29/11/14 01:39

Ciao,
come spesso avviene gli utenti per ragioni espositive del quesito semplificano la descrizione e gli esempi ... segue ovviamente quello che hai riscontrato tu.

Premesso ciò allega un file di esempio senza dati riservati e ... insieme troveremo la soluzione.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Come ordinare colonna dati alfanumerici

Postdi RaeleaR » 29/11/14 01:42

Comunque pensavo..
Io assegno in automatico l'ID di un libro ad ogni caricamento della relativa UserForm in questo modo:
Codice: Seleziona tutto
Private Sub UserForm_Activate()
    txtRefLibro.Text = "LI" & Sheets("DB_LIBROS").Range("B" & Rows.Count).End(xlUp).Row - 6
    ThisWorkbook.Worksheets("Ground1").Activate
End Sub


ho cercato di capire il tuo codice, peró sono davvero un principiante.

mi chiedo se non sia possibile inserire le istruzioni chiave (per l'inserimento degli zeri) nella mia UserForm_Activate ..
Rael
Win 8.1 - Office 2010 Esp
Avatar utente
RaeleaR
Utente Junior
 
Post: 70
Iscritto il: 26/09/14 08:55
Località: Argentina

Re: Come ordinare colonna dati alfanumerici

Postdi RaeleaR » 29/11/14 01:44

uuppsss.. scrivevamo nello stesso momento :)

il fatto é che creare un file di esempio comincia a diventare complicato adesso che ho 9 UserForm e vari dati che si incrociano..
posso provarci, ma mi porterebbe via molto tempo..
comunque cosa pensi di quello che ho scritto prima?
Rael
Win 8.1 - Office 2010 Esp
Avatar utente
RaeleaR
Utente Junior
 
Post: 70
Iscritto il: 26/09/14 08:55
Località: Argentina

Re: Come ordinare colonna dati alfanumerici

Postdi Anthony47 » 29/11/14 01:49

Scusate la pedanteria istituzionale:
Il forum e' un posto di pubblico scambio, dove ognuno pone il suo quesito e tutti possono beneficiare della conoscenza che si genera.
Come Moderatore vedo la tua richiesta di colloqui privato contraria a questo spirito, per cui ti raccomando di procedere in modo aperto; se, come immagino, non sei in grado di pubblicare il tuo file per motivi di riservatezza dei dati contenuti (non per gelosia…) allora dovresti provare a descrivere decorosamente quel che hai oggi, oppure creare un file esemplificativo che possa essere pubblicato, e qualcuno certamente provera' a darti almeno qualche spunto utile.

Ciao a tutti
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Come ordinare colonna dati alfanumerici

Postdi RaeleaR » 29/11/14 01:53

Anthony, hai perfettamente ragione e condivido lo spirito e le ragioni.. mi sembrano doverose: "Le mie scuse alla Comunitá."
Rael
Win 8.1 - Office 2010 Esp
Avatar utente
RaeleaR
Utente Junior
 
Post: 70
Iscritto il: 26/09/14 08:55
Località: Argentina

Re: Come ordinare colonna dati alfanumerici

Postdi ricky53 » 29/11/14 02:08

Ciao,
le istruzioni da inserire nel tuo codice sono le seguenti
Codice: Seleziona tutto
        mApp = Mid([Target], 3, Len([Target]) - 2)
        Target = Left([Target], 2) & String(mCifre - Len(mApp), "0") & mApp


al posto di Target devi riportare la cella ove i dati vanno scritti ...

Vista la difficoltà a produrre un file di esempio senza dati riservati invia il codice che utilizzi per scrivere i dati nel foglio e posso provarci io ad integrare il tuo codice con il mio.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Come ordinare colonna dati alfanumerici

Postdi RaeleaR » 29/11/14 02:12

Penso che una soluzione velocissima al problema puó essere aggiungere uno zero dopo "LI" nella mia istruzione.. in questo modo non limito il dimensionamento ad un tot numero di cifre.. qualsiasi numero di record raggiunga nell'inserimento dei dati avró sempre lo zero davanti al numero e dopo i due caratteri distintivi della tipologia di record..
Rael
Win 8.1 - Office 2010 Esp
Avatar utente
RaeleaR
Utente Junior
 
Post: 70
Iscritto il: 26/09/14 08:55
Località: Argentina

Re: Come ordinare colonna dati alfanumerici

Postdi RaeleaR » 29/11/14 02:18

giusto tra parentesi non ho problemi a postare il mio progetto per intero, vista la difficoltá di estrarne il singolo caso, né tantomeno soffro di gelosia per quello che faccio.. visto che sono un principiante ho solo da imparare :) ..fin dove posso ricreare situazioni con un esempio lo faró volentieri anche perché mi sembra che per chi mi aiuta sia piú semplice che non cercare in un intero programma.. é solo questo scrupolo che mi ha trattenuto dal farlo.
Rael
Win 8.1 - Office 2010 Esp
Avatar utente
RaeleaR
Utente Junior
 
Post: 70
Iscritto il: 26/09/14 08:55
Località: Argentina

Re: Come ordinare colonna dati alfanumerici

Postdi RaeleaR » 29/11/14 02:21

Ricky grazie ancora per l'attenzione che mi stai dedicando.. vado a provare quello che mi hai passato..
posso chiederti, quando hai tempo, di spiegarmi cosa fanno quelle istruzioni? o come lo fanno..
Rael
Win 8.1 - Office 2010 Esp
Avatar utente
RaeleaR
Utente Junior
 
Post: 70
Iscritto il: 26/09/14 08:55
Località: Argentina

Re: Come ordinare colonna dati alfanumerici

Postdi ricky53 » 29/11/14 02:36

Ciao,
con un solo "zero" NON risolvi o risolvi parzialmente: se inserisci 8, 9 e poi 10, 11, ecc cosa succederà quando ordinerai?

E' preferibile avere il tuo codice ove scrivi i dati, partendo dalla tua "Form", nelle celle del foglio.

Comunque l'istruzione
mApp = Mid([Target], 3, Len([Target]) - 2)
calcola quante sono le cifre che scritto dopo "RL"

e l'istruzione
Target = Left([Target], 2) & String(mCifre - Len(mApp), "0") & mApp
inserisce gli "zeri" tra "RL" e le cifre

Se stai gestendo "9" userform con il codice collegato per fare svolgere le funzioni che ti occorrono ... a mio avviso dovresti capire cosa fa il codice che ti ho inviato ... sicuro di averci provato con la dovuta attenzione ?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Come ordinare colonna dati alfanumerici

Postdi RaeleaR » 29/11/14 03:18

ma certo che mi sforzo di capire quello che fanno le istruzioni che mi passano (in generale dico), non mi sembra proficuo il copia incolla per uno che ha voglia di imparare.. per questo ti chiedevo la spiegazione..

si é vero che sono 9 userform ma ti assicuro che molte delle soluzioni adottate nel codice ti farebbero rizzare i capelli :) ..ripeto sono davvero alle primissime armi con VBA, quindi a volte lo 'stile' é davvero da primate :)

per l'ordinamento.. ho provato a cambiare aggiungendo uno o due zeri dopo le due lettere dell'ID ..ed é vero.. non funziona.. mi da lo stesso ordinamento ..1..10..11..
Rael
Win 8.1 - Office 2010 Esp
Avatar utente
RaeleaR
Utente Junior
 
Post: 70
Iscritto il: 26/09/14 08:55
Località: Argentina

Re: Come ordinare colonna dati alfanumerici

Postdi RaeleaR » 29/11/14 03:47

il codice dove scrivo i dati dalla UserForm al Foglio é il seguente..

Codice: Seleziona tutto
Private Sub cmdSalvaLibro_Click()
Dim Quest As VbMsgBoxResult
Dim t
Dim r As Integer
Dim dato As Variant
Dim ctr As MSForms.Control
    With Sheets("TdD")
        t = .Range("F" & Rows.Count).End(xlUp).Row + 1
        .Cells(t, 6).Value = txtRefLibro
        .Cells(t, 7).Value = txtTitolo
        .Cells(t, 8).Value = txtAutore
    End With
    r = Sheets("DB_LIBROS").Range("B" & Rows.Count).End(xlUp).Row + 1
    For Each ctr In Me.Controls
        If ctr.Tag <> "" Then
            dato = ctr.Text
            If IsDate(dato) Then dato = CDate(dato)
            Sheets("DB_LIBROS").Cells(r, CInt(ctr.Tag)) = dato
            ctr.Text = ""
        End If
    Next
    Quest = MsgBox(Prompt:="Deseas cargar otro libro?", _
    Buttons:=vbYesNo, Title:="Puesto de Libros")
    If Quest = vbYes Then
        ActiveWorkbook.Save
        Unload UserForm3
        Mlib
    Else
        Sali
    End If
Application.ScreenUpdating = True
End Sub


i dati vengono scritti in due punti diversi (Foglio"TdD" e Foglio"DB_LIBROS")
come faccio ad inserire quelle righe in questo codice? a parte poi in DB_LIBROS uso il Tag dei controls per scrivere i dati in ordine per colonna..
mi sento un po' in panne :(
Rael
Win 8.1 - Office 2010 Esp
Avatar utente
RaeleaR
Utente Junior
 
Post: 70
Iscritto il: 26/09/14 08:55
Località: Argentina

Re: Come ordinare colonna dati alfanumerici

Postdi RaeleaR » 29/11/14 13:08

Buongiorno Ricky, e buongiorno a tutti :)

mi domandavo.. ma, se hai inserito, il codice che mi hai suggerito all'inizio, in un evento _Change.. allora i dati che io passo nel foglio, dovrebbero aggiornarsi a come li 'modifica' la tua macro nel momento che vengono passati al foglio.. é corretto?
peró quando ho inserito le tue istruzioni nel file di prova, manualmente, e poi in quello mio, tramite userform, questo non avveniva. Quello che si mi ha fatto é che al posizionarmi su una cella e al premere F2 il dato cambiava cosí come previsto dalla Worksheet_Change. ..spero nella vostra pazienza se dico cavolate :/
Rael
Win 8.1 - Office 2010 Esp
Avatar utente
RaeleaR
Utente Junior
 
Post: 70
Iscritto il: 26/09/14 08:55
Località: Argentina

Re: Come ordinare colonna dati alfanumerici

Postdi RaeleaR » 29/11/14 17:40

ciao Ricky,
ho studiato il tuo codice e finalmente ho capito tutto..

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Intervallo As Range, mApp As String, UR As Long, mCifre As Integer
   
    If Target.Count > 1 Then 'serve a scatenare l'evento solo quando
        Exit Sub  'viene "modificata" o "selezionata" una sola cella
    End If
    UR = Range("B" & Rows.Count).End(xlUp).Row
    mCifre = 5                                                         '<<===== CIFRE DOPO "LI"
   
   Set Intervallo = Range("B10:B" & UR)                      '<<====== QUI INSERISCO _
                                                                          IL MIO INTERVALLO DI CELLE
    If Not Intersect(Target, Intervallo) _
    Is Nothing Then                                   'Se la cella modificata o selezionata _
                                                              non é vuota
       
        Application.EnableEvents = False                               'Inibisco gli eventi
       
        mApp = Mid([Target], 3, Len([Target]) - 2)    'La String dopo i due primi _
                                                                          caratteri di Target.
                                                                         
        Target = Left([Target], 2) _
        & String(mCifre - Len(mApp), "0") _
        & mApp                                                       'Risultato cella Target: _
                                                                 1)Con Left, estraggo i primi due _
                                                                    caratteri di Target, cioé "LI"; _
                                                                 2)Con String, assegno quanti zeri _
                                                                    inserire tra "LI" e mApp perché _
                                                                    abbia 5 caratteri nella stringa _
                                                                    dopo "LI" _
                                                                  3)La stringa che avevo dopo "LI".
                                     
        Application.EnableEvents = True
    End If
End Sub


a questo punto solo non capisco: perché quando scrivo i dati nel foglio non avviene in automatico che si cambi il valore Target?
Dal Form gli arriva... "LI" & Sheets("DB_LIBROS").Range("B" & Rows.Count).End(xlUp).Row - 10
quindi che cosa ancora mi sfugge?? :undecided: :eeh:
Rael
Win 8.1 - Office 2010 Esp
Avatar utente
RaeleaR
Utente Junior
 
Post: 70
Iscritto il: 26/09/14 08:55
Località: Argentina

Re: Come ordinare colonna dati alfanumerici

Postdi RaeleaR » 29/11/14 18:12

ho cancellato tutti i dati dal foglio ed ho lanciato nuovamente il form. questa volta me li ha scritti corretti..
perché?
Rael
Win 8.1 - Office 2010 Esp
Avatar utente
RaeleaR
Utente Junior
 
Post: 70
Iscritto il: 26/09/14 08:55
Località: Argentina

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Come ordinare colonna dati alfanumerici":


Chi c’è in linea

Visitano il forum: Nessuno e 27 ospiti