Impossibile ottenere che Excel riconosca la data nella colonna


45

Ho costantemente problemi a lavorare con le date in Excel, devo fare qualcosa di sbagliato ma non capisco cosa.

Ho un foglio di calcolo, esportato dal nostro server di scambio, che contiene una colonna con le date attive. Sono usciti in formato USA anche se sono nel Regno Unito.

La colonna in questione è simile a questa

04/08/2012
04/09/2009
04/01/2010
04/21/2011
04/05/2012
08/30/2009
08/29/2010
08/28/2011

In Excel, ho evidenziato la colonna e selezionato Format Cells.... In questa finestra di dialogo, ho selezionato Date, selezionato English (United States)come locale e scelto il formato data corrispondente dall'elenco. Ho premuto OK e ho cercato di ordinare i dati in base a questa colonna.

Nella finestra di dialogo di ordinamento ho scelto questa colonna, selezionare l'ordinamento su Valori ma l'ordine mi dà solo le opzioni dalla A alla Z, non dalla più vecchia alla più recente come mi aspetterei.

Questo a sua volta ordina i dati della data in base alle prime due cifre.

Sono consapevole di poter riformattare questi dati in ISO e quindi il tipo dalla A alla Z funzionerebbe, ma non avrei dovuto farlo anch'io, ovviamente mi manca qualcosa. Che cos'è?

EDIT: ho incasinato la generosità ma questo avrebbe dovuto andare alla risposta @ r0berts , il suo primo suggerimento di Text to Columns senza delimitatore e la scelta di 'MDY' come il tipo di dati funziona. Inoltre, se hai un tempo (es. 04/21/2015 18:34:22), Devi prima sbarazzarti dei dati temporali. Tuttavia, dopo che il metodo suggerito da @ r0berts funziona bene.


Sospetto che il problema sia che Excel non sappia come farlo: puoi provarlo. Quando provi ad aggiornare il formato delle date, seleziona la colonna e fai clic destro su di essa e scegli formato celle (come già fai), ma scegli l'opzione 2001-03-14 (vicino alla fine dell'elenco). Sospetterò che solo alcuni dei formati di data si aggiornino correttamente, indicando che Excel lo sta ancora trattando come una stringa, non una data!
Dave,

Qual è il formato dei dati esportati? È CSV o XLSX?
Eccellente

Risposte:


70

Il problema: Excel non vuole riconoscere le date come date, anche se attraverso "Formatta celle - Numero - Personalizzato" stai esplicitamente cercando di dirle che sono date per " mm/dd/yyyy". Come sai; quando Excel ha riconosciuto qualcosa come una data, lo memorizza ulteriormente come un numero, ad esempio " 41004" ma viene visualizzato come data in base al formato specificato. Per aggiungere confusione, Excel può convertire solo una parte delle tue date come 08/04/2009, ma lascia altro ad esempio 28/07/2009 non convertito.

Soluzione: passaggi 1 e quindi 2

1) Seleziona la colonna della data. Sotto Dati selezionare il pulsante Testo in colonne. Alla prima schermata, lasciare il pulsante di opzione su " delimitato " e fare clic su Avanti . Deseleziona una delle caselle delimitatore (eventuali caselle vuote ; nessun segno di spunta) e fai clic su Avanti . In formato dati colonna selezionare Data e selezionare MDY nella casella combinata adiacente e fare clic su Fine . Ora hai i valori della data (cioè Excel ha riconosciuto i tuoi valori come Datetipo di dati), ma la formattazione è probabilmente ancora la data della locale, non quella mm/dd/yyyyche desideri.

2) Per visualizzare correttamente il formato data desiderato per gli Stati Uniti, devi prima selezionare la colonna (se non selezionata), quindi in Formato cella - Numero scegli Data E seleziona Impostazioni locali: inglese (USA) . Questo ti darà un formato come " m/d/yy". Quindi puoi selezionare Personalizzato e lì puoi digitare " mm/dd/yyyy" o sceglierlo dall'elenco di stringhe personalizzate.

Alternativa : usare LibreOffice Calc. Dopo aver incollato i dati dal post di Patrick, scegli Incolla speciale ( Ctrl+Shift+V) e scegli Testo non formattato. Si aprirà la finestra di dialogo "Importa testo". Il set di caratteri rimane Unicode ma per la lingua scegliere inglese (USA); dovresti anche selezionare la casella "Rileva numeri speciali". Le date vengono visualizzate immediatamente nel formato US predefinito e sono ordinabili per data. Se desideri lo speciale formato USA MM / GG / AAAA, devi specificarlo una volta tramite "Formato celle", prima o dopo l'incollaggio.

Si potrebbe dire: Excel avrebbe dovuto riconoscere le date non appena l'ho detto tramite "Formato cella" e non potrei essere più d'accordo . Purtroppo è solo attraverso il passaggio 1 dall'alto che sono stato in grado di far riconoscere a Excel queste stringhe di testo come date. Ovviamente se lo fai molto è dolore al collo e potresti mettere insieme una routine visiva di base che lo farebbe con la semplice pressione di un pulsante.

Dati | Testo in colonne

Aggiornamento sull'apostrofo iniziale dopo l'incollaggio: nella barra della formula puoi vedere che nella cella in cui la data non viene riconosciuta è presente un apostrofo iniziale. Ciò significa che nella cella formattata come numero (o data) è presente una stringa di testo. Si potrebbe dire: l'apostrofo principale impedisce al foglio di calcolo di riconoscere il numero. Devi sapere come cercare nella barra della formula per questo, perché il foglio di calcolo mostra semplicemente quello che sembra un numero allineato a sinistra. Per affrontare questo problema selezionare la colonna che si desidera correggere, scegliere nel menuData | Text to Columnse fai clic su OK. A volte sarai in grado di specificare il tipo di dati, ma se in precedenza hai impostato il formato della colonna in modo che sia il tuo tipo di dati specifico, non ti servirà. Il comando ha davvero lo scopo di dividere una colonna di testo in due o più utilizzando un delimitatore, ma funziona anche come un fascino per questo problema. L'ho provato in Libreoffice , ma c'è anche la stessa voce di menu in Excel .


Rivolgo entrambi i tuoi punti nel mio PO. Dividere i valori di data in colonne (e quindi reintegrarli in formato ISO) è ovviamente una possibilità, ma dato che Excel ha ampie funzioni di data integrate mi piacerebbe poterle sfruttare con i dati di data validi che ho. La tua seconda opzione è esattamente come descrivo ciò che non funziona per me.
Patrick,

Caro Patrick, per favore leggi attentamente. Oppure puoi usare Libre Office Calc - con i tuoi dati funziona subito - devi semplicemente pre-formattare la colonna per Data - Inglese (USA) e incollare "Incolla speciale" "Testo non formattato" - basta dire alla finestra di dialogo che la lingua è Inglese (USA) e non dimenticare di selezionare la casella per riconoscere i numeri speciali. Nella mia risposta ho cercato di accennare più forte che Excel non è coerente con questo (buggy) e devi ricorrere a questi passaggi 1 e quindi 2 per ottenere il risultato desiderato.
r0berts,

Avrei davvero dovuto leggere correttamente la tua domanda. Il tuo primo suggerimento funziona davvero. Avresti dovuto avere la generosità. Grazie per il vostro aiuto
Patrick

Suggerimento 1 funziona come un fascino. Grazie.
Adam,

Davvero una buona risposta !!!
Adders

8

Seleziona tutta la colonna e vai su Trova e sostituisci e basta sostituire "/"con /.


Puoi spiegare cosa fa questo per risolvere il problema?
fixer1234,

Questo ha funzionato davvero ed è stato facile. La cosa sostitutiva rimuove solo gli zeri
iniziali

2
Innanzitutto, QUESTO FUNZIONA. Soluzione migliore. Molto meglio della soluzione controllata :). Per fixer1234 e @PedroGabriel: non è che rimuove gli zeri. Nell'atto di sostituire il contenuto della cella, Excel valuta se la cella risultante contiene una formula, un testo o un numero. Dopo aver effettuato la sostituzione "/", interpreta la cella in modo che contenga ora un numero (che tecnicamente data è Excel), quindi ora è ordinabile correttamente. (Gli utenti intelligenti possono riconoscere la tecnica di trovare / sostituire con un carattere "=" in uno scenario simile con reinterpretazione di Excel.) Comunque Jair ha la soluzione ideale :)
MicrosoftShouldBeKickedInNuts

@MicrosoftShouldBeKickedInNuts oggi non ho idea del motivo per cui ho detto che sugli zeri, non aveva davvero nulla a che fare con gli zeri ... Questa è la risposta migliore, usando ancora questa. Saluti
Pedro Gabriel

3

Ho avuto lo stesso identico problema con le date in Excel. Il formato corrispondeva ai requisiti per una data in Excel, ma senza modificare ogni cella non riconoscerebbe la data e quando si ha a che fare con migliaia di righe non è pratico modificare manualmente ogni cella. La soluzione è eseguire una ricerca e sostituzione nella riga delle date in cui ho sostituito l'ipen con un trattino. Excel scorre attraverso la colonna sostituendo like con like ma il fattore risultante è che ora ricongiunge le date! FISSO!


3

Avevo a che fare con un problema simile con migliaia di righe estratte da un database SAP e, inspiegabilmente, due diversi formati di data nella stessa colonna di date (la maggior parte essendo il nostro standard "AAAA-MM-GG" ma circa il 10% essendo "MM- DD-YYY "). La modifica manuale di 650 righe una volta al mese non era un'opzione.

Nessuna (zero ... 0 ... zero) delle opzioni sopra ha funzionato. Sì, li ho provati tutti. Copiare in un file di testo o esportare esplicitamente in txt, in qualche modo, non ha avuto alcun effetto sul formato (o la mancanza di ciò) delle date del 10% che si sono semplicemente sedute nel loro angolo rifiutando di comportarsi.

L'unico modo in cui sono stato in grado di risolverlo è stato inserire una colonna vuota a destra della colonna della data che si comportava male e usando la seguente formula piuttosto semplicistica:

(supponendo che i tuoi dati di comportamento scorretto siano presenti Column D)

=IF(MID(D2,3,1)="-",DATEVALUE(TEXT(CONCATENATE(RIGHT(D2,4),"-",LEFT(D2,5)),"YYYY-MM-DD")),DATEVALUE(TEXT(D2,"YYYY-MM-DD")))

Potrei quindi copiare i risultati nella mia nuova colonna calcolata sopra le date di comportamento errato incollando "Valori" solo dopo i quali ho potuto eliminare la mia colonna calcolata.


3

Questo potrebbe non essere rilevante per l'interrogatore originale, ma potrebbe aiutare qualcun altro che non è in grado di ordinare una colonna di date.

Ho scoperto che Excel non avrebbe riconosciuto una colonna di date che erano tutte precedenti al 1900, insistendo sul fatto che erano una colonna di testo (dal 1/1/1900 ha un equivalente numerico 1, e apparentemente i numeri negativi non sono ammessi). Quindi ho fatto una sostituzione generale di tutte le mie date (che erano nel 1800) per inserirle nel 1900, ad esempio 180 -> 190, 181 -> 191, ecc. Il processo di smistamento ha poi funzionato bene. Alla fine ho fatto una sostituzione nell'altro modo, ad es. 190 -> 180.

Spero che questo aiuti qualche altro storico là fuori.


2

Sembra che Excel non riconosca le tue date come date, le riconosce come testo, quindi ottieni le opzioni di ordinamento dalla A alla Z. Se lo fai correttamente, dovresti ottenere qualcosa del genere:

http://i.stack.imgur.com/Qb4Pj.png

Pertanto, è importante assicurarsi che Excel riconosca la data. Il modo più semplice per farlo è utilizzare il collegamento CTRL+SHIFT+3.

Ecco cosa ho fatto ai tuoi dati. L'ho semplicemente copiato dal tuo post sopra e incollato in Excel. Quindi ho applicato il collegamento sopra e ho ottenuto l'opzione di ordinamento richiesta. Controlla l'immagine.

http://i.stack.imgur.com/yAa6a.png


2
Purtroppo quella scorciatoia non funziona per me.
Patrick,

Cosa fa il collegamento nel tuo sistema Patrick.
Firee,

3
La scorciatoia non sembra fare nulla. Ho diversi sistemi a disposizione con Office 2007, 2010 e 2013 e nessuno di essi reagisce al collegamento CTRL SHIFT 3. CTRL 1 apre correttamente la finestra di dialogo "formatta cella".
Patrick,

La scorciatoia da tastiera Ctrl + Maiusc + 3, indicata in modo un po 'sciatto come "Ctrl + Maiusc + #" qui , significa "Applica il formato della data con il giorno, il mese e l'anno." In Excel 2007, 2010, 2013 e 2016. (Specificamente , sul mio Excel 2013, è "d-mmm-yy".) Il documento Microsoft non spiega che le celle devono già contenere ... (continua)
Scott

(Segue) ... valori che Excel riconosce come dati di data / ora, e sembra che nessuno qui ha chiaramente spiegato che, dal momento che Patrick è in Inghilterra, la sua versione di Excel è riconoscere le stringhe come 04/08/2012, 04/09/2009e 04/01/2010come 4-ago-2012 , 4-set-2009 e 4-gen-2010, rispettivamente, e viene trattato 04/21/2011come una stringa di testo (perché non è disponibile il 21 ° mese). Poiché alcuni dei valori sono di testo (e alcuni dei valori, presumibilmente, sono stati effettivamente interpretati in modo errato), la formattazione (come ad esempio Ctrl + Maiusc + 3 scorciatoia da tastiera) non farà nulla di buono.
Scott,

2

Sospetto che il problema sia che Excel non è in grado di comprendere il formato ... Anche se selezioni il formato Data, rimane come Testo.

Puoi verificarlo facilmente: quando provi ad aggiornare il formato delle date, seleziona la colonna e fai clic con il tasto destro su di essa e scegli formato celle (come già fai) ma scegli l'opzione 2001-03-14 (vicino alla fine dell'elenco). Quindi rivedi il formato delle tue celle.

Sospetterò che solo alcuni dei formati di data si aggiornino correttamente, indicando che Excel lo sta ancora trattando come una stringa, non una data (notare i diversi formati nella schermata seguente)!

inserisci qui la descrizione dell'immagine

Ci sono soluzioni alternative per questo, ma nessuna di esse verrà automatizzata semplicemente perché esporti ogni volta. Suggerirei di utilizzare VBa, dove puoi semplicemente eseguire una macro che converte dal formato di data degli Stati Uniti al Regno Unito, ma ciò significherebbe copiare e incollare il VBa nel tuo foglio ogni volta.

In alternativa, si crea un Excel che legge i fogli Excel esportati appena creati (dallo scambio) e quindi si esegue il VBa per aggiornare il formato della data. Presumo che il file Excel esportato di Exchange avrà sempre lo stesso nome file / directory e fornirà un esempio funzionante:

Quindi, crea un nuovo foglio Excel, chiamato ImportedData.xlsm (Excel abilitato). Questo è il file in cui importeremo il file Excel esportato di Exchange!

Aggiungi questo VBa al file ImportedData.xlsm

Sub DoTheCopyBit()

Dim dateCol As String
dateCol = "A"        'UPDATE ME TO THE COLUMN OF THE DATE COLUMN

Dim directory As String, fileName As String, sheet As Worksheet, total As Integer

Application.ScreenUpdating = False
Application.DisplayAlerts = False

directory = "C:\Users\Dave\Desktop\"                   'UPDATE ME
fileName = Dir(directory & "ExportedExcel.xlsx")       'UPDATE ME (this is the Exchange exported file location)

Do While fileName <> ""

'MAKE SURE THE EXPORTED FILE IS OPEN
Workbooks.Open (directory & fileName)

Workbooks(fileName).Worksheets("Sheet1").Copy _

Workbooks(fileName).Close

fileName = Dir()

Loop

Application.ScreenUpdating = True
Application.DisplayAlerts = True

Dim row As Integer
row = 1
Dim i As Integer
Do While (Range(dateCol & row).Value <> "")

     Dim splitty() As String
     splitty = Split(Range(dateCol & row).Value, "/")
     Range(dateCol & row).NumberFormat = "@"
     Range(dateCol & row).Value = splitty(2) + "/" + splitty(0) + "/" + splitty(1)
     Range(dateCol & row).NumberFormat = "yyyy-mm-dd"
     row = row + 1
Loop


End Sub

Quello che ho anche fatto è stato aggiornare il formato della data a yyyy-mm-dd perché in questo modo, anche se Excel ti offre il filtro di ordinamento AZ anziché i valori più recenti, funziona ancora!

Sono sicuro che il codice sopra ha bug ma ovviamente non ho idea del tipo di dati che hai ma l'ho testato con una singola colonna di date (come hai fatto) e funziona bene per me!

Come posso aggiungere VBA in MS Office?


beh ... lo lascerò per un paio di giorni per dargli un po 'di visibilità in più, ma questa sembra una risposta solida. Questo è assolutamente folle, però, non posso credere che sia necessario. Dato che ho sistemato i dati alla fonte con una piccola funzione in PowerShell per capovolgerli in formato ISO a quel punto non mi interessa se Excel lo riconosce come una data: /
Patrick


1

L'avevo capito!

C'è uno spazio all'inizio e alla fine della data.

  1. Se usi trova e sostituisci e premi la barra spaziatrice, NON funzionerà.
  2. Devi fare clic prima del numero del mese, premere Maiusc e la freccia sinistra per selezionare e copiare. A volte è necessario utilizzare il mouse per selezionare lo spazio.
  3. Quindi incollalo come spazio in cerca e sostituisci e tutte le tue date diventeranno date.
  4. Se c'è spazio e data Selezionare Dati> Vai a Dati> Testo in colonne> Delimitato> Spazio come separatore e quindi finire.
  5. Tutti gli spazi verranno rimossi.

Il motivo per cui trova e sostituisci non funziona con la barra spaziatrice è che il divario è molto probabilmente una scheda.
Patrick,

0

Se Excel rifiuta ostinatamente di riconoscere la tua colonna come data, sostituiscila con un'altra:

  • Aggiungi una nuova colonna a destra della vecchia colonna
  • Fare clic con il tasto destro del mouse sulla nuova colonna e selezionare Format
  • Imposta il formato su date
  • Evidenzia l'intera colonna precedente e copiarla
  • Evidenzia la cella superiore della nuova colonna e seleziona Paste Special e incolla solovalues
  • Ora puoi rimuovere la vecchia colonna.

Ho provato questo, si comporta allo stesso modo con la nuova colonna. Vedi la risposta di Dave, il tappo dello schermo in alto è quello che ottengo, non importa quante volte lo sposto tra le colonne.
Patrick

Prova a forzare il problema utilizzando la funzione DATEVALUE (colonna precedente) nella formula sulla nuova colonna, quindi utilizza l'elenco a discesa Formattazione numerica sulla barra multifunzione della barra multifunzione per selezionare Data breve / lunga.
harrymc,

0

Ho semplicemente copiato il numero 1 (uno) e l'ho moltiplicato nella colonna della data (dati) usando la funzione PASTE SPECIAL. Passa quindi alla formulazione generale ovvero 42102 Quindi passa alla quindi applica la data sulla formulazione e ora la riconosce come data.

Spero che sia di aiuto


0

Tutte le soluzioni di cui sopra - incluso r0berts - non hanno avuto successo, ma hanno trovato questa bizzarra soluzione che si è rivelata la soluzione più rapida.

Stavo cercando di ordinare le "date" su un foglio di calcolo delle transazioni del conto scaricato.

Questo è stato scaricato tramite il browser CHROME. Nessuna manipolazione delle "date" le avrebbe riconosciute come ordinabili dal vecchio al nuovo.

Ma poi ho scaricato tramite il browser INTERNET EXPLORER - fantastico - ho potuto ordinare istantaneamente senza toccare una colonna.

Non riesco a spiegare perché diversi browser influenzano la formattazione dei dati, tranne per il fatto che lo ha fatto chiaramente ed è stata una soluzione molto rapida.


0

La mia soluzione nel Regno Unito: avevo le mie date con punti in questo modo:

03.01.17

Ho risolto questo con il seguente:

  1. Evidenzia l'intera colonna.
  2. Vai a trovare e selezionare / sostituire.
  3. Ho sostituito tutti i punti di arresto con trattino centrale, ad es. 03.01.17 03-01-17.
  4. Mantieni la colonna evidenziata.
  5. Formatta celle, scheda numero seleziona data.
  6. Usa il tipo 14-03-12(essenziale per il mio per avere il trattino centrale)
  7. Locale Inglese (Regno Unito)

Quando si ordina la colonna, vengono ordinate tutte le date dell'anno.


0

Ho provato i vari suggerimenti, ma ho scoperto che la soluzione più semplice per me era la seguente ...

Vedi le immagini 1 e 2 per l'esempio ... (nota: alcuni campi sono stati nascosti intenzionalmente in quanto non contribuiscono all'esempio). Spero che aiuti...

  1. Field C - un formato misto che mi ha fatto impazzire. Ecco come i dati provenivano direttamente dal database e non avevano spazi extra o caratteri pazzi. Quando lo si visualizza come testo, ad esempio, l'01 / 01/2016 viene visualizzato come un valore di tipo "42504", mescolato con il 15/04/2006, che viene mostrato così com'è.

  2. Campo F - dove ho ottenuto la lunghezza del campo C (la formula LEN sarebbe una lunghezza di 5 di 10 a seconda del formato della data). Il campo è in formato Generale per semplicità.

  3. Campo G - ottenere il componente mese della data mista - in base al risultato della lunghezza nel campo F (5 o 10), ottengo il mese dal valore della data nel campo C, oppure ottengo i caratteri del mese nella stringa.

  4. Campo H - ottenere il componente del giorno della data mista - in base al risultato della lunghezza nel campo F (5 o 10), ottengo il giorno dal valore della data nel campo C, oppure ottengo i caratteri del giorno nella stringa.

Posso farlo anche per l'anno, quindi creare una data dai tre componenti che sia coerente. Altrimenti, posso utilizzare i singoli valori di giorno, mese e anno nella mia analisi.

Immagine 1: foglio di calcolo di base che mostra valori e nomi dei campi

Immagine 2: foglio di calcolo che mostra le formule corrispondenti alla spiegazione sopra

Spero che aiuti.


(1) Anche se è bello pubblicare un'immagine sullo schermo per dimostrare che la tua risposta funziona davvero, preferiamo che le formule nella tua soluzione siano pubblicate come testo nel corpo della tua risposta, in modo che le persone possano copiarle e incollarle. (2) Sembra che tu capisca il problema - che date numeriche come 04/08sono ambigue. 04/08sarà interpretato come l'8 aprile in alcuni locali (come gli Stati Uniti) e il 4 agosto in altri (come l'Inghilterra). Ma questi sono ambigui proprio perché il numero del mese e il giorno del mese sono diversi. ... (proseguendo)
Scott,

(Proseguendo) ... Allora perché dovresti usare  date non ambigue come 01/01nella tua risposta? (3) In realtà, non sono sicuro che tu capisca il problema o che la tua risposta funzioni davvero, in quanto il tuo foglio ha righe in cui il mese # è 15; quello sembra essere un errore evidente. E, dato che 04/15non è ambiguo - deve significare il 15 aprile - non ha senso che il tuo metodo analizzi 01/11come il primo giorno dell'undicesimo mese. ... (proseguendo)
Scott,

(Proseguendo) ... (4) Va sottolineato che, nella migliore delle ipotesi, risponderai gestirà solo le date che assomigliano a nn / nn / nnnn . Fallirà in date come 5/8, 5/08, 5/28, 05/8, e 11/8. Inoltre - fatto divertente - la tua risposta fallirà in date ≤ 17 maggio 1927 e ≥ 17 ottobre 2173. Non importa il problema Y10K; potremmo iniziare ad avere problemi già tra 154 anni! (5) Dici: "Posso farlo anche per l'anno, quindi creare una data dai tre componenti che sia coerente." Allora perché non lo fai, e mostralo ? ... (proseguendo)
Scott,

(Proseguendo) ... È particolarmente difficile verificare che il tuo metodo funzioni quando ne presenti una versione incompleta; uno che non mostra il mese, il giorno e l'anno riassemblati in una data. (6) Come ho detto a Patsaeed , sarebbe stato bello se tu avessi usato i dati del PO, dalla domanda, piuttosto che inventare i tuoi. Non riuscendo a utilizzare i dati del PO, sarebbe stato bello se tu avessi usato quelli di Patsaeed, quindi almeno saremmo stati in grado di confrontare le mele con le mele. ... (proseguendo)
Scott,

(Proseguendo) ... E, sia che tu utilizzi i dati dell'OP o quelli di qualcun altro, sarebbe stato bello se tu avessi mostrato l'input originale al tuo scenario. (Ad esempio, per la riga 7, vero 01/11/2016o  11/01/2016?) E, se hai intenzione di utilizzare i tuoi dati, sarebbe bello se tu avessi incluso le date dello stesso mese che dimostrano (ad esempio) come 1/11e come 1/21vengono gestite in modo diverso. E perché avere dati duplicati? Hai sprecato 19 righe usando gli stessi quattro valori più volte, distribuiti su 23 righe.
Scott,

0

CONDIVIDERE UNA PICCOLA LUNGA MA MOLTA SOLUZIONE PIÙ FACILE DA SOGGETTARE ..... Non c'è bisogno di eseguire macro o cose geek ... semplici ms Excel formule e modifica.

le date miste superano l'istantanea:

inserisci qui la descrizione dell'immagine

  • La data è in formato misto.
  • Pertanto, per creare un formato data simmetrico, sono state create colonne extra convertendo la colonna data 'formato misto' in TEXT.
  • Da quel testo abbiamo identificato le posizioni di "/" e il testo centrale è stato estratto determinando data, mese, anno usando la formula MID.
  • Quelle che erano originariamente date, la formula terminò con ERRORE / #VALUErisultato. - Infine, dalla stringa che abbiamo creato - li abbiamo convertiti in date per formula DATE.
  • #VALUE sono stati scelti così come sono stati aggiunti da IFERROR alla formula DATA e la colonna è stata formattata come richiesto (qui, gg / mmm / aa)

* FARE RIFERIMENTO ALL'ISTANTANEA DI EXCEL SHEET SOPRA (= le date miste superano l'istantanea) *


(1) Anche se è bello pubblicare un'immagine sullo schermo per dimostrare che la tua risposta funziona davvero, preferiamo che le formule nella tua soluzione siano pubblicate come testo nel corpo della tua risposta, in modo che le persone possano copiarle e incollarle. (2) le formule come mostrato nell'immagine sono sbagliate, in quanto si riferiscono a colonne  V, We  Xquando dovrebbero essere riferiscono a colonne  B, C, e  D. ... (proseguendo)
Scott,

(Proseguendo) ... (3) Sarebbe stato bello se tu avessi usato i dati del PO, dalla domanda, piuttosto che inventare i tuoi. E, sia che tu utilizzi i dati dell'OP o i tuoi, sarebbe stato carino se tu avessi mostrato l'input originale al tuo scenario (ad esempio, per la riga 9, è 5/8/2014o  5/08/2014). E, se hai intenzione di utilizzare i tuoi dati, sarebbe stato bello se tu avessi incluso le date dello stesso mese, per dimostrare (ad esempio) come 5/8e come 5/28sono gestiti in modo diverso. E perché avere dati duplicati? Hai sprecato sei righe usando gli stessi valori più di una volta.
Scott,

0

Questo succede sempre quando si scambiano dati relativi alla data tra le impostazioni locali in Excel. Se hai il controllo sul programma VBA che esporta i dati, ti suggerisco di esportare il numero che rappresenta la data anziché la data stessa. Il numero si correla in modo univoco con una singola data, indipendentemente dalla formattazione e dalle impostazioni internazionali. Ad esempio, invece del file CSV che mostra il 24/09/2010 mostrerà 40445.

Nel ciclo di esportazione quando tieni ciascuna cella, se è una data, converti in numero usando CLng (myDateValue). Questo è un esempio del mio ciclo che attraversa tutte le righe di una tabella ed esporta in CSV (nota che sostituisco anche le virgole nelle stringhe con un tag che rimuovo durante l'importazione, ma potrebbe non essere necessario):

arr = Worksheets(strSheetName).Range(strTableName & "[#Data]").Value

    For i = LBound(arr, 1) To UBound(arr, 1)
        strLine = ""
        For j = LBound(arr, 2) To UBound(arr, 2) - 1
            varCurrentValue = arr(i, j)
            If VarType(varCurrentValue) = vbString Then
                varCurrentValue = Replace(varCurrentValue, ",", "<comma>")
            End If
            If VarType(varCurrentValue) = vbDate Then
                varCurrentValue = CLng(varCurrentValue)
            End If
            strLine = strLine & varCurrentValue & ","
        Next j
        'Last column - not adding comma
        varCurrentValue = arr(i, j)
            If VarType(varCurrentValue) = vbString Then
                varCurrentValue = Replace(varCurrentValue, ",", "<comma>")
            End If
            If VarType(varCurrentValue) = vbDate Then
                varCurrentValue = CLng(varCurrentValue)
            End If
        strLine = strLine & varCurrentValue

        strLine = Replace(strLine, vbCrLf, "<vbCrLf>") 'replace all vbCrLf with tag - to avoid new line in output file
        strLine = Replace(strLine, vbLf, "<vbLf>") 'replace all vbLf with tag - to avoid new line in output file
        Print #intFileHandle, strLine
    Next i

0

Non ho avuto fortuna con tutti i suggerimenti di cui sopra - ho trovato una soluzione molto semplice che funziona come un fascino. Incolla i dati in Fogli Google, evidenzia la colonna della data, fai clic su formato, quindi su numero e numero ancora una volta per cambiarlo nel formato numero. Quindi copio e incollo i dati nel foglio di calcolo di Excel, faccio clic sulle date, quindi formatta le celle fino ad oggi. Molto veloce. Spero che sia di aiuto.


0

Questo problema mi stava facendo impazzire, poi mi sono imbattuto in una soluzione semplice. Almeno ha funzionato per i miei dati. È facile da fare e da ricordare. Ma non so perché questo funzioni, ma cambiando i tipi come indicato sopra non lo è. 1. Seleziona le colonne con le date 2. Cerca un anno nelle tue date, ad esempio 2015. Seleziona Sostituisci tutto con lo stesso anno, 2015. 3. Ripeti per ogni anno. Ciò modifica i tipi in date effettive, anno per anno.
Questo è ancora ingombrante se hai molti anni nei tuoi dati. Più veloce è cercare e sostituire 201 con 201 (per sostituire dal 2010 al 2019); sostituire 200 con 200 (per sostituire 2000 fino al 2009); e così via.


0

Seleziona le date ed esegui questo codice su di esso.

On Error Resume Next
    For Each xcell In Selection            
        xcell.Value = CDate(xcell.Value)     
    Next xcell                              
End Sub

-1

Uso un mac.

Vai a Preferenze Excel> Modifica> Opzioni data> Converti automaticamente il sistema data

Anche,

Vai a Tabelle e filtri> Raggruppa le date durante il filtraggio.

Il problema probabilmente è iniziato quando hai ricevuto un file con un sistema di data diverso e questo ha rovinato la tua funzione di data eccellente


-2

Di solito creo solo una colonna aggiuntiva per scopi di ordinamento o totalizzazione, quindi usa year(a1)&if len(month(a1))=1,),"")&month(a1)&day(a1) .

Ciò fornirà un yyyymmddrisultato che può essere ordinato. L'uso di len(a1)just consente di aggiungere uno zero in più per i mesi 1-9.


2
Questo non sarà d'aiuto poiché le date non vengono riconosciute come date. Inoltre, l'uso di colonne extra per scopi di ordinamento è raramente necessario
CallumDA,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.