Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Возврат Даты в числовом виде VBA
 
Цитата
написал:
asdewq1 , здравствуйте. Не совсем понятно, как сочетается вопросЦитата написал:возможно ли чтобы lambda функции написанные в одном месте были доступны во всех открываемых книгах ?с Цитата написал:А тут получается сама по себе формула сохранена в личных настройках и доступна в любой из открываемых книг. ?Но как и писал ранее, прописывайте свои функции в надстройке, устанавливаете ее в Эксель и все функции доступны в любой открытой книге:  https://www.excel-vba.ru/chto-umeet-excel/kak-sozdat-svoyu-nadstrojku/
Криво косо , но получилось.


Прописал для теста
Код
Private WithEvents App As Application

Private Sub Workbook_Open()
    Set App = Application
End Sub




Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
If (Wb.Name = "PERSONAL.XLSB") Then
    MsgBox "Вы открыли книгу:" & Wb.Name
    Else
    ActiveWorkbook.Names.Add Name:="test", RefersToR1C1:="=LAMBDA(a,b,a+b)"
    End If
    
End Sub


Private Sub App_NewWorkbook(ByVal Wb As Workbook)
    MsgBox "Вы создали новую книгу"
    ActiveWorkbook.Names.Add Name:="test", RefersToR1C1:="=LAMBDA(a,b,a+b)"
    ActiveWorkbook.Names.Add Name:="test2", RefersToR1C1:="=LAMBDA(ad,ba,ad+ba)"

End Sub




Всем спасибо.
Сейчас у меня везде доступны будут и макросы и лямбды.
Возврат Даты в числовом виде VBA
 
Цитата
написал:
написал:А в каждой книге прописывать События объекта Worksheet вообще не вариантпрописывайте в надстройке :  https://www.excel-vba.ru/chto-umeet-excel/kak-otsledit-sobytienaprimer-vydelenie-yacheek-v-lyuboj-kn....
раз пошла такая пьянка а возможно ли чтобы lambda функции написанные в одном месте были доступны во всех открываемых книгах ?





Цитата
написал:
asdewq1 , Format в коде лишнее если нужна дата, достаточноКод ? 123Public Function ИзвлечьДатуДокумента1(Text As String) As DateИзвлечьДатуДокумента1 = CDate(MyReg(Text, "\d{2}\.\d+\.\d+"))End FunctionНу а далее в ячейке уже её форматом показывайте как хотите, вручную или макросом.
Как и писал выше . Я просто пробывал различные варианты по принципу авось сработает.

Хотелось отображение как есть в excel при открытии ты видишь например формат общий и строку , но при этом ячейка в сводных таблицах ведет себя как дата . И при построении сводных таблиц появляется дополнительная группировка месяц , квартал, год .
Возврат Даты в числовом виде VBA
 
Цитата
написал:
ли используются макросы - почему бы не использовать их для установки нужного формата? Что мешает это сделать? Например, можно в модуль листа записать такую обработку(срабатывает при каждом изменении листа):
И такой вариант также не подходит .
Так как получается это событие отдельного листа. А тут получается сама по себе формула сохранена в личных настройках и доступна в любой из открываемых книг. А в каждой книге прописывать События объекта Worksheet вообще не вариант
Возврат Даты в числовом виде VBA
 
Цитата
написал:
Конечно, скорее всего нужны доп.проверки, чтобы лишнего не делать. Но я показал лишь пример без понимания, подойдет ли такой подход или нет.И да, функция тогда должна выглядеть так(т.е. возвращать именно дату):Код ? 123Public Function ИзвлечьДатуДокумента1(Text As String) As Date    ИзвлечьДатуДокумента1 = CDate(MyReg(Text, "\d{2}\.\d+\.\d+"))End FunctionНакидывать сюда формат через VBA.Format нет смысла. К тому же, если делать через Format, на некоторых ПК и вовсе будет ошибка, если формат даты в локализации отличается от "ДД.ММ.ГГГГ".
Спасибо.
Просто в данном случае я просто начал пробовать и просто увеличивал количество функций в недежде что заработает. Но увы.
А постоянная проверка на ввод формулы не нагружает процессор?




Цитата
написал:
asdewq1  написал: и работает ли вообщеРаботает. Вы не правильно скопировали текст макроса из сообщения. Нужно копировать при русской раскладке клавиатуры, т.к. в нем используются русские буквыЦитата asdewq1  написал: второй раз написан Regex это комментарийЯ не второй раз (который комментарий), а в принципе. Эта функция не нужнаЦитата asdewq1  написал: Как можно исправить без изменения формата ячеек.
ну да получается я если честно сразу не догадался что можно split сделать.
Возврат Даты в числовом виде VBA
 
Цитата
написал:
Формат ячеек установите Дата.


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


Цитата



Для Вашего примера можно без второй функции (MyRegex) обойтись
Код
Function Get_Data(iData)
  Get_Data = Format(Split(iData, "от")(UBound(Split(iData, "от"))), "dd.mm.yyyy")
End Function
не очень понимаю как это работает и работает ли вообще.
А что касается второй раз  второй раз написан Regex это комментарий, просто я пытался различными способами вернуть дату.
Изменено: asdewq1 - 12.05.2025 12:25:26
Возврат Даты в числовом виде VBA
 
Добрый день!
Написал формулу на VBA
Код
Public Function ИзвлечьДатуДокумента(Text As String) As Date
ИзвлечьДатуДокумента = Format(CDate(MyRegex(Text, "\d{2}\.\d+\.\d+")), "DD.MM.YYYY")

'ИзвлечьДатуДокумента = Format(MyRegex(Text, "\d{2}\.\d+\.\d+"), "DD.MM.YYYY")
End Function

Данная формула извлекает дату из выбранной ячейки. Однако возникает проблема с возвратом значения.
Если возвращать дату то идет цифровое значение даты.
Если поставить String то возвращается текст и не группируются данные в месяца и года.
Может есть возможность как то это побороть без изменения числового формата????
Оптимизация загрузки (слияние файлов PQ)
 
Цитата
написал:
asdewq1 , с вероятностью 99,9% тормоза в связи с сетевым расположением файлов.ПС: мне все же не понятно соотношение rdp/сетевое расположение, т.к. для меня rdp - это работа на обычном удаленном локальном ПК как на своем.Видимо, работа на rdp, а плюсом запущенный на rdp excel тянет файлы с какого-то др. сервера.Но это уже не важно, т.к. изменить вы, видимо, ничего не сможете.
Понятно спасибо. Я просто думал у меня руки совсем кривые и делаю все не так.
Оптимизация загрузки (слияние файлов PQ)
 
Цитата
написал:
upd: так через rdp или сетевое? сетевое имеется в виду, что исходные файлы-источники на сетевой папке, а обращаетесь к ним вы со своего ПК - где запускаестся excel ? - на вашем ПК или на rdp? - если вы со своего ПК обращаетесь к файлам на сервере, то они скачиваются к вам на ПК налету + время обработки у вас



Я не могу скопировать документы ни на диск C: удаленного компа, доступа нет, А тем более на локальный комп.
Характеристики удаленного компа Intel Xeon Gold 6330 2.0GHz, RAM 6GB, OS Win10.
На локальном компьютере есть только вход в терминал.
Оптимизация загрузки (слияние файлов PQ)
 
1. Столбцов не более 20
2. Столбцы текстовые в основном до 20 символов
3. характеристики это не совсем известно подключение идет через rdp , но насколько я знаю характеристики компа не самые выдающиеся
4.подключение к файлам сетевое.
5. исходные файлы не более пару мегабайт
6. Над датами сейчас действительно нет операций сейчас , однако возможно будут использоваться сводные таблицы и тогда формат дат будет очень актуальный . Если формат не выбрать если я правильно понимаю будет хуже строить сводные по кварталам или месяцам
7. Ошибка вылезла пару дважды и после обновления ошибка исчезала  
Оптимизация загрузки (слияние файлов PQ)
 
Цитата
написал:
Цитата asdewq1  написал: #"Вызвать настраиваемую функцию1" = скиньте код функции
По факту функция только поднимает заголовки


Код
let
    Источник = (Параметр1 as binary) => let
        Источник = Excel.Workbook(Параметр1, [InferSheetDimensions= true]),
        #"Доставленные товары_Sheet" = Источник{[Item="Доставленные товары",Kind="Sheet"]}[Data],
        #"Строки с примененным фильтром2" = Table.SelectRows(#"Доставленные товары_Sheet", each ([Column2] <> null)),
        #"Строки с примененным фильтром" = Table.SelectRows(#"Строки с примененным фильтром2", each ([Column1] <> null)),
        #"Повышенные заголовки" = Table.PromoteHeaders(#"Строки с примененным фильтром", [PromoteAllScalars=true])
    in
        #"Повышенные заголовки"
in
    Источник
Код
let
    Источник = (Параметр4 as binary) => let
        Источник = Excel.Workbook(Параметр4, [InferSheetDimensions= true]),
        #"Товары, переданные в доставку_Sheet" = Источник{[Item="Товары, переданные в доставку",Kind="Sheet"]}[Data],
        #"Строки с примененным фильтром1" = Table.SelectRows(#"Товары, переданные в доставку_Sheet", each ([Column2] <> null)),
        #"Строки с примененным фильтром" = Table.SelectRows(#"Строки с примененным фильтром1", each ([Column1] <> null and [Column1] <> "Заказы")),
        #"Повышенные заголовки" = Table.PromoteHeaders(#"Строки с примененным фильтром", [PromoteAllScalars=true])
    in
        #"Повышенные заголовки"
in
    Источник
Оптимизация загрузки (слияние файлов PQ)
 
Цитата
написал:
ошибка на что-то намекает? примеры всех файлов?
Ошибка уходит если повторно запустить обновление данных.
Файл с примерами выслать не могу так как доступа на копирование к ним не имею  
Оптимизация загрузки (слияние файлов PQ)
 
Добрый день!

У меня вопрос возможно ли оптимизировать запросы?
У меня есть папка в папке около 20 файлов как итог. В этих файлах 5 листов и на каждом листе таблица.
У меня созданы 5 запросов. Которые собирают со всех файлов информацию по листам ("Доставлено", "Возвращено" и т.д.) в один файл в на пять листов.
Общая сумма строк которая импортируется в файл не превышает 200к. Однако все происходит долго и иногда завершается с ошибкой.
Ниже пример двух запросов.

Код
let
    Источник = Folder.Files(#"Адрес"),
    #"Отфильтрованные скрытые файлы1" = Table.SelectRows(Источник, each [Attributes]?[Hidden]? <> true),
    #"Вызвать настраиваемую функцию1" = Table.AddColumn(#"Отфильтрованные скрытые файлы1", "Преобразовать файл", each #"Преобразовать файл"([Content])),
    #"Переименованные столбцы1" = Table.RenameColumns(#"Вызвать настраиваемую функцию1", {"Name", "Source.Name"}),
    #"Другие удаленные столбцы1" = Table.SelectColumns(#"Переименованные столбцы1", {"Source.Name", "Преобразовать файл"}),
    #"Столбец расширенной таблицы1" = Table.ExpandTableColumn(#"Другие удаленные столбцы1", "Преобразовать файл", List.Distinct(List.Combine(List.Transform (#"Другие удаленные столбцы1"[#"Преобразовать файл"], Table.ColumnNames)))),
    #"Замененное значение" = Table.ReplaceValue(#"Столбец расширенной таблицы1",null,0,Replacer.ReplaceValue,{"Цена c НДС без учёта скидок, руб. за шт.", "Ваша скидка по акции маркетплейса, руб. на 1 шт.", "Ваша скидка по бонусам СберСпасибо (за шт.), руб. на 1 шт.", "Ваша скидка по баллам Яндекс.Плюса, руб. на 1 шт.", "Цена с НДС с учётом всех скидок, руб. за шт.", "Стоимость всех доставленных штук с НДС без учёта скидок, руб.", "Сумма всех скидок для доставленных штук, руб.", "Стоимость всех доставленных штук с НДС с учётом всех скидок, руб.", "Цена c НДС без учёта скидок за шт., ₽", "Ваша скидка по акции маркетплейса на 1 шт., ₽", "Ваша скидка по бонусам СберСпасибо (за шт.) на 1 шт., ₽", "Ваша скидка по баллам Яндекс.Плюса на 1 шт., ₽", "Цена с НДС с учётом всех скидок за шт., ₽", "Стоимость всех доставленных штук с НДС без учёта скидок, ₽", "Сумма всех скидок для доставленных штук, ₽", "Стоимость всех доставленных штук с НДС с учётом всех скидок, ₽"}),
    #"Добавлен пользовательский объект" = Table.AddColumn(#"Замененное значение", "Стоимость всех доставленных штук с НДС без учёта скидок", each [#"Стоимость всех доставленных штук с НДС без учёта скидок, руб."]+[#"Стоимость всех доставленных штук с НДС без учёта скидок, ₽"]),
    #"Добавлен пользовательский объект1" = Table.AddColumn(#"Добавлен пользовательский объект", "Сумма всех скидок для доставленных штук", each [#"Сумма всех скидок для доставленных штук, руб."]+ [#"Сумма всех скидок для доставленных штук, ₽"]),
    #"Добавлен пользовательский объект2" = Table.AddColumn(#"Добавлен пользовательский объект1", "Стоимость всех доставленных штук с НДС с учётом всех скидок", each [#"Стоимость всех доставленных штук с НДС с учётом всех скидок, руб."]+[#"Стоимость всех доставленных штук с НДС с учётом всех скидок, ₽"]),
    #"Другие удаленные столбцы" = Table.SelectColumns(#"Добавлен пользовательский объект2",{"Source.Name", "Номер заказа", "Тип заказа", "Название товара", "Ваш SKU", "SKU на складе", "Количество переданных в доставку, шт.", "Доставлено, шт.", "Дата оформления заказа", "Дата передачи товара в доставку", "Дата доставки товара", "Способ оплаты", "Ставка НДС", "Стоимость всех доставленных штук с НДС без учёта скидок", "Сумма всех скидок для доставленных штук", "Стоимость всех доставленных штук с НДС с учётом всех скидок"}),
    #"Измененный тип" = Table.TransformColumnTypes(#"Другие удаленные столбцы",{{"Дата оформления заказа", type date}, {"Дата передачи товара в доставку", type date}, {"Дата доставки товара", type date}})
in
    #"Измененный тип"
Код
let
    Источник = Folder.Files(#"Адрес"),
    #"Отфильтрованные скрытые файлы1" = Table.SelectRows(Источник, each [Attributes]?[Hidden]? <> true),
    #"Вызвать настраиваемую функцию1" = Table.AddColumn(#"Отфильтрованные скрытые файлы1", "Преобразовать файл (4)", each #"Преобразовать файл (4)"([Content])),
    #"Переименованные столбцы1" = Table.RenameColumns(#"Вызвать настраиваемую функцию1", {"Name", "Source.Name"}),
    #"Другие удаленные столбцы1" = Table.SelectColumns(#"Переименованные столбцы1", {"Source.Name", "Преобразовать файл (4)"}),
    #"Столбец расширенной таблицы1" = Table.ExpandTableColumn(#"Другие удаленные столбцы1", "Преобразовать файл (4)", List.Distinct(List.Combine(List.Transform (#"Другие удаленные столбцы1"[#"Преобразовать файл (4)"], Table.ColumnNames)))),
    #"Замененное значение" = Table.ReplaceValue(#"Столбец расширенной таблицы1",null,0,Replacer.ReplaceValue,{"Цена c НДС без учёта скидок, руб. за шт.", "Ваша скидка по акции маркетплейса, руб. на 1 шт.", "Ваша скидка по бонусам СберСпасибо (за шт.), руб. на 1 шт.", "Ваша скидка по баллам Яндекс.Плюса, руб. на 1 шт.", "Цена с НДС с учётом всех скидок, руб. за шт.", "Стоимость всех переданных в доставку штук с НДС без учёта скидок, руб.", "Сумма всех скидок для переданных в доставку штук, руб.", "Стоимость всех переданных в доставку штук с НДС с учётом всех скидок, руб.", "Цена c НДС без учёта скидок за шт., ₽", "Ваша скидка по акции маркетплейса на 1 шт., ₽", "Ваша скидка по бонусам СберСпасибо (за шт.) на 1 шт., ₽", "Ваша скидка по баллам Яндекс.Плюса на 1 шт., ₽", "Цена с НДС с учётом всех скидок за шт., ₽", "Стоимость всех переданных в доставку штук с НДС без учёта скидок, ₽", "Сумма всех скидок для переданных в доставку штук, ₽", "Стоимость всех переданных в доставку штук с НДС с учётом всех скидок, ₽"}),
    #"Добавлен пользовательский объект" = Table.AddColumn(#"Замененное значение", "Стоимость всех переданных в доставку штук с НДС без учёта скидок", each [#"Стоимость всех переданных в доставку штук с НДС без учёта скидок, руб."]+[#"Стоимость всех переданных в доставку штук с НДС без учёта скидок, ₽"]),
    #"Добавлен пользовательский объект1" = Table.AddColumn(#"Добавлен пользовательский объект", "Сумма всех скидок для переданных в доставку штук", each [#"Сумма всех скидок для переданных в доставку штук, руб."]+[#"Сумма всех скидок для переданных в доставку штук, ₽"]),
    #"Добавлен пользовательский объект2" = Table.AddColumn(#"Добавлен пользовательский объект1", "Стоимость всех переданных в доставку штук с НДС с учётом всех скидок", each [#"Стоимость всех переданных в доставку штук с НДС с учётом всех скидок, руб."]+[#"Стоимость всех переданных в доставку штук с НДС с учётом всех скидок, ₽"]),
    #"Другие удаленные столбцы" = Table.SelectColumns(#"Добавлен пользовательский объект2",{"Source.Name", "Номер заказа", "Тип заказа", "Название товара", "Ваш SKU", "SKU на складе", "Количество переданных в доставку, шт.", "Дата оформления заказа", "Дата передачи товара в доставку", "Дата доставки товара", "Способ оплаты", "Ставка НДС", "Стоимость всех переданных в доставку штук с НДС без учёта скидок", "Сумма всех скидок для переданных в доставку штук", "Стоимость всех переданных в доставку штук с НДС с учётом всех скидок"}),
    #"Измененный тип" = Table.TransformColumnTypes(#"Другие удаленные столбцы",{{"Дата оформления заказа", type date}, {"Дата передачи товара в доставку", type date}, {"Дата доставки товара", type date}})
in
    #"Измененный тип"
Слияние таблиц имеющие различные шапки (изменена форма выгрузки)
 
Спасибо всем.
Вроде как разобрался.
Также нашел также видео на на одном нецензурном ресурсе youtube где все очень просто объясняется. И после его стало понятно что voler83 имел ввиду.
Слияние таблиц имеющие различные шапки (изменена форма выгрузки)
 
Цитата
написал:
лень делать, быстрее написатьмануально1. создаете список имен столбцов (Table.ColumnNames) - старой или новой таблицы - как вам удобнее, ниже предполагается старые имена на новые. Выгружаете список на лист Excel.2. на листе  в выгруженной таблице руками создаете и заполняете столбец "Новое имя" - конечно руками, ну как вариант можно нечетким Join в PQ сопоставить 2 списка имен столбцов - но в любом случае надо просматривать глазами будет.3. таблицу со столбцами "Старое имя" I "Новое имя" с листа загружаете в PQ и применяя функцию Table.ToRows получаете список списков имен - удобнее сделать это в отдельном запросе, назовем его допустим справочник_имен.4.  в старом отчете (смотря какое имя было для вас "старое", предположим старые имена вы переделали на новые) в функции Table.RenameColumns вместо имен столбцов просто подставляете имя запроса со списком из п.35. теперь столбцы называются одинаково.было:Table.RenameColumns(   table as table,   renames as list,  // сюда в качестве списка просто подставляете название запроса из п.3 безо всяких кавычек   optional missingField as nullable number,  // не забудьте указать параметр MissingField.Ignore) as tableстало:Table.RenameColumns(   таблица из старого отчета,  справочник_имен,  MissingField.Ignore)

Изменено: voler83  - 16.04.2025 13:10:38
Как сказал один человек в интернете "Ничего не понял , но очень интересно"
Слияние таблиц имеющие различные шапки (изменена форма выгрузки)
 
Цитата
написал:
дравствуйте. Не знаю как вы подтягиваете данные и куда, но если в книге Март2, удалить столбец B, тем более что это только дубль столбца А, то все столбцы совпадут со столбцами в книге февраль1. И при необходимость можно только шапку привести к одинаковому виду, скопировав из одной книги в другую. А если сбор данных идет не зависимо от названий в шапке, а по номеру столбца, то и шапку менять не надо.
Добрый день!
Что по поводу дубля это не совсем дубль , а при различных ситуациях это может быть другой номер.
Это понятно что можно просто взять и изменить наименования шапки вручную, но это нужно делать постоянно и хотелось бы решить данную проблему раз и навсегда, т.к. интернет магазины имеют свойства постоянно менять наименования столбцов. Сбор в моем случае идет по наименованию
Слияние таблиц имеющие различные шапки (изменена форма выгрузки)
 
Добрый день!
Есть проблема с отчетам который предоставляет внешний контрагент. Хочу объединить два файла с использованием PQ, у них различные шапки.
1. В файле март добавлен столбец "Ваш номер заказа";
2. Изменены наименования столбцов например с "Стоимость всех переданных в доставку штук с НДС с учётом всех скидок, руб." на "Стоимость всех переданных в доставку штук с НДС с учётом всех скидок, ₽"


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

Прошу подсказать как можно сделать .
1. Чтобы новые столбцы создались  в сведенной таблице. И данные которые начались с марта туда подтянулись.
2. Как верно произвести переименование столбцов  с "Стоимость всех переданных в доставку штук с НДС с учётом всех скидок, руб." на "Стоимость всех переданных в доставку штук с НДС с учётом всех скидок, ₽" чтобы данные также объединились в общую таблицу.  
Неверное определение размера таблицы при получении запроса из книги
 
Цитата
написал:
Excel.Workbook


Пришелец-прораб.
Спасибо . Все заработала как нужно.
Тему можно закрывать.
Неверное определение размера таблицы при получении запроса из книги
 
Цитата
написал:
Excel.Workbook


Пришелец-прораб.
спасибо буду пробывать

Цитата
написал:
Цитата asdewq1  написал: Прошу помочь в решении данного вопросаБез исходного файла-примера какой помощи Вы ожидаете?
Дело в том что я бы с радостью. Однако у нас очень жестокая и жесткая система безопасности на работе и ничего нельзя копировать.
А при любое изменения файла и сразу PQ начинает нормально работать.
Вот тут и возникает дилемма что мне нужна помощь, но показать исходник я не могу. Надеюсь вы меня поймете.
Неверное определение размера таблицы при получении запроса из книги
 
Добрый день!
Получаю выгрузку из Интернет Магазины с отчетом о продажах.
Хочу все отчеты с помощью PQ объединить в один файл.
Однако возникает неверное определение размера таблицы и как итог  в PQ попадают только сведения о шапке таблицы.
Прошу помочь в решении данного вопроса.

let

   Источник = Excel.Workbook(File.Contents("C:\Users\nexta\Desktop\united_statistics_report_60067698_11-11-2024.xlsx"), null, true),

   #"Возвращенные товары_Sheet" = Источник{[Item="Возвращенные товары",Kind="Sheet"]}[Data],

   #"Измененный тип" = Table.TransformColumnTypes(#"Возвращенные товары_Sheet",{{"Column1", type text}, {"Column2", type text}, {"Column3", type text}, {"Column4", type text}, {"Column5", type text}, {"Column6", type text}, {"Column7", type text}, {"Column8", type text}, {"Column9", type text}, {"Column10", type text}, {"Column11", type text}, {"Column12", type text}, {"Column13", type text}, {"Column14", type text}, {"Column15", type text}, {"Column16", type text}, {"Column17", type text}, {"Column18", type text}, {"Column19", type text}, {"Column20", type text}, {"Column21", type text}, {"Column22", type text}, {"Column23", type text}, {"Column24", type text}, {"Column25", type text}, {"Column26", type text}, {"Column27", type text}, {"Column28", type text}, {"Column29", type text}, {"Column30", type text}, {"Column31", type text}, {"Column32", type text}, {"Column33", type text}, {"Column34", type text}, {"Column35", type text}, {"Column36", type text}, {"Column37", type text}, {"Column38", type text}, {"Column39", type text}})

in

   #"Измененный тип"

Power Query замена значений в выбранных колонках на отрицательные при соблюдения условий в строке
 
Цитата
написал:
отвечает Александр Друзь  Максим Зеленский
Мне всегда больше нравился Максим Поташев или Федор Двинятин. Но в данном вопросе Максим Зеленским топ.

Спасибо. Тему можно закрывать.
Power Query замена значений в выбранных колонках на отрицательные при соблюдения условий в строке
 
Цитата
написал:
Код  columns = {"Кол-во", "Цена розничная"}, // перечисляете все нужные столбцы
   replace = Table.ReplaceValue(
       Source,
       null,
       (x) => if x[Тип документа] = "возврат" then -1 else 1,
       (v, o, n) => v * n,
       columns
   )

Формула заработала, однако есть маленький вопрос КАК !!!




1)




Почитал спецификацию

Table.ReplaceValue(
  table as table,
  oldValue as any,
  newValue as any,
  replacer as function,
  columnsToSearch as list, ) as table
oldValueThe value you want to search for and replace. You can specify a constant, a column reference, or conditional logic.
В нашем случае oldValue почему установлено значение null???



2)
       (x) => if x[Тип документа] = "возврат" then -1 else 1,
       (v, o, n) => v * n,


Как я понимаю в выражении (x) => if x[Тип документа] = "возврат" then -1 else 1 происходит возврат значения 1 или -1.
но вот я искреннее не понимаю как происходит вызов функции (v, o, n) => v * n. И что за параметр "o" в формуле.




Но при этом все работает.
В любом случае спасибо, просто хотелось бы разобраться мне лучше , чтобы не беспокоить гуру форума в дальнейшем с простецкими вопросами.
Power Query замена значений в выбранных колонках на отрицательные при соблюдения условий в строке
 
Добрый день!
Существует проблема с отчетом.
Выгружен отчет где все цифры имеют положительные значения.
В столбце "J"  установлен статус это "Продажа" или "Возврат". Соответственно значения в строках "Продажа" должны иметь исходные значения, а вот в строках "Возврат" необходимо произвести умножения на значения "-1".

При в начальном параметре замена значений или стандартные операции нет возможности добавить условия по строке.
Заменить значения нужно  только в некоторых колонках (в предоставленном примере выделенные зеленой заливкой)
Может у кого есть идеи как это можно сделать.
Заранее спасибо за помощь  
Ошибка преобразование данных при создании функции в Power Query,, При создании функции поля имеют имеют идентичные типы, однако не понимаю почему идет дополнительное преобразование полей. В результате чего поля принимают значения Error и расчет не производится.
 
тему можно закрывать.
Всем спасибо.
Ошибка преобразование данных при создании функции в Power Query,, При создании функции поля имеют имеют идентичные типы, однако не понимаю почему идет дополнительное преобразование полей. В результате чего поля принимают значения Error и расчет не производится.
 
Цитата
написал:
Перед функцией сделайте замену null для текстовых полей на "", для числовых полей на 0Ошибка выходит из-за попытки сложить число с null, с тестом также
Ошибка выходит до попытки что то с чем то сложить .


Цитата
написал:
asdewq1 , Всё дело в параметрах Вашей функции, если Вы хотите предавать параметры, содержащие null, то используйте ключевое слово nullable. Хотя лично я не очень понимаю зачем Вам эта функция нужна (видимо на её развитие есть планы какие-то) и не рекомендую так поступать, чтобы потом геморроя не нахвататься с преобразованием типов. Например, при сложении Показатель1 с Показатель2 совсем не желаемый результат может получиться.Кодlet SumBonus=(Товар as nullable text,   Подробности as nullable text,  Показатель0 as nullable number, Показатель1 as nullable number, Показатель2 as nullable number, Показатель3 as nullable number, Показатель4 as nullable number )=>
Спасибо. Все сработало и без всяких замен.
Ошибка преобразование данных при создании функции в Power Query,, При создании функции поля имеют имеют идентичные типы, однако не понимаю почему идет дополнительное преобразование полей. В результате чего поля принимают значения Error и расчет не производится.
 
Добрый день!

Столбцы Товар и Подробности имеют  тип текст text, остальные столбцы имеют тип number.


При создании функции, где в расчет берутся все столбцы , выдает сообщение


Expression.Error: Не удается преобразовать значение null в тип Text.

Сведения:

  Value=

  Type=[Type]

Однако я не понимаю  почему преобразуется столбец если столбец изначально имеет тип значения текст.

И как лучше обойти данную ошибку???

[ Закрыто] Power Query, Ошибка преобразование данных
 
Добрый день!

Столбцы Товар и Подробности имеют  тип текст text, остальные столбцы имеют тип number.


При создании формулы где в расчет берутся все столбцы , выдает сообщение


Expression.Error: Не удается преобразовать значение null в тип Text.

Сведения:

   Value=

   Type=[Type]

Однако я не понимаю  почему преобразуется столбец если столбец изначально имеет тип значения текст.

И как лучше обойти данную ошибку???

Изменение настроек умной таблицы Power Query
 
Спасибо !!!
Но как выяснилось ,что методом научного тыкв можно сделать многое и самостоятельно нашёл решение.
однако все равно очень большое спасибо за помощь .
тему прошу закрыть .
Изменение настроек умной таблицы Power Query
 
Добрый день, форумчане!
посмотрев полезные трюки от Николая Павлова решил сделать сборку таблиц в единый файл с помощью power query.
И вроде бы все получилось. Таблицу полученную необходимо печатать и при этом ячейки содержат большое количество символов. Я топорным способом в  полученный результат из power query  в самом excel уменьшил длину строк и сделал перенос слов и все  уместил по ширине листа и вроде все хорошо, но при обновлении сбиваются настройки ширины листа и все встаёт на исходные позиции , а это очень сильно удручает. Может подскажите как можно зафиксировать ширину строк в excel ?
Искал настройки и ничего не нашёл  
Неверный расчет формулы power query
 
Вы наверное не на том листе смотрите.  
Неверный расчет формулы power query
 
Добрый день, уважаемые форумчане подскажите почему power query высчитывает формулу неверно.
Есть 6 единиц товара1с общей стоимостью 27,15 usd. При делении данной позиции в power query выдает себестоимость единицы в 4,42, хотя правильное значение 4,525 и согласно правилам математики округление должно производится в сторону 4,53 USD. Если смотреть на расчет в power query до действия округления значения, в столбце Факт с/с расчет 4,52499995, вместо 4,525.
Вопрос как это можно исправить чтобы Excel рас читывал верно значения.
Заранее благодарю за советы и наставления
Изменено: asdewq1 - 22.07.2017 19:19:54
Страницы: 1
Наверх