Не вдається заставити Excel розпізнавати дату в стовпці


45

У мене постійно виникають проблеми з датами в Excel, я мушу щось робити не так, але я не розумію, що.

У мене є електронна таблиця, експортована з нашого обмінного сервера, що містить стовпчик з датами. Вони вийшли у форматі США, хоча я перебуваю у Великобританії.

Розглянута колонка виглядає приблизно так

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

У Excel я виділив стовпчик і вибрав Format Cells.... У цьому діалоговому вікні я вибрав Date, обраний English (United States)як локальний і вибрав зі списку відповідний формат дати. Я натискаю ОК і намагаюся сортувати дані за цим стовпцем.

У діалоговому вікні сортування я вибираю цей стовпець, вибираю сортування за значеннями, але замовлення дає мені лише варіанти від А до Я, не найдавніші до найновіших, як я очікував.

Це в свою чергу сортує дані дати за першими двома цифрами.

Я усвідомлюю, що міг би переформатувати ці дані в ISO, і тоді сортування від A до Z буде працювати, але я не повинен мати цього, я, очевидно, щось пропускаю. Що це?

EDIT: Я переплутав баунті, але це повинно було відповісти на @ r0berts , його перша пропозиція "Текст до стовпців" без обмежувача та вибравши "MDY" як тип даних. Крім того, якщо у вас є час (тобто 04/21/2015 18:34:22), потрібно спочатку позбутися даних про час. Однак після цього запропонований @ r0berts спосіб працює добре.


Я б підозрював, що Excel не знає, як це зробити - ви можете протестувати. Коли ви намагаєтесь оновити формат дат, виберіть стовпчик і клацніть правою кнопкою миші на ньому та виберіть формати клітинок (як ви це вже робили), але виберіть варіант 2001-03-14 (біля нижньої частини списку). Я підозрюю, що лише деякі формати дати оновляються правильно, вказуючи на те, що Excel як і раніше трактує його як рядок, а не дату!
Дейв

Який формат експортованих даних? Це CSV чи XLSX?
Excellll

Відповіді:


70

Проблема: Excel не хоче розпізнавати дати як дати, навіть незважаючи на те, що через "Формат комірок - Число - Спеціальний" ви явно намагаєтесь сказати, що це дати " mm/dd/yyyy". Як ти знаєш; коли excel розпізнав щось як дату, він додатково зберігає це як число - наприклад " 41004", але відображається як дата у вказаному вами форматі. Щоб додати плутанину, excel може конвертувати лише частину ваших дат, таких як 04.04.2009, але залишати інші, наприклад, 28.07.2009, без перетворень.

Рішення: кроки 1 і 2

1) Виберіть стовпчик дати. У розділі Дані виберіть кнопку Текст до стовпців. На першому екрані залиште перемикач на " розділеному " та натисніть кнопку Далі . Видаліть будь-яке поле з роздільником (будь-які поля порожні ; немає галочок) і натисніть кнопку Далі . У розділі Формат даних стовпців виберіть « Дата» та виберіть MDY у сусідньому комбінованому полі та натисніть « Готово» . Тепер ви отримали значення дат (тобто Excel визнав ваші значення як Dateтип даних), але форматування, ймовірно, все-таки дата мовлення, а не mm/dd/yyyyпотрібне.

2) Щоб правильно відобразити потрібний формат дати в США, спочатку потрібно вибрати стовпець (якщо його не вибрано), а потім у розділі Формат комірки - Номер вибрати Дата І вибрати Місцевий: Англійський (США) . Це дасть вам такий формат, як " m/d/yy". Тоді ви можете вибрати Спеціальний і там ви можете або набрати " mm/dd/yyyy", або вибрати це зі списку користувацьких рядків.

Альтернатива : використовувати LibreOffice Calc. Після вставки даних із публікації Патріка виберіть «Вставити спеціальне» ( Ctrl+Shift+V) та виберіть «Неформатований текст». Це відкриє діалогове вікно "Імпорт тексту". Набір символів залишається Unicode, але для мови вибирайте англійську (США); також слід встановити прапорець "Виявити спеціальні номери". Ваші дати одразу з’являються у стандартному форматі США та можуть бути відсортовані. Якщо ви бажаєте спеціального американського формату MM / DD / YYYY, вам потрібно вказати це один раз за допомогою "Формат комірок" - до або після вставки.

Можна сказати - Excel повинен був визнати дати, як тільки я повідомив це через "Cell Format", і я не міг погодитися більше . На жаль, лише через крок 1 зверху я зміг змусити Excel розпізнавати ці текстові рядки як дати. Очевидно, що якщо ви цим займаєтеся багато, це біль у шиї, і ви можете скласти візуальний основний розпорядок, який би зробив це для вас одним натисканням кнопки.

Дані | Текст до стовпців

Оновлення про головний апостроф після вставки: Ви можете побачити на панелі формул, що в комірці, де дата не розпізнається, є провідний апостроф. Це означає, що у комірці, відформатованій як число (або дата), є текстовий рядок. Можна сказати - провідний апостроф заважає електронній таблиці розпізнавати число. Для цього потрібно знати, щоб шукати у рядку формул - адже електронна таблиця просто відображає те, що схоже на ліворівневе число. Щоб вирішити цю проблему, виберіть стовпчик, який потрібно виправити, виберіть у менюData | Text to Columnsі натисніть кнопку ОК. Іноді ви зможете вказати тип даних, але якщо ви раніше встановили формат стовпця для вашого конкретного типу даних, він вам не знадобиться. Команда дійсно призначена для розділення текстового стовпця на два чи більше, використовуючи роздільник, але це також працює як шарм для цієї проблеми. Я перевірив це в Libreoffice , але в Excel є той самий пункт меню .


Я звертаюсь до обох ваших пунктів у моїй ОП. Розбиття значень дати на стовпці (а потім реінтеграція у форматі ISO) - це, звичайно, можливість, але враховуючи, що Excel має великі вбудовані функції дат, я хотів би мати можливість використовувати їх за допомогою дійсних даних про дату. Ваш другий варіант - саме так, як я описую те, що не працює для мене.
Патрік

Шановний Патріку, будь ласка уважно прочитайте. Або ви можете скористатися Libre Office Calc - з вашими даними це працює відразу - ви просто попередньо відформатуйте стовпець для дати - англійською (США) і після вставки зробіть "Вставити спеціальний" "Неформатований текст" - просто скажіть у діалоговому вікні, якою є мова Англійська (США) і не забудьте встановити прапорець, щоб розпізнати спеціальні номери. У своїй відповіді я намагався настільки сильно натякнути, що Excel не відповідає цьому (баггі), і вам доведеться вдатися до цих кроків 1 і 2, щоб досягти бажаного результату.
r0berts

Я справді повинен був правильно прочитати ваше запитання. Ваша перша пропозиція справді працює. Ви повинні були мати щедроту. Дякуємо за вашу допомогу.
Патрік

Пропозиція 1 працює як шарм. Дякую.
Адам

Дійсно хороша відповідь !!!
Адрес

8

Виберіть усі стовпці та перейдіть до пункту «Знайти та замінити» та просто замініть "/"на /.


Чи можете ви пояснити, що це робить для усунення проблеми?
fixer1234

Це справді спрацювало і було легко.
Заміняюча

2
По-перше, ЦЕ РОБОТА. НАЙКРАЩЕ рішення. Далі краще, ніж перевірене рішення :). Для fixer1234 та @PedroGabriel: справа не в тому, що вона знімає нулі. У акті заміни вмісту комірки Excel оцінює, чи містить осередок формула, текст чи число. Зробивши заміну "/", вона інтерпретує комірку, щоб тепер містила число (яке дата технічно відповідає Excel), і тепер вона правильно сортується. (Розумні користувачі можуть розпізнати техніку пошуку / заміни символу "=" за аналогічним сценарієм із переінтерпретацією вмісту Excel.) У будь-якому випадку Jair має ідеальне рішення :)
MicrosoftShouldBeKickedInNuts

@MicrosoftShouldBeKickedInNuts сьогодні я не маю поняття, чому я сказав, що про нулі, це насправді не має нічого спільного з нулями ... Це найкраща відповідь, все ще використовуючи цю. Ура
ПедроГабріел

3

У мене був такий самий випуск із датами в excel. Формат відповідає вимогам для дати в excel, але без редагування кожної комірки дату вона не розпізнає, і коли ви маєте справу з тисячами рядків, не вдається вручну редагувати кожну клітинку. Рішення - запустити знахідку та замінити рядок дат, де я замінив гіпн на дефіс. Excel проходить крізь стовпець, замінюючи типу "like", але отриманий фактор полягає в тому, що тепер він перезбирає дати! ФІКСОВАНО!


3

Я мав справу з подібною проблемою з тисячами рядків, витягнутих із бази даних SAP, і, зрозуміло, двома різними форматами дат у тому ж стовпці дати (більшість з яких є нашим стандартним "РРРР-ММ-ДД", але приблизно 10% - "MM- DD-YYY "). Вручну редагувати 650 рядків раз на місяць не було можливим.

Немає (нуль ... 0 ... нуль) з вищеописаних варіантів. Так, я спробував їх усіх. Копіювання у текстовий файл або явний експорт до txt все-таки якось не вплинуло на формат (або його відсутність) 10% дат, які просто сиділи у своєму кутку, відмовляючись вести себе.

Єдиний спосіб, який мені вдалося виправити, - це вставити порожній стовпець праворуч від стовпця дати неправильної поведінки та за допомогою наступної, досить спрощеної формули:

(якщо припустити, що ваші дані неправильно поводяться 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")))

Тоді я міг би скопіювати результати у свій новий, обчислений стовпець над датами неправильного поведінки, вставивши "Значення", лише після чого я міг видалити свій обчислений стовпець.


3

Це може не стосуватися початкового запитувача, але це може допомогти іншому, хто не в змозі сортувати стовпчик дат.

Я виявив, що Excel не розпізнає стовпці дат, які були до 1900 року, наполягаючи на тому, що вони були стовпчиком тексту (оскільки 1/1/1900 має числовий еквівалент 1, і негативні числа, очевидно, не дозволені). Тож я зробив загальну заміну всіх моїх дат (які були в 1800-х роках), щоб перенести їх у 1900-ті, наприклад, 180 -> 190, 181 -> 191 і т. Д. Процес сортування тоді працював чудово. Нарешті я зробив заміну іншим способом, наприклад 190 -> 180.

Сподіваюсь, це допомагає якомусь іншому історику.


2

Здається, що Excel не визнає ваші дати як дати, він розпізнає їх текст, отже, ви отримуєте параметри сортування від A до Z. Якщо ви це зробите правильно, ви повинні отримати щось подібне:

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

Отже, важливо переконатися, що Excel розпізнає дату. Найпростіший спосіб зробити це - використовувати ярлик CTRL+SHIFT+3.

Ось що я зробив з вашими даними. Я просто скопіював її з вашої публікації вище і вставив її в excel. Потім я застосував ярлик вище, і я отримав необхідний варіант сортування. Перевірте зображення.

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


2
На жаль, цей ярлик не працює для мене.
Патрік

Що робить ярлик у вашій системі Патріка.
Firee

3
Ярлик, схоже, взагалі нічого не робить. У мене в розпорядженні декількох систем під управлінням Office 2007, 2010 та 2013, і жодна з них не реагує на ярлик CTRL SHIFT 3. CTRL 1 правильно спливає діалог "комірка формату".
Патрік

Ctrl + Shift + 3 клавіш, посилання кілька неохайно , як «Ctrl + Shift + #» тут , означає «Застосовує формат дати з днем, місяць і рік.» У Excel 2007, 2010, 2013 і 2016. ( В зокрема , в моєму Excel 2013, це "d-mmm-yy".) Документ Microsoft не пояснює, що комірки повинні містити… (Продовження)
Скотт,

(Продовження) ... значення, Excel розпізнає як дані дати / часу, і це , здається , як ніхто тут чітко пояснив , що, так як Патрік знаходиться в Англії, його версія Excel є визнання рядки , як 04/08/2012, 04/09/2009і 04/01/2010в 4-серпня-2012 , 4 вересня 2009 р. Та 4 січня 2010 р. Відповідно, і трактується 04/21/2011як текстовий рядок (тому що немає 21 місяця). Оскільки деякі значення є текстовими (а деякі з них, мабуть, насправді неправильно інтерпретовані), форматування (наприклад, комбінація клавіш Ctrl + Shift + 3) не принесе користі.
Скотт

2

Я б підозрював, що проблема в тому, що Excel не в змозі зрозуміти формат ... Хоча ви вибираєте формат дати, він залишається як текст.

Це можна легко перевірити: Коли ви намагаєтесь оновити формат дат, виберіть стовпчик і клацніть правою кнопкою миші на ньому та виберіть клітинки формату (як ви вже робите), але виберіть варіант 2001-03-14 (біля нижньої частини списку). Потім перегляньте формат ваших комірок.

Я підозрюю, що лише деякі формати дати оновляються правильно, вказуючи на те, що Excel все ще трактує його як рядок, а не дату (зверніть увагу на різні формати на нижньому екрані знімка)!

введіть тут опис зображення

Для цього існують робочі місця, але жоден з них не буде автоматизований просто тому, що ви експортуєте кожного разу. Я б запропонував використовувати VBa, де ви можете просто запустити макрос, який перетворює формат дати від США до Великобританії, але це означатиме копіювання та вставлення VBa у ваш аркуш кожного разу.

Крім того, ви створюєте Excel, який читає щойно створені експортовані листи Excel (з обміну), а потім виконує VBa, щоб оновити формат дати для вас. Я припускаю, що експортований файл Exchange Excel завжди матиме однакове ім’я / каталог та надаватиме робочий приклад:

Отже, створіть новий аркуш Excel під назвою ImportedData.xlsm (excel увімкнено). Це файл, куди ми імпортуємо експортований файл Exchange Exchange Excel!

Додайте цю VBa у файл 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

Те, що я також зробив, було оновити формат дати на рік-yyyy-mm-dd, оскільки таким чином, навіть якщо Excel дає вам фільтр сортування AZ замість новіших значень, він все ще працює!

Я впевнений, що у наведеному вище коді є помилки, але я, очевидно, не маю уявлення, який тип даних у вас є, але я протестував його за допомогою одного стовпця дат (як у вас є), і він працює добре для мене!

Як додати VBA в MS Office?


ну ... я збираюся залишити це на пару днів, щоб дати йому трохи додаткового опромінення, але це виглядає як ґрунтовна відповідь. Це абсолютно божевільно, але я не можу повірити, що це потрібно. Так як я виправив дані в джерелі з невеликою функцією в powerhell, щоб перевернути їх у формат ISO, і тоді мені все одно, чи визнає Excel це датою: /
Patrick


1

Я зрозумів це!

Пробіл на початку та в кінці дати.

  1. Якщо ви використовуєте пошук і заміну та натисніть пробіл, він НЕ БУДЕ працювати.
  2. Ви повинні натиснути право перед номером місяця, натиснути shift і стрілку вліво, щоб вибрати та скопіювати. Іноді для вибору місця потрібно використовувати мишу.
  3. Потім вставте це як пробіл у пошуку та заміні, і всі ваші дати стануть датами.
  4. Якщо є місце та дата, виберіть Дані> Перейти до даних> Текст у стовпці> Розмежоване> Пробіл як роздільник, а потім закінчіть.
  5. Усі пробіли будуть видалені.

Причина пошуку та заміни не працюватиме з пробілом у тому, що розрив, швидше за все, є вкладкою.
Патрік

0

Якщо Excel вперто відмовляється визнати ваш стовпець датою, замініть його іншим:

  • Додайте новий стовпець праворуч від старого стовпця
  • Клацніть правою кнопкою миші новий стовпчик і виберіть Format
  • Встановіть формат на date
  • Виділіть весь старий стовпець і скопіюйте його
  • Виділіть верхню комірку нового стовпця та виберіть Paste Special, і лише вставтеvalues
  • Тепер ви можете видалити старий стовпець.

Я спробував це, він поводиться так само з новою колоною. Дивіться відповідь Дейва, кришка екрана вгорі - це те, що я отримую, незалежно від того, скільки разів переміщую його між стовпцями.
Патрік

Спробуйте вимусити проблему, скориставшись функцією DATEVALUE (старий стовпець) у формулі нового стовпця, а потім скористайтеся спадним списком Форматування чисел на панелі Домашня стрічка, щоб вибрати Короткий / Довга дата.
harrymc

0

Я просто скопіював число 1 (один) і помножив його на стовпчик дати (дані) за допомогою функції PASTE SPECIAL. Потім він змінюється на загальне форматування, тобто 42102 Потім перейдіть застосувати дату для форматування, і тепер він визнає його датою.

Сподіваюся, це допомагає


0

Всі вищевикладені рішення, включаючи r0berts - не були успішними, але знайшли це химерне рішення, яке виявилося найшвидшим виправленням.

Я намагався сортувати "дати" на завантаженій таблиці електронних транзакцій.

Це було завантажено через браузер CHROME. Жодна кількість маніпуляцій із "датами" не визнала б їх сортуванням від старого до нового.

Але потім я завантажив через браузер INTERNET EXPLORER - дивовижно - я міг миттєво сортувати, не торкаючись стовпця.

Я не можу пояснити, чому різні веб-переглядачі впливають на форматування даних, за винятком того, що це явно було і було дуже швидким виправленням.


0

Моє рішення у Великобританії - у мене були свої побачення з такими точками:

03.01.17

Я вирішив це за допомогою наступного:

  1. Виділіть всю колонку.
  2. Перейдіть до пошуку та виберіть / замініть.
  3. Я замінив усі повні зупинки середнім тире, наприклад 03.01.17 03-01-17.
  4. Тримайте стовпчик підсвіченим.
  5. Форматування комірок, номер вибору вкладки
  6. Використовуйте Тип 14-03-12(важливо для мого, щоб мати середній тире)
  7. Англійська мова (Великобританія)

При сортуванні стовпця всі дати за рік сортуються.


0

Я спробував різні пропозиції, але знайшов найпростішим рішенням для мене таке:

Для прикладу див. Зображення 1 і 2 ... (зверніть увагу - деякі поля були приховані навмисно, оскільки вони не вносять у приклад). Я сподіваюся, що це допомагає ...

  1. Поле С - змішаний формат, який зводив мене абсолютно з розуму. Ось так дані надходили безпосередньо з бази даних і не мали зайвих пробілів або шалених символів. Наприклад, відображаючи його як текст, 01.01.2016 відображалося як значення типу "42504", змішане з 15.04.2006, яке показало як є.

  2. Поле F - де я отримав довжину поля С (формула LEN була б довжиною 5 з 10 залежно від формату дати). Поле є загальним форматом для простоти.

  3. Поле G - отримання місячної складової змішаної дати - виходячи з результату тривалості в полі F (5 або 10), я або отримую місяць зі значення дати в полі C, або отримую символи місяця в рядку.

  4. Поле H - отримання компонента дня змішаної дати - виходячи з результату довжини в полі F (5 або 10), я або отримую день зі значення дати в полі C, або отримую символи дня в рядку.

Я можу це зробити і за рік, а потім створити дату з трьох компонентів, яка відповідає. В іншому випадку я можу використовувати окремі значення дня, місяця та року в своєму аналізі.

Зображення 1: основна таблиця із значеннями та назвами полів

Зображення 2: електронна таблиця, що показує формули, що відповідають поясненню вище

Я сподіваюся, що це допомагає.


(1) Хоча приємно розміщувати зображення на екрані, щоб продемонструвати, що ваша відповідь насправді працює, ми вважаємо за краще, щоб формули у вашому рішенні розміщувались як текст у тілі вашої відповіді, щоб люди могли їх копіювати та вставляти. (2) Ви, здається, розумієте проблему - такі числові дати як би 04/08неоднозначні. 04/08буде трактуватися як 8 квітня в деяких місцевостях (наприклад, США) та 4 серпня в інших (наприклад, Англія). Але вони неоднозначні саме тому, що кількість місяця та день місяця різні. … (Продовження)
Скотт

(Продовження) ... Так чому б вам використовувати ип  неоднозначні дати , як 01/01відповідальний? (3) Насправді я не впевнений, що ти розумієш проблему, чи що твоя відповідь справді працює, оскільки ваш аркуш має рядки, де місяць # 15; це виявляється очевидною помилкою. І, враховуючи, що 04/15це однозначно - це повинно означати 15 квітня - не має сенсу, щоб ваш метод розбирався 01/11як 1-й день 11-го місяця. … (Продовження)
Скотт

(Продовження)… (4) Слід зазначити, що у кращому випадку ви відповідатимете, що оброблятимуть лише дати, схожі на nn / nn / nnnn . Він зазнає невдачі на дати , як 5/8, 5/08, 5/28, 05/8і 11/8. Також - цікавий факт - ваша відповідь буде невдалою у дати ≤ 17 травня 1927 р. Та ≥ 17 жовтня 2173 р. Не зважайте на проблему Y10K; ми можемо почати виникати проблеми вже через 154 роки! (5) Ви говорите: "Я можу це зробити і за рік, а потім створити дату з трьох компонентів, яка є узгодженою". То чому б вам цього не зробити, і не показати ? … (Продовження)
Скотт

(Протягом)… Особливо важко перевірити, чи працює ваш метод, коли ви представляєте неповну його версію; той, що не показує місяць, день та рік, що збираються повторно на побачення. (6) Як я сказав Патсаїду , було б добре, якби ви використовували дані ОП, з питання, а не складали свої власні. Якщо не використати дані ОП, то, можливо, було б непогано, якби ви використовували Patsaeed, так що принаймні ми змогли б порівняти яблука з яблуками. … (Продовження)
Скотт

(Продовжував)… І, використовуєте ви дані ОП чи чиїсь інші, було б добре, якби ви показали оригінальний вклад до свого сценарію. (Наприклад, для рядка 7, це 01/11/2016чи  11/01/2016?) І якщо ви збираєтесь використовувати власні дані, було б добре, якби ви включили дати того ж місяця, які демонструють (наприклад), як 1/11і 1/21як поводиться по-різному. І навіщо дублювати дані? Ви витратили 19 рядків, використовуючи ті ж самі чотири значення кілька разів, розклавши їх на 23 ряди.
Скотт

0

ОБМЕЖЕННЯ МАЛОГО ДЛЯГО, АЛЕ СТАЛЬШЕ ПРОСТО РІШЕННЯ ДЛЯ ПРЕДМЕТУ ..... Не потрібно запускати макроси чи примхливі речі .... прості повідомлення MS Excel формули та редагування.

змішані дати перевершують знімок:

введіть тут опис зображення

  • Дата у змішаному форматі.
  • Тому для створення симетричного формату дати створено додаткові стовпці, які перетворюють стовпець дати "змішаного формату" в TEXT.
  • З цього тексту ми визначили позиції "/", а середній текст був вилучений, визначаючи дату, місяць, рік за допомогою формули MID.
  • Ті, які були спочатку датами, формула закінчувалась ПОМИЛОЮ / #VALUEрезультатом. - Нарешті, із створеного нами рядка - ми перетворили їх у дати за формулою DATE.
  • #VALUE були вибрані таким чином, як це було додано IFERROR до формули DATE, і стовпець був відформатований як потрібно (тут, dd / mmm / yy)

* ПОВЕРНІТЬ СНАПШОТ ЕКСЕЛЬНОГО ЛИСТА ВІДЗНАЧЕННЯ (= змішані дати перевершують знімок) *


(1) Хоча приємно розміщувати зображення на екрані, щоб продемонструвати, що ваша відповідь насправді працює, ми вважаємо за краще, щоб формули у вашому рішенні розміщувались як текст у тілі вашої відповіді, щоб люди могли їх копіювати та вставляти. (2) Ваші формули , як показано в зображенні невірні, оскільки вони відносяться до стовпців  V, Wі  Xколи вони повинні мати в виду Колонний  B, C, і  D. … (Продовження)
Скотт

(Продовження)… (3) Було б добре, якби ви використовували дані ОП, з питання, а не складали свої власні. І, як ви використовуєте дані в OP або ваш власний, це було б добре , якби ви показали оригінальний вхід до вашого сценарієм (наприклад, для ряду 9, це 5/8/2014або  5/08/2014). І якщо ви збираєтесь використовувати власні дані, було б добре, якби ви включили дати з того самого місяця, щоб продемонструвати (наприклад), як 5/8і 5/28як по-різному поводиться. І навіщо дублювати дані? Ви витратили шість рядків, використовуючи однакові значення більше одного разу.
Скотт

0

Це відбувається постійно під час обміну датами між даними між локалями в Excel. Якщо у вас є контроль над програмою VBA, яка експортує дані, я пропоную експортувати число, що представляє дату, а не саму дату. Кількість однозначно співвідноситься з однією датою, незалежно від форматування та мови. Наприклад, замість CSV-файла, який відображатиметься 24.09.2010, він відображатиметься 40445.

У циклі експорту, коли ви тримаєте кожну клітинку, якщо вона є датою, перетворіть на номер за допомогою CLng (myDateValue). Це приклад мого циклу, що проходить через усі рядки таблиці та експортує до CSV (зауважте, я також замінюю коми в рядках тегом, який я знімаю при імпорті, але це вам може не знадобиться):

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

З усіма перерахованими вище пропозиціями мені не пощастило - я придумав дуже просте рішення, яке працює як шарм. Вставте дані в Google Таблиці, виділіть стовпець дати, натисніть формат, а потім номер і ще раз, щоб змінити його на формат чисел. Потім я копіюю і вставляю дані в електронну таблицю Excel, натискаю на дати, а потім відформатую комірки на дату. Дуже швидко. Сподіваюсь, це допомагає.


0

Ця проблема зводила мене з розуму, потім я натрапив на легке виправлення. Принаймні, це працювало для моїх даних. Це легко зробити і запам'ятати. Але я не знаю, чому це працює, але зміна типів, як зазначено вище, не робить. 1. Виберіть стовпчик (и) з датами 2. Шукайте рік у датах, наприклад, 2015. Виберіть Замінити все тим же роком, 2015. 3. Повторіть для кожного року. Це змінює типи на фактичні дати з року в рік.
Це все ще громіздко, якщо у вас є багато років у ваших даних. Швидше - знайти і замінити 201 на 201 (замінити 2010 на 2019 рік); замінити 200 на 200 (замінити 2000 на 2009 рік); і так далі.


0

Виберіть дати та запустіть цей код над нею.

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

-1

Я використовую mac.

Перейдіть до переваг переваг> Редагувати> Параметри дати> Автоматично конвертувати систему дат

Також,

Перейдіть до таблиці та фільтри> Дати групи під час фільтрації.

Проблема, ймовірно, почалася, коли ви отримали файл із іншою системою дат, і це перекрутило вашу функцію дати Excel


-2

Зазвичай я просто створюю додатковий стовпець для сортування чи підсумовування цілей year(a1)&if len(month(a1))=1,),"")&month(a1)&day(a1).

Це дасть yyyymmddрезультат, який можна сортувати. Використання len(a1)справедливого дозволяє додавати додатковий нуль протягом 1-9 місяців.


2
Це не допоможе, оскільки дати не визнаються датами. Також використовувати рідкісні стовпці для цілей сортування - рідко
CallumDA
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.