Страницы: 1
RSS
Microsoft Query текстовой формат цифр в число
 
Всем доброго времени суток!
Microsoft® Office Excel® 2007 (12.0.4518.1014)
Microsoft® Query (12.0.4518.1014)

Из файл Эксель с одного листа в другой файл Эксель вытягиваю с помощью Microsoft Query две колонки. Наименование товара и его остатки.
Остатки в целевой файл загружаются не так как мен нужно
В исходном файте они выглядят так: 1 123,140
Я так понимаю это такое форматирования числа, но больше похоже на текстовой формат так как и сортировка остатков происходит в алфавитном порядке
Вот так сейчас:
Код
153,600
16 329,600
168,960
2 956,805
20 723,041
20,160

Прокликал все пункты меню Microsoft Query, но не смог настроить так как мен нужно. Я так понимаю надо вручную писать какие то команды в Окне "Запрос SQL"
Подскажите, пожалуйста, как это сделать, что бы в результате числа загружались в формате цифр и сортировались как числа
Вот так надо:
Код
20723,041
16329,6
2956,805
168,96
153,6
20,16
Искал на форуме по запросу "microsoft query текст в число", но в дух результатах не нашел подходящего мне ответа.

Извините за второй вопрос. Развернуто отвечать здесь не нужно. Просто хочу понять, есть смысл создавать новую тему или нет. Поиск по форому тоже не дал результат.
Подскажите пожалуйста, можно или нет, в рамках программы Microsoft Query, в моем случаи наличие товара, суммировать остатки по признаку одинаковые наименования товара. В одном файле, на одном листе, в одну колонку записаны остатки с 3х складов. (Выгрузка из 1С)
Изменено: AntonQuery - 02.03.2026 10:02:06
 
Без файла очень сложно что-то советовать - данных не видно, только Ваши предположения. Но если числа не числа, а текст - то можно сначала удалить пробелы(заменить их на пусто - есть команда замены значений в PQ: вкладка Преобразование -Замена значений), а потом применить преобразование столбца(выделяете столбец -вкладка Преобразование -раскрываете список "Тип данных" и выбираете Десятичное число). Это так же можно сделать, кликнув мышью на значок в левой части заголовка столбца и выбрав там Десятичное число.
Вполне возможно, что и без замены пробела преобразование справиться.

P.S. По второму: есть инструмент Группировать.
Изменено: Дмитрий(The_Prist) Щербаков - 28.02.2026 14:05:20
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий, спасибо за ответ.
Забыл уточнить. в Исходнике остатки без пробелов
Куда выслать файл исходник?

Сейчас я решаю свою проблему , путем подготовки источника данный, в ручную. Но это не удобно, время, и дополнительное место ошибок.
 
Странно, где читал о схожих задачах, только наоборот, кто-то хотел заставить MQ толи менять формат, толи возвращать данные в том же формате. Обсуждалось вроде касательно дат.
Но ему ответили что MQ считывает только данные и форматирование игнорирует.
А в моем случаи формат ячеек переносится...
 
Цитата
AntonQuery написал:
Куда выслать файл исходник?
сюда же и прикладывайте. Оставьте пару строк, названия и всю конф.инф-цию можете заменить - важно увидеть формат чисел.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Урезанный исходник файла, прикрепил.  
Изменено: AntonQuery - 03.03.2026 13:47:45
 
Только сейчас понял - у Вас не PowerQuery, а обычный запрос, т.к. офис 2007 и там нет PowerQuery.
Тут только один выход: создаете нужный запрос и не выгружаете его на лист, а сохраняете. У Вас появится файл запроса. Открываете его обычным блокнотом. Там находите строку вроде такой(я переносил только поля F9, F10, F11):
SELECT `Ћист_1$`.F9, `Ћист_1$`.F10, `Ћист_1$`.F11  FROM `C:\Users\the-p\Desktop\стандарт 1.xls`.`Ћист_1$` `Ћист_1$`
Поле с числами я выделил красным. И его надо преобразовать. Делаете это так:
IIF(ISNUMERIC(`Ћист_1$`.F10), CDbl(`Ћист_1$`.F10),`Ћист_1$`.F10)
т.е. Вы подменяете простой перенос данных поля на условие с конвертированием. Получиться должно что-то такое:
SELECT `Ћист_1$`.F9, IIF(ISNUMERIC(`Ћист_1$`.F10), CDbl(`Ћист_1$`.F10),`Ћист_1$`.F10), `Ћист_1$`.F11  FROM `C:\Users\the-p\Desktop\стандарт 1.xls`.`Ћист_1$` `Ћист_1$`
Сохраняете файл запроса.
Данные потом экспортируете просто двойным щелчком на файле запроса.
Изменено: Дмитрий(The_Prist) Щербаков - 03.03.2026 14:49:01
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Прикрепил файл запроса
Изменено: AntonQuery - 03.03.2026 14:34:06
 
Цитата
AntonQuery написал:
Прикрепил файл запроса
изменил согласно тому, что написал выше
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий, спасибо большое!
Работает, но создает новый файл. Постараюсь сегодня самостоятельно разобраться как возвращать данные именно в мой файл. А то сейчас результат запроса открывается в новом файле.
Сейчас пока другие дела горят.
 
Цитата
AntonQuery написал:
создает новый файл
так Вы можете отредактировать запрос в файле: выделяете любую ячейку внутри таблицы запроса -правая кнопка мыши -Таблица -Изменить запрос. В появившемся окне щелкаете до последнего шага и выбираете не "Вернуть данные в Microsoft Excel", а "Просмотр или изменение данных". В этом окне Вид -Запрос SQL. Подменяете запрос на тот, что в файле запроса(только уберите вот эти вот все символы "& #13;& #10;", заменив их простым переносом на строку). После этого - Ок. В окне Файл -Вернуть в Microsoft Excel.
Теперь запрос там же где и был.
Изменено: Дмитрий(The_Prist) Щербаков - 04.03.2026 10:38:20
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
написал:
Вы можете отредактировать запрос в файле
Получилось.
Но вот как сделать сортировку по количеству от большего к меньшему?

Похоже Microsoft Query использует для сортировки первые два символа  
 
Цитата
AntonQuery написал:
Похоже Microsoft Query использует для сортировки первые два символа
Нет. Это потому что данные смешанные - это Вам не ячейки Excel, здесь строгость нужна. Либо только числа, либо даты, либо текст и т.п. Если нужна сортировка - то и условие надо правильно прописывать:
Код
IIF(ISNUMERIC(`Лист_1$`.F10), CDbl(`Лист_1$`.F10), 0)

ну и сортировку в конце добавить по второму полю:
Код
ORDER BY 2 DESC
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Ещё актуально?  
 
Я по позже вернусь к этому вопросу. Пока завалы.  
 
Цитата
написал:
IIF(ISNUMERIC(`Лист_1$`.F10), CDbl(`Лист_1$`.F10), 0)
Дмитрий здравствуйте!
В файле который Вы исправили для меня, эти команды вроде как присутствуют.
Но все же сортировка проходит не от большего к меньшему
 
Так, мне нужно разобраться в своих таблицах. Вроде как запрос корректно работает, надо просто получше вникнуть
 
Убедитесь, что поставили правильно сортировку - по номеру поля, а не по имени. Выше я писал об этом.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий, спасибо Вам за помощь и консультацию. Получен опыт, и немного вник в язык запросов, но времени нет на подробное освоение.
Решил и сделал апгрейд, в Power Query все настроил и получил необходимый результат!
Успехов Вам!
Страницы: 1
Читают тему
Наверх