Condividi tramite

estrarre da un testo il codice fiscale

Anonimo
2013-04-10T09:57:08+00:00

Salve a tutti...

questa è davvero tosta!

in una tabella di un db, ho una colonna così valorizzata

NOTA. Dati personali rimossi dal moderatore.

Ciò che serve a me, è una query che mi permetta di estrarre da questa colonna solo il codice fiscale e/o la partita iva.

Se po' fa'???

A limite, andrebbe bene anche una funzione in excel...

o anche un miracolo...

grazie!

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-04-15T09:48:56+00:00

Grazie Cinzia

ho dato un'occhiata ai tuoi suggerimenti.

Troppo complicato per me che sono all'inizio della programmazione vb!

Comunque ci ritornerò fra qualche tempo...

Ancora grazie e buon lavoro.

Lucia

Se vuoi semplificare *senza avere però la certezza assoluta*, questa funzione controlla che nella stringa passata ci sia una sottostringa di 16 caratteri con determinate caratteristiche: 6 lettere nelle prime 6 posizioni, 2 numeri alle posizioni 7-8, 10-11 e tre nelle posizioni 13-14-15. Si può estendere controllando cosa ci sono nelle altre posizioni. Non controlla però l'esattezza del dato:

Public Function f(ByVal s As String) As String

    Dim v() As String

    Dim lng1 As Long

    Dim lng2 As Long

    Dim bln As Boolean

    f = ""

    v = Split(s, " ")

    For lng1 = 0 To UBound(v)

        If Len(v(lng1)) = 16 Then

            bln = True

            For lng2 = 1 To 6

                If IsNumeric(Mid(v(lng1), lng2, 1)) Then bln = False

            Next

            If bln = True Then

                If IsNumeric(Mid(v(lng1), 7, 2)) Then

                    If IsNumeric(Mid(v(lng1), 10, 2)) Then

                        If IsNumeric(Mid(v(lng1), 13, 3)) Then

                            f = v(lng1)

                            Exit Function

                        End If

                    End If

                End If

            End If

        End If

    Next

End Function

Che puoi richiamare in Excel così:

A1: abc xxxxxx11x11x111x gfasgasf kllskl òlòqdkq

B1: =f(A1)

Oppure in qualsiasi programma che supporta il vb, passando la stringa alla funzione:

Public Sub m()

    MsgBox f("aaa as xxxxxx11x11c111x gs56bs8j93n ekhd")

End Sub

L'ho semplificata al massimo....

Per estrarre la partita iva, sapendo che la sua lunghezza è di 11 caratteri, puoi utilizzare lo stesso sistema di splittare la stringa e controllare se vi è un eventuale item di 11 caratteri tutti numerici.

Ripeto che non hai la sicurezza assoluta (non so in che forma ti arriva la stringa e se è costantemente in quella forma).

La risposta è stata utile?

0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-04-15T07:18:21+00:00

    Grazie Cinzia

    ho dato un'occhiata ai tuoi suggerimenti.

    Troppo complicato per me che sono all'inizio della programmazione vb!

    Comunque ci ritornerò fra qualche tempo...

    Ancora grazie e buon lavoro.

    Lucia

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-04-10T11:51:29+00:00

    ciao Lucia,

    mi sembra che l'unica strada percorribile sia tramite codice,

    prendere il campo, fare una split  del campo sullo spazio vedi funzione Split (http://msdn.microsoft.com/en-us/library/office/aa155763(v=office.10).aspx)

    dall'array di stringhe ottenuto prendere solo quelli lunghi 11 (PIVA) o lunghi 16 (CF) e applicare su questi la funzione di convalida PIVA e Codice Fiscale 

    http://community.visual-basic.it/lucianob/archive/2008/04/17/22591.aspx e

    http://answers.microsoft.com/it-it/office/forum/office_2003-access/convalida-partita-iva/efe277c5-3099-4ce4-9737-52a21f0198a2?msgId=4958367d-ae46-4af4-8c49-23b5332fd3fb

    se passano uno dei due controlli vuol dire che hai individuato l'informazione che cercavi

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-04-10T11:34:32+00:00

    Purtroppo non sempre ce l'ho...

    Il file arriva dalle poste e non posso chiedere nessuna miglioria...

    :-(

    Grazie lo stesso!

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-04-10T10:14:37+00:00

    Ciao Lucia,

    è chiaro che devi avere un riferimento fisso nella colonna come ad esempio C.F.

    NOTA. Dati personali rimossi dal moderatore

    quindi potresti utilizzare la funzione InStr per posizionarti e quindi estrarre i successivi 16 caratteri.

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento