Condividi tramite

Conversione file CSV

Anonimo
2023-07-18T07:41:41+00:00

Buongiorno

Ho convertito un file CSV in colonne , nella colonne B e D ottengo i dati precedentemente numerici in Data , come mai ? non so come ottenerli numerici , sapreste darmi informazioni a riguardo ?

Grazie.

Microsoft 365 e Office | Excel | 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

  1. Anonimo
    2023-07-19T01:16:26+00:00

    Ciao Lupetto,

    In assenza di informazioni specifiche, ipotizzando che il file csv da convertire sia l'ultimo file CSV scaricato in una directory specificata, come punto di partenza, in un modulo di codice standard, prova qualcosa del seguente genere:

    '========>>

    Option Explicit

    '-------->>

    Public Sub Tester()

    Dim srcWB As Workbook, destwB As Workbook 
    
    Dim srcSH As Worksheet, destSH As Worksheet 
    
    Dim srcRng As Range, destRng As Range 
    
    Dim rRow As Range 
    
    Dim arrIn As Variant, arrOut() As Variant, arrSplit As Variant, arrHeaders As Variant 
    
    Dim sFile As String, aStr As String, bstr As String 
    
    Dim sStr As String 
    
    Dim LRow As Long 
    
    Dim i As Long, j As Long, iCtr As Long 
    
    Const sPercorso = **"C:\Users\Lupetto\"                                    '<<=== Modifica** 
    
    Const sFoglio\_Destinazione As String = **"Foglio1"                   '<<=== Modifica** 
    
    Set destwB = ThisWorkbook 
    
    Set destSH = destwB.Sheets(sFoglio\_Destinazione) 
    
    sFile = Most\_RecentFile(sPercorso) 
    
    If Not sFile = vbNullString Then 
    
        sStr = Replace(sFile, "csv", "txt")          
    
        On Error Resume Next 
    
        Name sFile As sStr 
    
        On Error GoTo 0 
    
        Set srcWB = Workbooks.Open(sStr) 
    
        Set srcSH = srcWB.Sheets(1) 
    
        With srcSH 
    
            LRow = LastRow(srcSH, .Columns(1)) 
    
            Set srcRng = .Range("A1:A" & LRow) 
    
            arrIn = srcRng.Value 
    
            arrHeaders = Split(Replace(srcRng.Rows(1).Value, Chr(34), vbNullString), ",") 
    
           destSH.Cells(1).Resize(1, UBound(arrHeaders)+1).Value = arrHeaders 
    
            srcWB.Close Savechanges:=False 
    
            iCtr = 2 
    
            For i = 2 To UBound(arrIn) 
    
                bstr = arrIn(i, 1) 
    
                arrSplit = Split(bstr, ",") 
    
                Set destRng = destSH.Cells(iCtr, 1).Resize(1, UBound(arrSplit) + 1) 
    
                arrSplit(1) = Replace(arrSplit(1), Chr(34), vbNullString) 
    
                arrSplit(3) = Replace(arrSplit(3), Chr(34), vbNullString) 
    
                destRng.Value = arrSplit 
    
                iCtr = iCtr + 1 
    
            Next i 
    
            destRng.EntireColumn.AutoFit 
    
        End With 
    
    End If 
    

    End Sub

    '-------->>

    Public Function Most_RecentFile(sDirectory As String)

    Dim sFileName As String 
    
    Dim MostRecentFile As String 
    
    Dim MostRecentDate As Date 
    
    Dim sFileSpec As String 
    
    sFileSpec = "\*.csv" 
    
    sFileName = Dir(sDirectory & sFileSpec) 
    
    If sFileName <> "" Then 
    
        MostRecentFile = sFileName 
    
        MostRecentDate = FileDateTime(sDirectory & sFileName) 
    
        Do While sFileName <> "" 
    
            If FileDateTime(sDirectory & sFileName) > MostRecentDate Then 
    
                MostRecentFile = sFileName 
    
                MostRecentDate = FileDateTime(sDirectory & sFileName) 
    
            End If 
    
            sFileName = Dir 
    
        Loop 
    
    End If 
    
    Most\_RecentFile = MostRecentFile 
    

    End Function

    '--------->>

    Public Function LastRow(SH As Worksheet, _

    Optional Rng As Range, \_ 
    
    Optional minRow As Long = 1) 
    
    If Rng Is Nothing Then 
    
        Set Rng = SH.Cells 
    
    End If 
    
    On Error Resume Next 
    
    LastRow = Rng.Find(What:="\*", \_ 
    
        After:=Rng.Cells(1), \_ 
    
        Lookat:=xlPart, \_ 
    
        LookIn:=xlFormulas, \_ 
    
        SearchOrder:=xlByRows, \_ 
    
        SearchDirection:=xlPrevious, \_ 
    
        MatchCase:=False).Row 
    
    On Error GoTo 0 
    
    If LastRow < minRow Then 
    
        LastRow = minRow 
    
    End If 
    

    End Function

    '<<========

    Sospetto che possano emergere ulteriori dettagli che richiederanno modifiche a questo codice, ma è probabile che siano minori e non dovrebbero alterare l'approccio di base..

    Per il momento ho testato questo codice con i dati contenuti nel file che hai caricato su Microsoft OneDrive e ottengo i seguenti risultati:

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento

18 risposte aggiuntive

Ordina per: Più utili
  1. Gianfranco55 25,190 Punti di reputazione Moderatore volontario
    2023-07-18T09:24:02+00:00

    ciao

    mi converte in automatico e non si apre

    carica il csv su dropbox o similari e allega il link

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-07-18T09:20:12+00:00

    ciao

    nella colonne B e D ottengo i dati precedentemente numerici in Data , come mai ? non so come ottenerli numerici

    mica vedo numerici sul csv al limite sono testi

    1-2 viene letto come data ma ad occhio visto che è virgolettato

    è un testo non un numero.

    poi basta cambiare formattazione delle colonne

    ma a mio avviso è un testo

    se alleghi il csv magari vediamo

    ecco il Link dove scaricarlo

    https://1drv.ms/u/s!An6v6jhVtjCnm2O-0jfr9JsIhk3L?e=EBzbCQ

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Gianfranco55 25,190 Punti di reputazione Moderatore volontario
    2023-07-18T09:00:17+00:00

    ciao

    nella colonne B e D ottengo i dati precedentemente numerici in Data , come mai ? non so come ottenerli numerici

    mica vedo numerici sul csv al limite sono testi

    1-2 viene letto come data ma ad occhio visto che è virgolettato

    è un testo non un numero.

    poi basta cambiare formattazione delle colonne

    ma a mio avviso è un testo

    se alleghi il csv magari vediamo

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2023-07-18T08:55:24+00:00

    Ciao

    Sono Adeyemi e sarei felice di aiutarti con la tua domanda. In questo forum, siamo consumatori Microsoft proprio come te.

    Quando si importano dati da un file CSV in Excel, il programma tenta di rilevare automaticamente il tipo di dati per ogni colonna. A volte, Excel potrebbe interpretare erroneamente i dati numerici come date e formattare le celle di conseguenza.

    Per risolvere questo problema e visualizzare i dati nelle colonne B e D come valori numerici, è possibile provare a modificare il formato delle celle. Ecco come:

    1. Selezionare tutte le celle nelle colonne B e D che contengono i dati che si desidera formattare.
    2. Fare clic con il pulsante destro del mouse su una delle celle selezionate e scegliere "Formato celle" dal menu di scelta rapida.
    3. Nella finestra di dialogo "Formato celle", selezionare la categoria "Numero" a sinistra.
    4. Scegli il formato numerico desiderato dalle opzioni a destra, come "Numero" o "Generale".
    5. Fare clic su "OK" per applicare il nuovo formato alle celle selezionate.

    Spero che questo aiuti! Fammi sapere se hai domande o se c'è qualcos'altro che posso fare per aiutarti.

    Restituisci alla comunità. Aiuta la prossima persona che ha questo problema indicando se questa risposta ha risolto il tuo problema. Fai clic su Sì o No di seguito

    Saluti Adeyemi

    Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.

    La risposta è stata utile?

    0 commenti Nessun commento