Страницы: 1
RSS
Удалить тире из числа при запросе.
 
Всем, здравствуйте. Есть файл Пример.xls, в нем записан столбик "Номер" с числами, но в некоторых номерах есть  "-" -тире (2600100000-1). При получении внешних данных из Microsoft Query надо убрать "-" и полученное, преобразовать в число. Пробовал сделать запрос, текст команды SQL
Код
SELECT REPLACE(`TDSheet$`.Номер & '-','-','') AS 'Номер' FROM `TDSheet$` `TDSheet$`
В результате номера с тире выдают пустые ячейки. Надо из 2600100000-1 получить 26001000001, подскажите пожалуйста как это сделать.
Excel всемогущий.
 
Если даже ничего не делать с номером
Код
SELECT `TDSheet$`.Номер AS 'Номер'
FROM `TDSheet$` `TDSheet$`
Все равно получаю пустые ячейки от номеров с тире.
Excel всемогущий.
 
Так и без удаления "-" появляются проколы, так как среди чисел идет текст, а поле воспринимается как числовое.
Перегнал источник в текст и SELECT cdbl(replace(`TDSheet$`.Номер,'-','')) AS 'Номер'  FROM `TDSheet$` `TDSheet$`
Все как нужно.

Ох уж этот 1С
Изменено: БМВ - 05.04.2018 17:55:03
По вопросам из тем форума, личку не читаю.
 
Я сейчас открываю источник и удаляю "-" Макросом
Код
Columns("A:A").Replace What:="-", Replacement:=""
БМВ, скажите не изменяя источник, можно получать числа из номеров с  "-"?
P.S.
Цитата
БМВ написал:
Перегнал источник в текст
"Перегнал источник в текст"- это как?
Excel всемогущий.
 
Попробовал в Power Query создать запрос. Вроде получилось.
Код
let
    Источник = Excel.Workbook(File.Contents("D:\Пример.xls"), null, true),
    TDSheet1 = Источник{[Name="TDSheet"]}[Data],
    #"Измененный тип" = Table.TransformColumnTypes(TDSheet1,{{"Column1", type text}}),
    #"Повышенные заголовки" = Table.PromoteHeaders(#"Измененный тип"),
    #"Замененное значение" = Table.ReplaceValue(#"Повышенные заголовки","-","",Replacer.ReplaceText,{"Номер"}),
    #"Измененный тип1" = Table.TransformColumnTypes(#"Замененное значение",{{"Номер", type number}})
in
    #"Измененный тип1"
Изменено: agregator - 05.04.2018 18:46:41
Excel всемогущий.
 
Цитата
БМВ написал:
Перегнал источник в текст
Скажите "Перегнал источник в текст"-  как вы это делали?
Excel всемогущий.
 
Да все в том же Excel формулами, но это полуручная операция.
По вопросам из тем форума, личку не читаю.
 
Можно так преобразовать  
Код
With Range("A2:A36700")
     .NumberFormat = "@"
     .Value = .Formula
End With
Excel всемогущий.
 
А есть ли смысл в запросе? Какая цель всего мероприятия?
По вопросам из тем форума, личку не читаю.
 
Внедряют 1С. Из таблицы (которая выгружается автоматически из 1С) 30000 строк надо найти 3 цифры, по четырем параметрам, для 50 строк. Для этого я использую сводную таблицу (на основе запроса) и ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ, т.к. можно обновлять данные когда мне надо, работает с закрытой книгой, и они пересчитываются быстрее других формул. В источнике даты, количество часов - в виде текста и т.п., поэтому применил запрос.
Наверняка этот отчет можно сделать проще, но им надо так. Попросили помочь, я помог. Но потом стали рисовать "-"  "1,2,3..." и приходится перед обновлением данных, макросом открывать книгу, удалять "-" и сохранять как (в Temp). Хочу от этого уйти.
Изменено: agregator - 05.04.2018 21:46:35
Excel всемогущий.
 
Может  просто через формулы сделать предварительную обработку.

Пример не менял, на него ссылается формулы.
По вопросам из тем форума, личку не читаю.
 
БМВ, спасибо за помощь, но мне с запросом нравится больше (не нужен лист с формулами, а можно использовать запрос для сводной таблицы, не выгружая данные на лист), хотя я в запросах мало чего понимаю. Сейчас в первый раз использовал Power Query.
Excel всемогущий.
 
agregator, Ваше право, тем более, что отношусь нормально к MSQuery. Но отмечу
Цитата
agregator написал:
не нужен лист с формулами,
не аргумент, его можно скрыть от посторонних глаз, зато и PQ и MSQ чувствительны к местоположению источника данных, а формульный вариант позволяет сослаться на нужную книгу.
Вариант с макросом, может полностью избавить и от PQ и MSQ, и при старте предложить выбрать нужный источник.
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх