Excel меняет число на другое число

RRS feed

  • Remove From My Forums
  • Вопрос

  • Excel 2016
    в поле пишу число 898520300404768869, а Excel меняет его на
    898520300404768000. формат поля — числа.
    Почему так происходит, и как это отменить?

    Спасибо

Ответы

  • Побороть никак, но можно предварительно установить формат ячейки, как текстовый или вводить лидирующий апостроф, т.е. ‘898520300404768869

    • Помечено в качестве ответа
      AnahaymModerator
      28 декабря 2015 г. 12:27

Все ответы

  • Побороть никак, но можно предварительно установить формат ячейки, как текстовый или вводить лидирующий апостроф, т.е. ‘898520300404768869

    • Помечено в качестве ответа
      AnahaymModerator
      28 декабря 2015 г. 12:27

  • если поставить формат «текст», то он вообще заменяет на такое «8,9852E+17«
    с апострофом работает. но почему только так ? т.е. зачем и почему Excel делает такие подмены?

  • Если ячейку отформатировать заранее, то такие длинные числа вставляются туда без проблем. Судя по тому что нагугливается — у экселя точность до 15 знаков.

  • вот как раз 15 и оставляет, потом обрезает…

  • Это фундаментальное свойство представления чисел в цифровых компьютерах вообще и в Excel в частности.

    Вам надо знать что максимальное число значащих разрядов — 15. 

    Если данные хранить как строку, то будут сохранены все символы (не разряды так как это не число, а строка). Конечно при попытке использовать данную строку как числовое значение она будет преобразована в число и «лишние» разряды будут в любом
    случае «обрезаны».

    Если интересны детали то можно посмотреть например тут:

    https://blogs.office.com/2008/04/10/understanding-floating-point-precision-aka-why-does-excel-give-me-seemingly-wrong-answers/


    This posting is provided «AS IS» with no warranties, and confers no rights.

Пишу в Эксель цифру, а она меняется на другую, что делать?

Надо зайти и задать ту числовую форму, которая вам нужна.

Естественно, выбрав ячейки, строки или колонки, к которым эта форма будет относиться.

Скорее всего, проблема связана с тем, что у ячейки задан какой-то нестандартный формат. Изменить его можно через меню. Выбираем пункт «Формат ячеек» и выбираем необходимый формат, в данном случае нам нужен «Числовой».

Время, в Excel является числом, точнее, десятичной дробью меньше единицы. (Соответственно дата — число, больше единицы. А дата с временем — это сумма этих чисел.).

Что бы данное число смотрелось в клетке как Дата, или Время, или Дата с Временем — для этого необходимо задать определенный формат с свойствах ячейки (Втор. кл. мыши по ячейке — пункт «Формат Ячейки»). Следственно, над любой датой и над любым временем можно производить операции сложения и вычитания. Так же надо помнить, что в Excel есть функция (ВРЕМЯ()), которая преобразовывает три значения (часы,минуты,секунды) в специальную десятичную дробь, которая, по сути, является временем «чч:мм:сс», если изменить формат ячейки на «Время-13:30:55».

  1. Пусть в ячейке A1 у нас есть время «23:23:59«, тогда
  2. Пусть, клетках B1,C1,D1 у нас будет количество часов,минут,секунд, (целые числа) которое мы хотим добавить к нашему времени.
  3. Для получения результата, запишем в клетке E1 формулу: =A1+ВРЕМЯ(B1;C1;D1)

График можно перенести как картинку обычным копированием.

Для того, что бы перенести график из EXCEL в Power Point. В Excel выделить график, выполнить «копировать», открываем Power Point, открываем нужный слайд, выполняем операцию «вставить».

Сохранить можно множеством способов:

1 — Горячие клавиши. Shift+F12 — сохранить. F12 — сохранить как.

Contrl + S — Сохранить.

2 — Нажав на клавишу альт и управляя стрелочками, выбрать нужное меню затем нажать копку Enter.

Чтобы уметь использовать макросы в excel нужно уметь программировать. Если вы программировать не умеете, то и макрос скорей всего написать не сможете.

Если вы берете макрос с интернета, то скорей всего там будет подробная инструкция что и куда надо вставить. Лично я не пользуюсь ими. Мне, как обычному пользователю, хватает стандартных команд в виде IF, SUMM и т.д.

В общем-то это просто делается. Когда копируете в буфер обмена содержимое ячейки (не важно с помощью меню, ленты или просто CTRL+C), то потом, когда в другую ячейку надо будет вставить только данные надо кликнуть по стрелочке расположенной рядом с кнопочкой в меню «Вставить». Там выпадет менюшка с запросом чтот именно вы хотите вставить. Если нет прямого указания (например, есть только иконки разные), то копайте глубже через пункт «Специальная вставка». Дальше думаю сами разберетесь.

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

Почему эксель меняет цифры на другие

Excel 2016
в поле пишу число 898520300404768869, а Excel меняет его на 898520300404768000. формат поля — числа.
Почему так происходит, и как это отменить?

Ответы

  • Помечено в качестве ответа Anahaym Moderator 28 декабря 2015 г. 12:27

Все ответы

  • Помечено в качестве ответа Anahaym Moderator 28 декабря 2015 г. 12:27

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

вот как раз 15 и оставляет, потом обрезает.

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

Вам надо знать что максимальное число значащих разрядов — 15.

Если данные хранить как строку, то будут сохранены все символы (не разряды так как это не число, а строка). Конечно при попытке использовать данную строку как числовое значение она будет преобразована в число и «лишние» разряды будут в любом случае «обрезаны».

Если интересны детали то можно посмотреть например тут:

This posting is provided «AS IS» with no warranties, and confers no rights.

Что делать, если числа в Excel отображаются, как сотые десятичной дроби, число автоматически делится на 100.

У начинающих пользователей программы Excel может возникнуть следующая ситуация:

При вводе чисел в ячейку цифры автоматически преобразуются в десятичные дроби с двумя знаками после запятой. Изменение формата ячеек и другие ухищрения не помогают привести числа к обычному виду.

Вводим число Получаем результат
7 0,07
77 0,77
777 7,77
7777 77,77
77777 777,77
777777 7777,77
7777777 77777,77
77777777 777777,77

Как избавится от такого отображения вводимых в ячейку чисел.

Чтобы исправить ситуацию достаточно выполнить довольно несложную последовательность действий:

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

Все категории

  • Фотография и видеосъемка
  • Знания
  • Другое
  • Гороскопы, магия, гадания
  • Общество и политика
  • Образование
  • Путешествия и туризм
  • Искусство и культура
  • Города и страны
  • Строительство и ремонт
  • Работа и карьера
  • Спорт
  • Стиль и красота
  • Юридическая консультация
  • Компьютеры и интернет
  • Товары и услуги
  • Темы для взрослых
  • Семья и дом
  • Животные и растения
  • Еда и кулинария
  • Здоровье и медицина
  • Авто и мото
  • Бизнес и финансы
  • Философия, непознанное
  • Досуг и развлечения
  • Знакомства, любовь, отношения
  • Наука и техника


0

Пишу в Эксель цифру, а она меняется на другую, что делать?

2 ответа:



1



0

Там в меню (сверху) есть раздел «число».

Надо зайти и задать ту числовую форму, которая вам нужна.

Естественно, выбрав ячейки, строки или колонки, к которым эта форма будет относиться.



0



0

Скорее всего, проблема связана с тем, что у ячейки задан какой-то нестандартный формат. Изменить его можно через меню. Выбираем пункт «Формат ячеек» и выбираем необходимый формат, в данном случае нам нужен «Числовой».

Читайте также

Время, в Excel является числом, точнее, десятичной дробью меньше единицы. (Соответственно дата — число, больше единицы. А дата с временем — это сумма этих чисел.).

Что бы данное число смотрелось в клетке как Дата, или Время, или Дата с Временем — для этого необходимо задать определенный формат с свойствах ячейки (Втор. кл. мыши по ячейке — пункт «Формат Ячейки»). Следственно, над любой датой и над любым временем можно производить операции сложения и вычитания. Так же надо помнить, что в Excel есть функция (ВРЕМЯ()), которая преобразовывает три значения (часы,минуты,секунды) в специальную десятичную дробь, которая, по сути, является временем «чч:мм:сс», если изменить формат ячейки на «Время-13:30:55».

Итак, например:

  1. Пусть в ячейке A1 у нас есть время «23:23:59«, тогда
  2. Пусть, клетках B1,C1,D1 у нас будет количество часов,минут,секунд, (целые числа) которое мы хотим добавить к нашему времени.
  3. Для получения результата, запишем в клетке E1 формулу: =A1+ВРЕМЯ(B1;C1;D1)

  4. Если мы поставим в клетку С1 значение 3, тогда мы получим десятичную дробь, которая соответствует 23:26:59. (или «00.01.1900 23:26»).
  5. Для того, что бы получить в клетке «только время» (без даты, или без дроби), откройте настройки формата ячейки (Правая кл мыши по ячейке и пункт «Формат ячейки») и задайте для нее формат «Время — 13:30:55». Если же у вас в сумме получается время, которое превышает сутки (24 часа), тогда поставьте формат «Время — 37:30:55»

  6. Как можно понять из приведенного примера, более простая формула в вашем случае (надо добавить 3 минуты к ячейке A1) — будет иметь вид: =A1+ВРЕМЯ(0;3;0)

График можно перенести как картинку обычным копированием.

Для того, что бы перенести график из EXCEL в Power Point. В Excel выделить график, выполнить «копировать», открываем Power Point, открываем нужный слайд, выполняем операцию «вставить».

Сохранить можно множеством способов:

1 — Горячие клавиши. Shift+F12 — сохранить. F12 — сохранить как.

Contrl + S — Сохранить.

2 — Нажав на клавишу альт и управляя стрелочками, выбрать нужное меню затем нажать копку Enter.

Чтобы уметь использовать макросы в excel нужно уметь программировать. Если вы программировать не умеете, то и макрос скорей всего написать не сможете.

Если вы берете макрос с интернета, то скорей всего там будет подробная инструкция что и куда надо вставить. Лично я не пользуюсь ими. Мне, как обычному пользователю, хватает стандартных команд в виде IF, SUMM и т.д.

В общем-то это просто делается. Когда копируете в буфер обмена содержимое ячейки (не важно с помощью меню, ленты или просто CTRL+C), то потом, когда в другую ячейку надо будет вставить только данные надо кликнуть по стрелочке расположенной рядом с кнопочкой в меню «Вставить». Там выпадет менюшка с запросом чтот именно вы хотите вставить. Если нет прямого указания (например, есть только иконки разные), то копайте глубже через пункт «Специальная вставка». Дальше думаю сами разберетесь…

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

 

danilfg

Пользователь

Сообщений: 12
Регистрация: 12.04.2017

Добрый день!
Есть таблица (а именно xls файл с характеристиками товаров для заливки на сайт), при открытии в Excel некоторые ячейки с числом становятся датами
(скрин 1 из приложения)
Если поменять формат ячейки на текстовый, то получаются «левые» числа
(скрин 2 из приложения)
Ну тут ни как не может быть 5-значное число.

Что я делал, и это не помогло:
1) менял ячейки на текстовый формат
2) менял расширение файла на txt, а потом загружал данные в Excel
3) менял в настройках Системный разделитель на точку
4) открывал через Notepad++ и сохранял в txt и пытался загрузить данные в Excel

Скажите пожалуйста что можно сделать в данной ситуации?

В приложении файл с несколькими позициями

Прикрепленные файлы

  • Книга1.xlsx (22.64 КБ)
  • 2.PNG (4.58 КБ)
  • 1.PNG (5.46 КБ)

Изменено: danilfg25.01.2018 15:36:31

 

danilfg, а может ли что при выгрузке кто то ввел данные не через запятую а через точку?

Не бойтесь совершенства. Вам его не достичь.

 

danilfg

Пользователь

Сообщений: 12
Регистрация: 12.04.2017

Файл создается автоматически через datacol. Так что сложно сказать. Возможно ли исправить уже имеющийся файл?

 

PooHkrd

Пользователь

Сообщений: 6602
Регистрация: 22.02.2017

Excel x64 О365 / 2016 / Online / Power BI

Каким образом эти данные попадают в Excel?

Вот горшок пустой, он предмет простой…

 

Дмитрий Щербаков

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Если нет изначального файла — то вряд ли можно восстановить изначальную информацию точно в том виде, в котором она была. Можно лишь предположить, что вместо 15.09.2018 было 15.9, вместо 04.09.2018 — 4.9 или 9.4 и т.д.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

PooHkrd

Пользователь

Сообщений: 6602
Регистрация: 22.02.2017

Excel x64 О365 / 2016 / Online / Power BI

#6

25.01.2018 15:55:58

Цитата
danilfg написал:
Файл создается автоматически через datacol.

Печально. Я избавлялся от этой напасти таким образом: выгрузку делал в текстовый файл, после чего импортировал текст в Excel через стандартный мастер и всем полям присваивал текстовый тип. В таком случае данные попадают в Excel в первозданном виде, и имеется возможность поправить косяки ввода. Точки на запятые поменять и все такое.

Вот горшок пустой, он предмет простой…

 

TheBestOfTheBest

Пользователь

Сообщений: 2366
Регистрация: 03.04.2015

Excel 2010 +PLEX +SaveToDB +PowerQuery

#7

25.01.2018 16:00:22

Цитата
PooHkrd написал:
всем полям присваивал текстовый тип

+

Неизлечимых болезней нет, есть неизлечимые люди.

 

Jack Famous

Пользователь

Сообщений: 10846
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#8

25.01.2018 16:09:45

danilfg, полностью согласен со всеми участниками

Цитата
Дмитрий Щербаков написал:
Если нет изначального файла … Можно лишь предположить …

отсюда единственное пока решение (на мой взгляд) — «вытягивать» день и месяц из «дат» и сцеплять их в число.
В числах-НЕдатах с точкой в качестве разделителя можно менять точку на запятую через Ctrl+H

Изменено: Jack Famous25.01.2018 16:10:19

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Бахтиёр

Пользователь

Сообщений: 1926
Регистрация: 15.01.2016

Excel 365

Jack Famous, 43347=04.09.2018=4.09 или же 43347=04.09.2018=4.9 так как узнать девять копеек или девяносто копеек?

danilfg

,
Можно так:
1) поменять в excel разделитель копеек на точку.
2) Создать файл в datacol
3) Открыть в excel
4) поменять в excel разделитель копеек на запятую

Ну или один раз поменять на точку и всегда работать под этим разделителем

Изменено: Бахтиёр25.01.2018 16:24:57

 

Jack Famous

Пользователь

Сообщений: 10846
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#10

25.01.2018 16:24:16

Бахтиёр,

Цитата
danilfg написал:
Возможно ли исправить уже имеющийся файл

я так понял, что нужно работать с примером, поэтому даже такой приём, всё лучше, чем ничего…
Разумеется, если есть доступ к файлу, не открытому в Excel (и побитого жизнью в итоге), а ещё лучше — к настройкам программы, отгружающей отчёт, то можно очень много всего попробовать

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

danilfg

Пользователь

Сообщений: 12
Регистрация: 12.04.2017

#11

25.01.2018 23:19:38

Цитата
Jack Famous написал:
отсюда единственное пока решение (на мой взгляд) — «вытягивать» день и месяц из «дат» и сцеплять их в число.
В числах-НЕдатах с точкой в качестве разделителя можно менять точку на запятую через Ctrl+H

Подскажите, пожалуйста, как можно это реализовать?

Я пока лишь смог через поиск находить ячейку с форматом Дата. А дальше застрял как их вытаскивать.
И при чем месяц это целое число, а день — дробное. Например, 25.07.2018, является дробью 7,25, а дата 09.06.2018 — 6,9.

UPD. Сейчас попробовал (скрин1) найти по одной ячейке с форматом дата. А возможно ли в строке заменить прописать формулу? Если да, то как можно обозначить в формуле текущую ячейку  (то есть не определенную ячейку вида A4, B10 или R[-3]), а ячейку которую сейчас нашел поисковик?

Прикрепленные файлы

  • Снимок.PNG (40.74 КБ)

Изменено: danilfg25.01.2018 23:49:04

 

Бахтиёр

Пользователь

Сообщений: 1926
Регистрация: 15.01.2016

Excel 365

#12

26.01.2018 08:10:13

Цитата
danilfg:  смог через поиск находить ячейку с форматом Дата. А дальше застрял как их вытаскивать.

Если в A1: 25.07.2018, то =МЕСЯЦ(A1)+ДЕНЬ(A1)/100 даст результат 7,25
Если в A2: 09.06.2018, то =МЕСЯЦ(A2)+ДЕНЬ(A2)/100 даст результат 6,09

Но вы пишете, что:

Цитата
danilfg:  а дата 09.06.2018 — 6,9

Как я уже говорил:

Цитата
Бахтиёр:  43347=04.09.2018=4.09 или же 43347=04.09.2018=4.9 так как узнать девять копеек или девяносто копеек?

То есть как узнать каким числом была дата 09.06.2018 6,9 или 6,09 ???

Заново создать файл в datacol нельзя?

 

danilfg

Пользователь

Сообщений: 12
Регистрация: 12.04.2017

#13

26.01.2018 10:17:43

Спасибо!

Цитата
Бахтиёр написал:
То есть как узнать каким числом была дата 09.06.2018 6,9 или 6,09 ???

Уже ни как не узнать. Поэтому это уже не так важно)) Но обычно идет число вида 6.9.

Цитата
Бахтиёр написал:
=МЕСЯЦ(A1)+ДЕНЬ(A1)/100

Сейчас использовал Вашу формулу таким образом: находил ячейку с датой, и присваивал ей значение в виде Вашей формулы, но с переменными RC (чтобы данные были из этой ячейки)
 
Но мне выдает,что формула имеет циклический характер (что вполне логично), а как сделать так чтобы не было этой цикличности?

В приложении файл который я не открывал еще)

Прикрепленные файлы

  • Goods — 2.xlsx (15.05 КБ)

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

#14

26.01.2018 10:35:01

Цитата
danilfg написал:
Уже ни как не узнать.

— узнать :)
Если открыть архиватором — то видно что там есть

Код
lt;td>4.02</td>
<td>1.05</td>

а в файле это превращается в 02.04.2018 и 05.01.2018

Как побороть — не знаю… Может залезть в Goods — 2.xlsxxlsharedStrings.xml и дописать там таким данным нули?
P.S. форум мой пост почикал по своему разумению, там чуть иначе было, но можно найти по «;4.02»
P.P.S. — проверил с нулями — не помогает…

Изменено: Hugo26.01.2018 10:40:08

 

Jack Famous

Пользователь

Сообщений: 10846
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#15

26.01.2018 10:39:16

Цитата
Hugo написал:
Если открыть архиватором — то видно что там есть

блестяще!  :idea: совсем забыл, что книги — это архивы)))

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

Нули не помогают. Но может дописать апостроф?
P.S. не помогает… :(
Не помогает если взять в кавычки, и даже с пробелом перед… :(

Изменено: Hugo26.01.2018 11:04:21

 

TheBestOfTheBest

Пользователь

Сообщений: 2366
Регистрация: 03.04.2015

Excel 2010 +PLEX +SaveToDB +PowerQuery

#17

26.01.2018 11:02:44

Цитата
Jack Famous написал:
отсюда единственное пока решение (на мой взгляд) — «вытягивать» день и месяц из «дат» и сцеплять их в число.

не сработает, даже не надейтесь. Пример 01.02.2018 можно получить из чисел 1.2 ; 1.02, 2.1; 2.01 —  в зависимости от настроек формата даты и десятичных чисел (на компе с экселем)).

Поэтому (ну и еще есть пара причин) выгрузку данных следует делать в csv формат и «тянуть» его в эксель в виде текста (при «Получить данные / Из текста»).

Изменено: TheBestOfTheBest26.01.2018 11:05:35

Неизлечимых болезней нет, есть неизлечимые люди.

 

Дмитрий Щербаков

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Hugo, проблема в том, что при открытии Excel для отображения данных считывает их не из SharedString, а из папки Worksheets(расположена там же). И там нет никаких 4.02, там число 43192(т.е. дата…). А это значит, что данные уже подпорчены.
Единственный вариант — это тот же самый Sharedstring каким-то образом преобразовать в удобоваримую html таблицу и её уже подгружать. Пока нет времени в это влазить, но проще всего, наверное, создавать XSD-схему на основании этих данных и тогда можно будет напрямую Sharedstring закидывать в Excel.

Изменено: Дмитрий Щербаков26.01.2018 11:06:07

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

Дмитрий, спасибо. Я там поискал, но не достаточно дотошно :)
Но значит всёж можно найти какие числа должны были быть?

 

Дмитрий Щербаков

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#20

26.01.2018 11:07:49

Цитата
Hugo написал:
значит всёж можно найти какие числа должны были быть?

дополнил ответ выше

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

sokol92

Пользователь

Сообщений: 4445
Регистрация: 10.09.2017

Если задача носит постоянный характер, то проще выгружать (из datacol) исходные данные в CSV-формате и настроить соответствующий импорт в Excel.

Изменено: sokol9226.01.2018 13:34:41

 

Бахтиёр

Пользователь

Сообщений: 1926
Регистрация: 15.01.2016

Excel 365

#22

26.01.2018 14:35:44

Цитата
Hugo:  Если открыть архиватором

Игорь, супер!

А где этот Sharedstring ?

Прикрепленные файлы

  • Image 26-01-2018 16-20-21 001.png (11.47 КБ)

 

danilfg

Пользователь

Сообщений: 12
Регистрация: 12.04.2017

#23

26.01.2018 14:41:56

Цитата
sokol92 написал:
Если задача носит постоянный характер, то проще выгружать (из datacol) исходные данные в CSV-формате и настроить соответствующий импорт в Excel.

Дело в том,что обработка табличных данных для сортировки по столбцам. А при выгрузке в CSV выдает не корректные данные

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

У меня тут вот так:
_rels
theme
worksheets
styles.xml
workbook.xml
sharedStrings.xml

Но файл из этой темы.

Изменено: Hugo26.01.2018 14:43:51

 

Jack Famous

Пользователь

Сообщений: 10846
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

У меня с файлом-примером также, как у Hugo

Прикрепленные файлы

  • 1.png (10.77 КБ)
  • 2.png (15.29 КБ)

Изменено: Jack Famous26.01.2018 14:52:31

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Бахтиёр

Пользователь

Сообщений: 1926
Регистрация: 15.01.2016

Excel 365

#26

26.01.2018 15:11:09

Цитата
Hugo:  файл из этой темы

теперь понятно )))

 

PooHkrd

Пользователь

Сообщений: 6602
Регистрация: 22.02.2017

Excel x64 О365 / 2016 / Online / Power BI

#27

26.01.2018 15:16:16

Цитата
danilfg написал:
А при выгрузке в CSV выдает не корректные данные

Что значит не корректная выгрузка?

Судя по всему там нужно женить данные из двух xml SharedStrings и xlworksheetssheet1.xml
Но есть у меня подозрение, что данные подпорчены уже и там, ибо:

Прикрепленные файлы

  • 2018-01-26 14_55_57-row — Редактор запросов.png (7.99 КБ)

Изменено: PooHkrd26.01.2018 16:23:42

Вот горшок пустой, он предмет простой…

 

Дмитрий Щербаков

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#28

26.01.2018 15:20:45

Цитата
PooHkrd написал:
нужно женить данные из двух xml SharedStrings и xlworksheetssheet1.xml

именно. В Sheets.xml данные о значениях ячеек, форматировании, формулах и т.п., а в SharedStrings — текстовое представление данных листов. При этом в SharedStrings они записаны в своем порядке, а в Sheet есть ссылка на ID каждого значения(за ссылку отвечает атрибут t)

Изменено: Дмитрий Щербаков26.01.2018 20:55:34

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Дмитрий Щербаков

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Что хочу сказать — все печально. В данном случае схемы XML файла тоже не помогут. Файл sharedStrings содержит определения исключительно для текстовых данных ячеек. При этом расположенных по порядку от 0 до последнего элемента(определены в схеме элементами si). Можно представить как коллекцию, в качестве ключей которой применяется порядковый номер элемента, а в качестве значения — текст ячейки. Ну или представить как одномерный массив с нижней границей 0.
В файле Sheet при этом схема работает следующим образом: есть элемент v — он отвечает за значение ячейки. При этом он всегда является целым числом. Есть элемент c и у него есть атрибуты: r, s и t. Если t=»s», то в качестве значения ячейки берется элемент из sharedStrings, порядковый номер которого определяется значением, записанным в качестве значения для v. Если же t не равен s или вовсе отсутствует — то в качестве значения ячейки берется само число из v.
На простом примере. Есть строка в sheet.xml, определяющая одну ячейку:
<x:c r=»A1″ s=»1″ t=»s«><x:v>0</x:v></x:c>
красным я выделил интересующие нас показатели. t=»s» — значит в качестве значения будет взят элемент под номер 0(<x:v>0</x:v>) из sharedStrings(si).
Для проблемных ячеек в приложенном файле данные выглядят так:
</x:c><x:c r=»O2″ s=»2″><x:v>43192</x:v></x:c>
атрибута t нет вообще, значит в качестве значения ячейки будет записано само значение v.

Таким образом получается, что если в v изначально числовое значение — в sharedStrings его просто нет. Там исключительно текст.
Поэтому никакими ухищрениями изначальные реальные значения из этих файлов не достать.

Изменено: Дмитрий Щербаков26.01.2018 21:05:14

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

danilfg

Пользователь

Сообщений: 12
Регистрация: 12.04.2017

#30

26.01.2018 22:43:27

Дмитрий Щербаков, спасибо за развернутый ответ! Жаль что не получится.

Понравилась статья? Поделить с друзьями:
  • Excel меняет число на дату как отключить
  • Excel меняет числа в ячейке
  • Excel меняет цифры на формулы
  • Excel меняет цвет заливки
  • Excel меняет цвет в ячейке при условии