Excel cambia le date dove il giorno è inferiore al mese (E.G 2 aprile) al contrario (E.G 4 ° feb)

StackOverflow https://stackoverflow.com//questions/25077178

  •  02-01-2020
  •  | 
  •  

Domanda

Sto avendo un po 'di rodole con Excel e date. La situazione è la seguente: Abbiamo un rapporto mensile con un numero di schede che la macro import in un foglio di calcolo centrale, ha circa 120 colonne. Dopo l'importazione, ho bisogno di aggiungere alcune formule nelle poche colonne finali che sono rilevanti per i dati ma non incluse nei dati, e uno di questi è il numero del periodo (lavoriamo per un cliente con l'anno a partire dal 1 ° e 13 aprile periodi di 4 settimane nell'anno). Per compongare questo, ho un foglio separato con tutte le date nella colonna A, quindi periodi e altri dati nelle seguenti colonne. Un semplice Vlookup cerca la data e restituisce il periodo.

Tuttavia, alcune delle date vengono memorizzate come testo (e così il Vlookup ha # N / A), correzione semplice, pasta speciale - aggiungi una cella vuota e voilà funziona. E questo funziona se lo faccio manualmente. Ma questo è destinato a fare tutto il lavoro per l'utente, quindi ho provato a farlo in modo programmatico secondo il codice qui sotto:

'Sheets("dates and Periods").Activate
'Range("P1").Copy
'Sheets("Data").Activate
'Range(Cells(2, 5), Cells(lastrow, 5)).PasteSpecial xlPasteValues, xlPasteSpecialOperationAdd
'Range(Cells(2, 5), Cells(lastrow, 5)).NumberFormat = "dd/mm/yyyy"
.

Prendo la cella vuota da "date e periodi" perché so che sarà sicuramente vuoto.

Ora quando eseguo questo codice, funziona per la maggior parte dei valori. Tuttavia per tutte le date nella colonna E dove il giorno è più piccolo del mese, ad esempio il 1 aprile, il 4 maggio, ecc. Compra il giorno e il mese in giro, e questo non è la formattazione, passando a termine a lungo posso vedere che ha cambiato il dati intorno.

C'è un modo per aggirare questo? Ho cercato una soluzione, ma tutti i problemi che ho potuto trovare quando la ricerca doveva fare con il sistema di data del 1904 o con la formattazione.

Qualsiasi aiuto sarebbe apprezzato.

Soluzione: [rompendolo in parti e metterlo indietro insieme]

For Each cell In Range(Cells(2, 5), Cells(lastrow, 5))

cell.Value = Mid(cell, 4, 2) & "/" & Left(cell, 2) & "/" & Right(cell, 4)

Next cell
.

È stato utile?

Soluzione

Ho avuto questo problema molte volte.La risposta è solitamente specifica per la soluzione, ma è possibile provare a convertire la data in una stringa in formato DD-MMM-YYYY, quindi torna indietro.

Altri suggerimenti

Quando si inserisce qualcosa che sembra una data in una cella Excel, lo analizzerà in base alle impostazioni regionali di Windows. Le stringhe che non si adattano sono entrate come testo, le stringhe che vengono trasformate in date di Excel. Quest'ultimo di solito non sarà lo stesso della data prevista.

Suggerirei di correggerlo durante il processo di importazione. Esattamente come farlo dipende da specifiche che non hai incluso, ma il processo è utilizzare il processo di dati / import e passare attraverso la procedura guidata di importazione del testo. Quel wizard ti consentirà di specificare il formato per ogni colonna; Compreso il formato della data per E. che garantirà che tutte le date siano adeguatamente comprese da Excel come date. Quindi, se il formato della data in entrata è MDY, specificare MDY; ed Excel lo memorizzerebbe correttamente, quindi visualizzarlo nell'impostazione predefinita o in qualsiasi modo il modo in cui si formatta tale colonna.

Un'altra opzione, se possibile, sarebbe di modificare il generatore di report in modo che genera date che si trovano nello stesso formato del formato di data breve delle impostazioni regionali di Windows

Import IMPORTARE un gran numero di file inviati via email in basi di dati e questo è coerentemente un problema.Il problema non è causato da dati errati, da una cattiva formattazione o da tale cosa, ma semplicemente un errore in Excel (credo che Microsoft lo chiamino una funzione), dove cerca di comprendere le date nel formato americano e automaticamente "corregge" qualsiasi cosa introva.È peggiorato perché se una data non funziona nel formato americano, lo converte in un file di testo lasciandoti con alcune date formattate in un modo, un altro.

L'unica soluzione che ho trovato è quella di modificare i dati sul foglio sorgente in modo che Excel non riesca a capirlo come una data in alcun modo, quindi importarlo, quindi convertirlo, un enorme Phaff.Microsoft Si prega di spedirlo, sta sprecando così tanto tempo programmazione del tempo di programmazione!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top