Risultati da 1 a 21 di 21

Discussione: sistemazione dati



  1. #1
    L'avatar di lim87
    Clicca e Apri
    Data Registrazione
    Jun 2015
    LocalitÓ
    durazzo
    EtÓ
    30
    Messaggi
    30
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    1

    sistemazione dati

    ciao ragazzi
    dopo l'ultimo problema che ho posto ed avendo risultati a dir poco meravigliosi, vi pongo un'altro problema:
    nel caso avessi una lista con dati sparsi senza una logica, esiste un meccanismo per sistemare tutto senza farlo manualmente che chiede molto piu tempo.
    in allegato troverete un esempio!

    grazie
    File Allegati File Allegati

  2. #2
    L'avatar di Alessandro
    Clicca e Apri
    Data Registrazione
    Sep 2015
    LocalitÓ
    Roma
    EtÓ
    45
    Messaggi
    851
    Versione Office
    2010 64 bit
    Likes ricevuti
    113
    Likes dati
    61
    ciao lim87,
    ma tu hai posto solo un caso...oppure ce ne sono altri?
    Per es. il cell messo male Ŕ solo nel caso che capiti nella col. D oppure pu˛ capitare in qualunque colonna? Se si fino a quale colonna occorre controllare?
    ciao
    ale

  3. #3
    L'avatar di Gerardo ZuccalÓ
    Clicca e Apri
    Data Registrazione
    May 2015
    LocalitÓ
    Milano, Italy
    EtÓ
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1125
    Citazione Originariamente Scritto da lim87 Visualizza Messaggio
    ciao ragazzi
    dopo l'ultimo problema che ho posto ed avendo risultati a dir poco meravigliosi, vi pongo un'altro problema:
    nel caso avessi una lista con dati sparsi senza una logica, esiste un meccanismo per sistemare tutto senza farlo manualmente che chiede molto piu tempo.
    in allegato troverete un esempio!

    grazie
    Ciao Lim87 bentornato!
    Credo che la tua richiesta si impossibile, a volte capite di avere dei data base (es.scaricati da internet) dove i records non sono disposti correttamente nel senso che non sono perfettamente allineati e quindi saltano qualche cella e a quel punto ci sono diversi modi per ottenere ci˛ che si vuole ma nel tuo caso non credo sia possibile
    Vorrei essere smentito magari da qualche esperto di VBA
    ciao Lim87 incrociamo le dita

  4. #4
    L'avatar di lim87
    Clicca e Apri
    Data Registrazione
    Jun 2015
    LocalitÓ
    durazzo
    EtÓ
    30
    Messaggi
    30
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    1
    Citazione Originariamente Scritto da Alessandro Visualizza Messaggio
    ciao lim87,
    ma tu hai posto solo un caso...oppure ce ne sono altri?
    Per es. il cell messo male Ŕ solo nel caso che capiti nella col. D oppure pu˛ capitare in qualunque colonna? Se si fino a quale colonna occorre controllare?
    ciao
    ale
    ciao ale
    ci possono essere anche altri casi massimo che possono essere spostati sono fino alla colonna n perche ci possono essere snche altri dati,
    tipo l'indirizzo o nr tessera e cosi via.

  5. #5
    L'avatar di Gerardo ZuccalÓ
    Clicca e Apri
    Data Registrazione
    May 2015
    LocalitÓ
    Milano, Italy
    EtÓ
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1125
    Io ho provato a fare una formula che sicuramente Ŕ un passo in avanti ma non risolve completamente il problema
    perchŔ Ŕ difficile far capire ad excel la differenza tra un CF e un Numero di telefono
    Con questa riuscirai ad eliminare le celle vuote

    Incolla questa formula in K3 e trascinala a destra e in basso:

    =SE.ERRORE(INDICE($A3:$H3;;AGGREGA(15;6;(RIF.COLONNA($A$3:$H$3)-RIF.COLONNA($A$3)+1)/($A3:$H3<>"");COLONNE($K$3:K3)));"")

    Fammi sapere!



  6. #6
    L'avatar di Alessandro
    Clicca e Apri
    Data Registrazione
    Sep 2015
    LocalitÓ
    Roma
    EtÓ
    45
    Messaggi
    851
    Versione Office
    2010 64 bit
    Likes ricevuti
    113
    Likes dati
    61
    Citazione Originariamente Scritto da Gerardo ZuccalÓ Visualizza Messaggio
    Io ho provato a fare una formula che sicuramente Ŕ un passo in avanti ma non risolve completamente il problema
    perchŔ Ŕ difficile far capire ad excel la differenza tra un CF e un Numero di telefono
    Con questa riuscirai ad eliminare le celle vuote

    Incolla questa formula in K3 e trascinala a destra e in basso:

    =SE.ERRORE(INDICE($A3:$H3;;AGGREGA(15;6;(RIF.COLONNA($A$3:$H$3)-RIF.COLONNA($A$3)+1)/($A3:$H3<>"");COLONNE($K$3:K3)));"")

    Fammi sapere!


    ciao gerardo,
    per vedere se la cella ha il CF o il telefono possiamo usare la funzione
    =CELLA("tipo";A1)
    oppure pi¨ semplicemente
    =SE(VAL.ERRORE(A1*1);"testo";"nr")
    ma rimane sempre il problema:187:
    ciao
    ale

  7. #7
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    LocalitÓ
    Catania
    EtÓ
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    Citazione Originariamente Scritto da lim87 Visualizza Messaggio
    ciao ale
    ci possono essere anche altri casi massimo che possono essere spostati sono fino alla colonna n perche ci possono essere snche altri dati,
    tipo l'indirizzo o nr tessera e cosi via.
    L'esempio che hai allegato a questo punto non Ŕ per nulla rappresentativo del caso reale. Quindi non sarÓ facile aiutarti.
    Mi spiego meglio. Nel tuo file si vedono solo cinque campi. Nome, Cognome, CF, e.mail e telefono.
    Se si incontra un indirizzo o un numero di tessera dove si devono mettere?
    Se vuoi ricevere aiuto dovresti descrivere lo scenario in modo esaustivo e non parziale.
    E poi, come si fa a differenziare un numero di telefono da un numero di tessera?
    In definitiva mentre stavo abbozzando un'idea di come avresti potuto affrontare il problema, sulla base dell'esempio che hai allegato, mi sono accorto che avrei solo perso tempo e mi sono fermato.

  8. #8
    L'avatar di lim87
    Clicca e Apri
    Data Registrazione
    Jun 2015
    LocalitÓ
    durazzo
    EtÓ
    30
    Messaggi
    30
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    1
    ciao
    ti faccio un esempio concretto della situazione.
    Grazie
    File Allegati File Allegati
    Ultima modifica fatta da:Canapone; 06/02/17 alle 14:50

  9. #9
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    LocalitÓ
    Cordenons
    Messaggi
    809
    Versione Office
    2016 64bit
    Likes ricevuti
    142
    Likes dati
    52
    Primo pensiero: cosý come altri hanno giÓ detto, Ŕ un lavoro improbabile.
    Avendo delle certezze si potrebbe andare per confronto e per esclusione per ricostruire il puzzle, ma ...
    Provo a fare un elenco delle costanti che ho rilevato ma se queste condizioni non sono "certe" non Ŕ nemmeno il caso di iniziare il lavoro, bisogna recuperare a monte le informazioni in modo pi¨ omogeneo.
    nella tabella finale:
    1) le prime 3 colonne sono sempre esatte
    2) la colonna D ha codici fiscali che sono riconoscibili
    3) la colonna E ha email che sono riconoscibili
    4) la colonna F Ŕ uguale alla C
    5) le colonne H, I e J hanno testo con poche varianti (2 o forse pi¨ varianti)
    6) la colonna K Ŕ riconoscibile (inizia con SR8-)
    7) la colonna L Ŕ riconoscibile (Ŕ una data con orario)
    8) in mancanza di dati omogenei le celle rimangono vuote
    nella tabella iniziale:
    1) dove finiscono i dati della colonna I che iniziano con V

  10. #10
    L'avatar di Gerardo ZuccalÓ
    Clicca e Apri
    Data Registrazione
    May 2015
    LocalitÓ
    Milano, Italy
    EtÓ
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1125
    Ciao Rollis adesso sono da cellulare, comunque si potrebbe fare una formula come quella che fatto nel post #5 che ovviamente come condizione mi esclude tutte le celle vuote, ed proprio qui il trucchetto se non cancelliamo con il tasto "canc" tutto ci˛ che non ci serve avremmo di conseguenza delle Celle vuote a quel punto le formule ci restituiscono il data base campo per Campo, e' chiaro che se ci sono 3000 records questa operazione potrebbe essere lunghissima, ma non ne vedo altre soluzioni, (da provare)

    Inviato da WindowsPhone XL950

  11. #11
    L'avatar di lim87
    Clicca e Apri
    Data Registrazione
    Jun 2015
    LocalitÓ
    durazzo
    EtÓ
    30
    Messaggi
    30
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    1
    al momento come soluzione sto usando i filtri, pero' richiede troppo tempo
    e' per questo che cercavo una soluzione dove magari potevo usare una formula di riconoscimento.:264:

  12. #12
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    LocalitÓ
    Cordenons
    Messaggi
    809
    Versione Office
    2016 64bit
    Likes ricevuti
    142
    Likes dati
    52
    Per fare una formula bisogna anche prima sapere cosa confrontare, che ne dici di completare/confermare quanto ho esposto nel post #9 ed aggiungere ogni altro dettaglio utile.

  13. #13
    L'avatar di lim87
    Clicca e Apri
    Data Registrazione
    Jun 2015
    LocalitÓ
    durazzo
    EtÓ
    30
    Messaggi
    30
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    1
    Citazione Originariamente Scritto da rollis13 Visualizza Messaggio
    Per fare una formula bisogna anche prima sapere cosa confrontare, che ne dici di completare/confermare quanto ho esposto nel post #9 ed aggiungere ogni altro dettaglio utile.

    allora ti spiego, i dati che a me interessano sono: nome cognome cf email nr fisso e nr seccondario.
    degli altri dati posso fare a meno

  14. #14
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    LocalitÓ
    Catania
    EtÓ
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    Ciao
    Allego il file con qualcosa che potrebbe risolvere in generale.
    Ovviamente con le formule mi sono perso... troppi parametri da controllare. Quindi ho usato una routine.
    Abilitare le macro all'apertura del file.
    Provate a dargli un'occhiata. Spero che funzioni. Io non ho avuto molto tempo per testarla a dovere.

    Codice: 
    Sub Sistema_Dati()
    Dim i As Long
    Dim Sh As Worksheet
    Dim RowN As Range
    Dim Cell As Range
    Dim v
    Dim Mx(1 To 13) 'Colonne dei risultati da "A" alla "M"
    Set Sh = Worksheets(2)
        For i = 1 To Range("A1").CurrentRegion.Rows.Count
            Set RowN = Range("A" & i & ":N" & i)
            For Each Cell In RowN
                If F(Cell) = 3 Then ' inserisco il Tel dove trovo libero
                    v = _
                    Switch(Mx(3) = "", 3, Mx(6) = "", 6, Mx(7) = "", 7, Mx(7) > 0, 7)
                    Mx(v) = Cell.Value
                Else
                    Mx(F(Cell)) = Cell.Value
                End If
            Next
                Sh.Range(RowN.Address) = Mx
                Erase Mx
        Next
        MsgBox "I valori sistemati li trovi nel foglio 2", vbInformation
    Set RowN = Nothing
    Set Sh = Nothing
    End Sub
    Codice: 
    Public Function F(c As Range)
        If c.Column = 1 Then
            F = 1 'Nome
        ElseIf c.Column = 2 Then
            F = 2 'Cognome
        ElseIf IsNumeric(c) And Not IsEmpty(c) Then
            F = 3 ' Tel1, Tel2 oppure Tel3
        ElseIf Len(c) = 16 And InStr(c, Chr(32)) = 0 Then
            F = 4 ' CF
        ElseIf InStr(c, "@") > 0 Then
            F = 5 ' E.mail
        ElseIf InStr(1, c, "lav", vbTextCompare) > 0 Then
            F = 8 'Stato Lavorazione
        ElseIf InStr(1, c, "info", vbTextCompare) > 0 Then
            F = 9 ' INFO
        ElseIf InStr(1, c, "rep", vbTextCompare) > 0 Then
            F = 10 'Reperibile oppure Irreperibile
        ElseIf InStr(2, c, "-", vbTextCompare) > 0 Then
            F = 11 ' N.Tessera
        ElseIf IsDate(c) Then
            F = 12 ' Data
        Else
            F = 13 ' Nulla
        End If
    End Function
    File Allegati File Allegati

  15. I seguenti 3 utenti hanno dato un "Like" a Textomb per questo post:


  16. #15
    L'avatar di lim87
    Clicca e Apri
    Data Registrazione
    Jun 2015
    LocalitÓ
    durazzo
    EtÓ
    30
    Messaggi
    30
    Versione Office
    2010
    Likes ricevuti
    0
    Likes dati
    1
    non ho parole. ti posso dire che sei diventato gia il mio idolo:230:
    grazie mille


    caso risolto
    Ultima modifica fatta da:Canapone; 06/02/17 alle 14:51

  17. #16
    L'avatar di Gerardo ZuccalÓ
    Clicca e Apri
    Data Registrazione
    May 2015
    LocalitÓ
    Milano, Italy
    EtÓ
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1125
    Grande Textomb!!! Fantastico, vorrei capire che logica hai applicato, ovviamente non conoscendo il Codice VBA mi piacerebbe sapere come hai fatto a far capire ad Excel qual Ŕ il numero di telefono, mail, nome e cognome, cosi da capire le potenzialitÓ del VBA.. Ciao TT sei un mito!!

    Inviato da WindowsPhone XL950

  18. #17
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    LocalitÓ
    Catania
    EtÓ
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    Citazione Originariamente Scritto da Gerardo ZuccalÓ Visualizza Messaggio
    Grande Textomb!!! Fantastico, vorrei capire che logica hai applicato, ovviamente non conoscendo il Codice VBA mi piacerebbe sapere come hai fatto a far capire ad Excel qual Ŕ il numero di telefono, mail, nome e cognome, cosi da capire le potenzialitÓ del VBA.. Ciao TT sei un mito!!
    A dire il vero non credo sia il massimo. Anzi presenta diversi punti deboli.
    Per esempio. Il CF viene riconosciuto quando trova un valore di 16 caratteri senza spazi. Basta inserire un CF con uno spazio ed ecco che non lo riconosce pi¨.
    Oppure se il tel viene inserito con uno spazio non lo becca pi¨. (per es. 339 5877645)
    Insomma pu˛ funzionare. Diciamo meglio che farlo manualmente. Ma non Ŕ sicura al 100%. In teoria, ci vorrebbero molti pi¨ controlli.
    In ogni caso, resto soddisfatto che il quesito Ŕ stato risolto.

  19. #18

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Cosenza
    EtÓ
    45
    Messaggi
    2801
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    977
    Tempo fa avevo bisogno di una funzione che mi ricinoscesse il cf. Se la trovo la posto

    Inviato dal mio GT-I9301I utilizzando Tapatalk

  20. #19

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Cosenza
    EtÓ
    45
    Messaggi
    2801
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    977
    Ecco il codice che avevo creato per verificare il CF (non l'esattezza)
    Codice: 
    Function VerificaCodiceFiscale(Codice As String) As Boolean
    
    If IsLettera(Mid(Codice, 1, 1)) Then
        If IsLettera(Mid(Codice, 2, 1)) Then
            If IsLettera(Mid(Codice, 3, 1)) Then
                If IsLettera(Mid(Codice, 4, 1)) Then
                    If IsLettera(Mid(Codice, 5, 1)) Then
                        If IsLettera(Mid(Codice, 6, 1)) Then
                            If IsNumeric(Mid(Codice, 7, 1)) Then
                                If IsNumeric(Mid(Codice, 8, 1)) Then
                                    If IsLettera(Mid(Codice, 9, 1)) Then
                                        If IsNumeric(Mid(Codice, 10, 1)) Then
                                            If IsNumeric(Mid(Codice, 11, 1)) Then
                                                If IsLettera(Mid(Codice, 12, 1)) Then
                                                    If IsNumeric(Mid(Codice, 13, 1)) Then
                                                        If IsNumeric(Mid(Codice, 14, 1)) Then
                                                            If IsNumeric(Mid(Codice, 15, 1)) Then
                                                                If IsLettera(Mid(Codice, 16, 1)) Then
                                                                    VerificaCodiceFiscale = True
                                                                End If
                                                            End If
                                                        End If
                                                    End If
                                                End If
                                            End If
                                        End If
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If
    
    End Function
    
    
    Function IsLettera(Lettera) As Boolean
    Dim i As Integer
    
    For i = 65 To 90
        If Chr(i) = UCase(Lettera) Then
            IsLettera = True
            Exit Function
        End If
    Next
    End Function

  21. #20
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    LocalitÓ
    Catania
    EtÓ
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Ecco il codice che avevo creato per verificare il CF (non l'esattezza)
    Giusta come idea. Ma come mai non hai pensato ad un ciclo sulle singole lettere del CF invece di nidificare tutti quegli if... Pi¨ semplice da analizzare.
    Inoltre non credo funzionasse il controllo se il CF superava i 16 caratteri...
    Per esempio una cose del genere...

    Codice: 
    Function VerificaCodiceFiscale(Codice As String) As Boolean
    Dim n As Integer
        If Len(Codice) <> 16 Then
            Exit Function
        Else
            For n = 1 To 16
                If Not IsValid(Mid(Codice, n, 1), n) Then
                    Exit Function
                End If
            Next
            VerificaCodiceFiscale = True
        End If
        
    End Function
    
    Function IsValid(Lettera As String, pos As Integer) As Boolean
    Dim i As Integer
        Select Case pos
            Case 1 To 6, 9, 12, 16
                For i = 65 To 90
                    If Chr(i) = UCase(Lettera) Then
                        IsValid = True
                        Exit Function
                    End If
                Next
            Case 7, 8, 10, 11, 13, 14, 15
                If IsNumeric(Lettera) Then IsValid = True
        End Select
    End Function
    Ultima modifica fatta da:Textomb; 15/01/16 alle 10:03 Motivo: aggiustamento codice postato

  22. #21

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Cosenza
    EtÓ
    45
    Messaggi
    2801
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    977
    Per quanto riguarda la lunghezza la verificavo prima di avviare la routine, mentre per il ciclo ho fatto la cosa pi¨ semplice, ma tu l'hai resa migliore

    Inviato dal mio GT-I9301I utilizzando Tapatalk

Discussioni Simili

  1. Sistemazione valori asse orizzontale grafico
    Di ocean nel forum Domande sui Grafici di Excel
    Risposte: 10
    Ultimo Messaggio: 13/01/17, 22:33

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •