Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    7

    VBA funzione MID con ciclo do while

    Buonasera a tutti,
    ho un problema per cui sto sbattendo la testa ovunque ma non ne vengo a capo.
    vi espongo il problema:

    ho dei file txt con + di 60k record ognuno

    ogni record è formato da 4 stringhe

    in ogni stringa sono riportati dati differenti

    quello che devo fare io è:
    estrapolare per ogni record sulle diverse stringhe 6/7 valori


    incollo un esempio per farvi capire meglio



    071171209000029 64060609220909220909300000000000000000000000000000 100000000 000130001
    081171209000029 10000549953709 00003171288 Cons. di ALESSANDRIA 4 207000086 130001
    101171209000029 00000000000000000000000000000000000000000000000479 4000000000000000 000000 001130001
    111171209000029 ciccio pasticcio 130001



    per la stringa che inizia con "07" mi serve prendere dal 6 carattere all'8 che indica l'anno
    sempre per la stessa stringa ho bisogno anche dal caratter 19 al 25 che indica la data del sinistro
    e così via.
    farlo a mano non farei in tempo neanche fra 50 anni,
    stavo cercando di creare qualcosa in vba o anche una macro che mi legga tutto il file e mi estrapoli i dati magari in un'altro foglio indicizzato.
    grazie in anticipo per il vostro aiuto!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Tutte le versioni di VB (quindi, anche VBA) e tutti i linguaggi .NET sono trattati nel forum "Visual Basic e .NET Framework".

    Sposto la discussione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    304
    Non vedo dove sta il problema,
    apri il file, leggi una riga alla volta, e per ogni riga estrai i dati che ti servono con la funzione MID, e poi i dati estratti li vai a mettere dove vuoi.
    Se non mostri un po' di codice che hai scritto non ti si può aiutare più di così.

    Nella stringa 071171209000029 hai detto che dal sesto all'ottavo carattere c'è l'anno, io vedo 120 che non capisco proprio che anno è.

    Sergio

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    7
    i = 1
    riga = 1


    Do While Cells(i, 1) <> ""
    If Mid(Cells(i, 1), 1, 2) = "07" Then

    ora dovrebbe startare dal carattere 8 , 2 = "09"
    e riportarlo su un altro foglio excel

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Quote Originariamente inviata da cheta Visualizza il messaggio
    i = 1
    riga = 1


    Do While Cells(i, 1) <> ""
    If Mid(Cells(i, 1), 1, 2) = "07" Then

    ora dovrebbe startare dal carattere 8 , 2 = "09"
    e riportarlo su un altro foglio excel
    Ma dov'è il codice che legge dal file?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    7
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Ma dov'è il codice che legge dal file?


    scusa lavorando da un foglio excel apro l'editor vba creo un modulo e una funzione al suo interno.

    111.jpg
    il risultato che dovrei ottenere è questo
    ma sono un po niubbo di vba..

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    304
    Quote Originariamente inviata da cheta Visualizza il messaggio
    i = 1
    riga = 1


    Do While Cells(i, 1) <> ""
    If Mid(Cells(i, 1), 1, 2) = "07" Then

    ora dovrebbe startare dal carattere 8 , 2 = "09"
    e riportarlo su un altro foglio excel
    codice:
    Dim Anno As Integer
    Anno = Val(Mid(Cells(i, 1), 8, 2))
    Anno è una variabile numerica, se invece ti serve che sia una stringa:
    codice:
    Dim Anno As String
    Anno = Mid(Cells(i, 1), 8, 2)
    Sergio

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    7
    Quote Originariamente inviata da SirJo Visualizza il messaggio
    codice:
    Dim Anno As Integer
    Anno = Val(Mid(Cells(i, 1), 8, 2))
    Anno è una variabile numerica, se invece ti serve che sia una stringa:
    codice:
    Dim Anno As String
    Anno = Mid(Cells(i, 1), 8, 2)
    Sergio
    Sergio,
    grazie del tuo aiuto,
    un'ultima cosa,dove metto la parte che mi importa il risultato in una tabella?

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    7
    Function estrai()
    Dim i As Integer
    Dim anno As Integer
    i = 1
    Do While Sheets(sx2009).Cells(i, 1) <> ""
    If Mid(Cells(i, 1), 1, 2) = "07" Then
    anno = Val(Mid(Cells(i, 1), 8, 2))
    Exit Do
    End If
    i = i + 1
    Loop
    End Function


    ho fatto questo ma non worka

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Quote Originariamente inviata da cheta Visualizza il messaggio
    Function estrai()
    Dim i As Integer
    Dim anno As Integer
    i = 1
    Do While Sheets(sx2009).Cells(i, 1) <> ""
    If Mid(Cells(i, 1), 1, 2) = "07" Then
    anno = Val(Mid(Cells(i, 1), 8, 2))
    Exit Do
    End If
    i = i + 1
    Loop
    End Function


    ho fatto questo ma non worka
    Che non "worka" non vuol dire niente.. in cosa non funziona?
    Devi dirgli dove mettere il valore estratto.. no?
    Prova così:
    codice:
    Dim i As Integer
    Dim anno As Integer
    i = 1
    Do While Sheets(sx2009).Cells(i, 1) <> ""
    If Mid(Cells(i, 1), 1, 2) = "07" Then
        anno = Val(Mid(Cells(i, 1), 8, 2))
    'Exit Do <-----?????
    Sheets(sx2009).Cells(i, COLONNA_CHE_TI_PARE).value = anno
    End If
    i = i + 1
    Loop
    End Function

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.