1

Каждый раз, когда я копирую и вставляю некоторые числовые данные, записанные в виде дробей или разделенных черточками, в Excel, он всегда преобразует числа, которые могут быть датами, в даты. Нет способа вернуть их к исходному форматированию (как скопировано). Даже если вы перейдете к тексту и вернетесь к номеру, вы получите номер даты!

Даже сохранение в CSV и импорт не исправят это!

Я искал решение этой проблемы в течение нескольких лет, и я по-прежнему такой же отчаянный, как и всегда.

пример

Что-то вроде 5-6 или 5/2 превращается в дату или значение даты, и нет никакого способа восстановить исходное содержимое строки или сказать Excel, что вы хотите рассматривать его как текст, а не как дату.

Это не просто копирование. Отправка данных напрямую из приложений через интеграцию или через CSV тоже не работает. Он отменяет вас при импорте и изменяет содержимое на значения даты.

"Вы дебил с нулевой репутацией, это решено!"

Прежде чем вы говорите, это уже спрашивали. давайте посмотрим на главные вопросы, задающие то же самое, и опубликованные "решения":

1. Остановить Excel от преобразования вставленных копий числовых / текстовых значений в дату

Данные - Импорт внешних данных - Новый веб-запрос и следуйте указаниям мастера

Не работает И в любом случае это не будет решением, так как это не копирование из различных источников, а также невероятно медленное.

Вставьте данные в электронную таблицу как есть. Выберите все и отформатируйте как текст Вставьте снова поверх того, что вы делали в первый раз, но на этот раз как значения.

21 голосов! В самом деле?! Тривиально не работает с любыми данными в соответствии с моим примером. Кроме того, занимает много лет.

  1. Скопируйте оригинальные данные
  2. Вставить в Блокнот (Предпочитать Блокнот ++)
  3. Измените свойства ячейки на TEXT
  4. Скопируйте все из блокнота
  5. Вставить обратно в Excel.

13 голосов. Очень медленный и обходительный обходной путь. Все равно не работает .

2. Как остановить преобразование чисел в формат даты при копировании и вставке в Excel?

Выберите пустые поля (или весь столбец), установите для них строковый формат вместо значения по умолчанию и выполните специальную вставку (доступную по щелчку правой кнопкой мыши) с "только значениями", чтобы предотвратить автоматическое применение формата даты ...

Я использую Paste Special и Paste Values все время. При вставке копии из опции нет значения, например, HTML-таблица. Не работает

Перед вставкой выберите столбец, в котором будет храниться значение без даты. Щелкните правой кнопкой мыши. Выберите «форматировать ячейки». Затем выберите «текст» в качестве формата и нажмите «ОК».

Теперь вставьте, но вставьте, используя опцию «соответствовать формату назначения».

Не работает Нет опции "соответствовать формату назначения".

Существует несколько способов решения этой проблемы, наиболее распространенным и простым из которых является форматирование ячеек перед вставкой данных в виде текста (выберите диапазон, щелкните правой кнопкой мыши, отформатируйте ячейки, дважды щелкните текст).

Это снова! Не работает

Я просто изменил десятичный разделитель:

Не вариант. «-» и «/» не являются десятичными разделителями. Не работает

попробуйте добавить это число (') в вашем номере в исходных данных, а затем вставьте его в excel вместо replace (') с той же ('), потому что, когда вы добавите это число, оно будет отображаться в ваших данных в Excel, но при его замене будет скрыт

-1 голос за причину. Не работает

3. Как предотвратить преобразование чисел в даты в Excel?

Для этой задачи я использую Notepad++: скопируйте свои данные в notepad++ вместо «.» с "," и скопируйте его в Excel.

Медленный обходной путь и не помогает, так как мне нужны данные, чтобы оставаться как есть. Не работает

Сначала отметьте ячейки, которые вы собираетесь вставить. Щелкните правой кнопкой мыши "Формат" и выберите "Число".

Теперь щелкните правой кнопкой мыши, чтобы вставить, и выберите "Match Destination Formatting"

...действительно? ДЕЙСТВИТЕЛЬНО?!

Да, иногда это настоящая боль - мое быстрое решение - использовать ячейки, отформатированные как текст.

Вот как это работает:

скопируйте свои номера с. выберите столбец или некоторые ячейки измените формат ячейки на текст, теперь вставьте специальный (или вставьте содержимое), так как теперь неформатированный / обычный текст заменяет. с помощью, теперь измените формат обратно на число или значение по умолчанию. Конечно, вы можете поместить это в некоторый макрос.

Тем не менее, я думаю, что может быть - или, по крайней мере, должно быть - лучшее решение.

Но, как быстрый, это тоже работает;)

Не быстро И угадай что? Не работает

Ответы на этот вопрос

После публикации этого вопроса я получил следующий ответ от постера из 16 тысяч представителей:

Пожалуйста, перестаньте жаловаться на то, что ДОЛЖНА делать ваша версия Excel. Excel 2007 почти 15 лет, учитывая, что потребовалось 3 года, чтобы спланировать его функции, разработать и протестировать их в старых трехлетних циклах выпуска. Если вы жалуетесь на это, вы также можете жаловаться на то, что ваш телефон не может принимать текстовые сообщения. Как уже упоминали другие, современные версии Excel могут делать то, что вы хотите достичь с меньшими хлопотами, чем вы должны страдать. Итак, как насчет обновления?

Если есть такая плохая ошибка, я не вижу проблемы с вопросом об этом. Если нет решения, хорошо, но это не значит, что я не подумал о том, что он не работает так, как задумано.

Во всяком случае, я сделал обновление в соответствии с просьбой (до Excel 2011) и попробовал все предложенные ответы в этой теме. Все еще нет игры в кости. Не работает Я не знаю, может ли этот плакат предложить комбинацию ОС и версии Excel, которая, как было показано, работает правильно?

Что говорит Microsoft?

Он просто повторяет известные (но совершенно бесполезные) приемы добавления апострофа или 0 для продолжения форматирования или использования дробного форматирования. Предварительное форматирование ячеек как текста может работать для ручного ввода данных, но не при копировании.

Мольба

Я умоляю тебя. Пожалуйста, скажите мне, что есть способ поместить мои данные в электронную таблицу, не меняя их!

Даже когда Excel угадывает формат данных и навязывает его вам, не спрашивая (почему нет опции вставки как [format], которую я не понимаю), при вставке текста или значений при копировании правильно сохраняется структура таблицы для каждой другой мыслимой текстовой строки, кроме из чисел, разделенных символами, такими как "/" и "-".

Копирование строк в других форматах, таких как 10% , $50.63 , 4.25E+11 приводит к автоматическому форматированию, но не приводит к потере двумерной структуры данных и не изменяет сами значения / текст. Только с датами Excel фактически уничтожает содержимое данных, превращая текстовые строки в значения даты. Мои $50.63 В ячейке C7 остаются $50.63 В ячейке C7, но 7/8 изменяется на 43319 , 5-4 на 43195 и 6.4 на 43196 . Это односторонняя функция - нет никакого способа отменить преобразование, контекст и контент навсегда утеряны, потому что Excel переоценивает вас и, похоже, не дает возможности сказать, что вы знаете, что делаете, несмотря на все одобренные "решения" на этом сайте.

-

редактировать: не дублировать, как я уже рассмотрел в вопросе под заголовком 2!

3 ответа3

1

Вот три способа, которые отвечают требованиям, и четвертый способ, который более ситуативный. Да, 2 из них вы сказали не работать по OP. Они работают для меня в Office 365 Pro Plus, поэтому они будут работать для многих других, ваш пробег может варьироваться в зависимости от версии Excel:

Метод 1 - Копирование и вставка

  1. Отформатируйте целевой диапазон как Text
  2. Copy данные HTML
  3. Paste используя Match Destination

Способ 2 - получить данные из Интернета

  1. Нажмите "Получить данные" на вкладке "Данные" ленты.
  2. Наведите курсор на "Из других источников", чтобы развернуть раскрывающееся меню.
  3. Выберите "Из Интернета" и введите URL/ местоположение файла
  4. Выберите исходную таблицу из списка в левой части редактора запросов.
  5. Нажмите "Изменить" в правом нижнем углу
  6. Измените тип данных каждого столбца на Text в группе "Преобразование" на вкладке "Главная" на ленте.
  7. Нажмите "Закрыть и загрузить", таблица будет создана на пустом листе

Метод 3 - VBA

  1. Вставьте код снизу в модуль
  2. Измените PathOrURL на местоположение вашего файла или URL
  3. Запустите процедуру

Я написал это с предположением, что ваш источник данных является первой или, возможно, единственной таблицей в файле HTML. Он преобразует исходные значения таблицы в строки и записывает строку на лист без использования копирования или вставки. Форматы ячеек не нужно менять.

Требуются MS Internet Controls и ссылки на библиотеку объектов MS HTML.

Option Explicit
Sub GetTextFromHTML()
    Dim PathOrURL as String: PathOrURL = Environ("USERPROFILE") & "\Desktop\a4rZKDWK.html"
    Dim IE As New InternetExplorerMedium
    Dim x As Long, y As Long
    Dim tbl As HTMLTable
    Dim sVals() As String
    IE.Navigate PathOrURL
    Do While IE.ReadyState <> READYSTATE_COMPLETE
        DoEvents
    Loop
    Set tbl = IE.Document.getElementsByTagName("table")(0)
    With tbl
    ReDim sVals(1 To .Rows.Length, 1 To .Rows(1).Cells.Length)
        For y = 1 To .Rows.Length
            For x = 1 To .Rows(1).Cells.Length
                    sVals(y, x) = CStr(tbl.Rows(y - 1).Cells(x - 1).innerText)
            Next
        Next
    End With
    IE.Quit
    ActiveSheet.Cells(1, 1).Resize(UBound(sVals), UBound(sVals, 2)).Value = sVals
End Sub

Метод 4 - Переходный вход (ситуационный)

  1. Нажмите "Файл" на ленте
  2. Выберите "Опции"
  3. Выберите "Дополнительно"
  4. Прокрутите весь путь до самого дна
  5. Установите флажок для "переходной записи"
  6. Копировать данные HTML
  7. Вставить в лист Excel

Можно привести пример использования "записи перехода", поскольку он решает проблему даты, позволяя копировать и вставлять дроби в виде дробей - ОДНАКО - он не удовлетворяет требованиям OP, поскольку он также упрощает любую приводимую дробь; копирование 6/9 вставит 2/3. Несводимые фракции хороши и не модифицируются. Неправильные дроби также поддерживаются.

Я подозреваю, что Excel преобразует исходные данные из дробных в десятичные, а затем обратно в дробные, потому что упрощенные дроби являются логическим результатом десятичного преобразования. Если вы решите начать с 2/4, 3/6, 12/24, все они преобразуются в 0,5 десятичного числа. Мы теряем всю информацию об их уникальности, как только они это делают. Вы можете дифференцировать 2/4 от 3/6, но вы не можете сделать это с 0,5 и 0,5. Переходя от десятичной дроби к дробной, существует буквально бесконечное число дробей, равное 0,5, и мы можем использовать любую из них. Мы не знаем, с чего начали, потому что все было потеряно при переходе на 0,5, шансы точно угадать, когда у вас есть бесконечное количество вариантов выбора, довольно малы, поэтому лучший результат будет полностью уменьшен и упрощен, и есть только один из те... 1/2

К сожалению, пользовательский формат, который я рекомендовал на прошлой неделе, "#/#", страдает от той же проблемы, что и "запись перехода". Он переносит все дроби, но упрощает каждую вставляемую дробную дробь.

0

Ну, мне нужно перефразировать свой вопрос. Это больше похоже на то, «как я могу съесть свой торт и все еще иметь его?"

Как работает Excel, он будет пытаться найти смысл в данных и применить форматирование по умолчанию. Это относится к тексту, который выглядит как даты, текст, который выглядит как числа, HTML-теги, которые подразумевают, что что-то находится в ячейке таблицы, и тому подобное.

Если форматирование игнорируется, например, путем вставки текста (или вставки специальных значений), тогда ВСЕ форматирование игнорируется. Текст, который выглядит как даты, не будет преобразован в даты. Но структуры таблиц тоже не выживут.

Однако, если вы хотите сохранить структуру таблицы, вам нужно позволить Excel интерпретировать вставленный контент и применить форматы, которые он распознает. К сожалению, это означает, что эти тексты будут преобразованы в даты.

Как бы вы ни были разочарованы, на данный момент нет готового решения для этого. То, что вы просите, в настоящее время не может быть сделано. (Это правильный ответ на ваш вопрос).

Вы можете разместить предложение на http://excel.uservoice.com, где люди могут проголосовать за него. Чем больше голосов за предложение, тем больше вероятность того, что оно будет реализовано.

Вы также можете рассмотреть альтернативы для копирования и вставки. Возможно, вы могли бы использовать Power Query для запроса источника данных и формирования данных, чтобы сохранить текст как есть.

0

Поэтому после большого количества исследований и некоторых очень полезных материалов от @ProfoundlyOblivious я разработал наилучший из возможных методов, который, похоже, работает. Он далек от совершенства, но на самом деле он работает из всех источников данных, которые я пробовал, не включает запутанных шагов и, что наиболее важно, является эффективным по времени и надежным.

Такие предложения, как «Получить данные из Интернета» или сценарии VBA, просто невозможно использовать, когда нужно взять данные из различных непредсказуемых источников и перенести их в формат Excel или CSV.

Кроме того, я снова и снова проверял в различных версиях Excel, что люди, утверждающие, что они работают через Блокнот, работают или что предварительное и / или постформатное форматирование ячеек не работает. К сожалению, нет и никаких пользовательских числовых / текстовых форматов. Понятно, что данные в этом формате явно отличаются от других форматов данных, когда обрабатываются этими версиями Excel.

Что работает

Скопируйте / вставьте в электронную таблицу Документов Google, а затем просто сохраните как * .xlsx или * .csv.

Это действительно было так просто. Возможно, не правильный ответ на то, как исправить Excel, но , безусловно, лучший обходной путь, который я нашел. Быстрый, легкий, надежный и делает все, что мне нужно сделать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .