Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 267 След.
Преобразование таблицы с выборкой и удалением дубликатов
 
Доброе время суток.
Ещё вариант
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    toTable = Table.Group(Source, {"Глав"}, {"temp", each Table.FromRows({{_{0}[Глав]} & [Индекс]})}),
    toCommon = Table.Combine(toTable[temp]),
    newNames = {{"Column1", "Глав"}} & List.Transform({1..(Table.ColumnCount(toCommon) - 1)}, each {"Column" & Text.From(_ + 1), "Инд. " & Text.From(_)}),
    result = Table.RenameColumns(toCommon, newNames)
in
    result
Убрать из ячейки все кроме цифр
 
Цитата
bedvit написал:
что на таких больших объемах мой код в аутсайдерах
Привет, Виталий.
С твоим кодом в VBA есть и ещё проблема. Тестовый вывод показывает, что не удаляется ничего. Не пошёл и вызов Application.Run("DigitsXLL", sText), как и с Evaluate - видимо слишком длинная строка :) Результаты.
Цитата
Igor \D+ time: 0,0859375; digit count: 1299456; all count: 43895808
skais675 [^\d]+ time: 0,3828125; digit count: 1299456; all count: 43895808
BedVit VBA time: 1,117188; digit count: 43895808; all count: 43895808
Тестовый файл и код прикладываю. longText.zip в формате 7z (к сожалению форум не позволяет прикладывать архивы таком формате).
P. S. Решил сравнить с библиотекой .Net и тут засада. Или у меня руки не оттуда растут или... Результат
Цитата
Net time: 719,0871 мсек; digits count: 1299456; all count: 43895808
Скрытый текст
Убрать из ячейки все кроме цифр
 
Доброе время суток.
Цитата
Ігор Гончаренко написал:
существенно резвее
Протестировал на строке из 40 387 200 символов. Длина строки результата 301 800 (цифры только).
Ігор Гончаренко, шаблон "\D+", время 0,18 секунды
skais675, шаблон "[^0-9]", время 1,77 секунды
skais675, шаблон "[^0-9]+", время 0,27 секунды
bedvit, 1,2 секунды
Поиск ближайшего значения для требуемой даты в Power Query
 
Цитата
PooHkrd написал:
решений по поиску минмаксов
Коллега, спасибо за решение. Подобный подход устраняет одну очевидную проблему. Если две или более даты одного и того же ИНН в таблице запроса имеют одну и ту же ближайшую меньшую дату в таблице поиска, то мой вариант будет ошибочным для одной или более дат (для больших).
Поиск ближайшего значения для требуемой даты в Power Query
 
Доброе время суток
Ещё вариант
Код
let
    whatTable = Table.TransformColumnTypes(Excel.CurrentWorkbook(){[Name="Таблица3"]}[Content],{{"Дата", type date}, {"ИНН", type text}, {"№ документа", type text}}),
    whereTable = Table.TransformColumnTypes(Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],{{"Дата", type date}, {"ИНН", type text}, {"Наименование", type text}}),
    unionTable = whereTable & whatTable,
    neededOrder = Table.Sort(unionTable,{{"ИНН", Order.Ascending}, {"Дата", Order.Ascending}}),
    addIndex = Table.AddIndexColumn(neededOrder, "id"),
    getWhatOnly = Table.SelectRows(addIndex, each [#"№ документа"] <> null)[[Дата], [ИНН], [#"№ документа"], [id]],
    queryTable = Table.TransformColumns(getWhatOnly, {"id", each _ - 1}),
    result = Table.Join(queryTable, {"id"}, addIndex[[id], [Наименование]], {"id"}),
    #"Removed Columns" = Table.RemoveColumns(result,{"id"})
in
    #"Removed Columns"

Предполагается, что всегда есть меньшая дата в Таблица1 для даты в Таблица3 для данного ИНН.
Изменено: Андрей VG - 23 Июл 2019 13:08:48
Приведение содержания двух столбцов к одинаковому виду
 
Цитата
Judgin написал:
Так я вроде скидывал файл, в котором показал, что должно получится на выходе
Мда, так меня ещё никто не троллил  :D  Спасибо за науку! Намёк понял, тему покидаю.
Разделение текста на составляющие в Power Query
 
Цитата
azma написал:
у меня выходит ошибка
Покажите, что выводит PQ, если в расширенном редакторе набрать только List.Max
Тестировал: дома Excel 365 64bit PQ 2.70, на работе Excel 2016 32bit PQ 2.61. Работает.
Кодировка текста при импорте
 
Доброе время суток
Цитата
super_damage_fast_2016 написал:
Или лучше
освежить свои знания о правилах. Тут ТС тоже считает, что всё подробно расписал. Обсуждение идёт уже четвёртые сутки :)
P. S. И стоит ли для обсуждения проблемы с кракозяблами приводить пример кода, который всего лишь отвечает за выбор файла?
Изменено: Андрей VG - 22 Июл 2019 22:25:45
Приведение содержания двух столбцов к одинаковому виду
 
Цитата
Judgin написал:
да действительно этого значения в исходном файле нет
То есть нужно было, чтобы прошло трое суток обсуждения, чтобы прийти к пониманию (надеюсь у вас оно наступило), что это не зря пишется в правилах
Цитата
2.3. Приложите файл(ы) с примером (общим весом не более 300Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.
Попробуйте всё же составить простой пример из 20-30 (а то и меньше строк на входе) и что действительно должно именно из них, этих строк входа, получиться на выходе.
Разве это так сложно?
Разделение текста на составляющие в Power Query
 
Цитата
PooHkrd написал:
Ваш крайний вариант с List.Generate запустить не смог
Честно говоря, не стал разбираться. Просто собрал свои два последних варианта и ваш с CrossJoin в один файл (19 мегабайт). Ваш последний отработал за 31 секунду. Моя версия с List.Accumulate неожиданно поломалась - 260 секунд :(  Что к чему, понять не могу. Только добавил начальную нумерацию. Но List.Generate работает за 19 секунд, что несколько опровергает изречение
Цитата
PooHkrd написал:
копаться в таблицах внутри ячеек это зло
:)
Updated.
Пока получился вот такой самый быстрый на поиске максимально длинной должности по принципу, что персона кончается на эту должность.
Код
let
    persons = Table.AddColumn(Excel.CurrentWorkbook(){[Name="Персоны"]}[Content], "lower", each Text.Lower([Персона])),
    positions = List.Buffer(Excel.CurrentWorkbook(){[Name="Должности"]}[Content][Должность]),
    maker = Table.AddColumn(persons, "Должность", (rec) =>
    let
        person = rec[lower],
        calc = List.Transform(positions, each if Text.EndsWith(person, _) then [position = _, length = Text.Length(_)] else null)
    in
        List.Max(calc, null, (a, b) => if a = null or b = null then -1 else a[length] - b[length])[position]
    ),
    addName = Table.AddColumn(maker, "ФИО", each Text.Range([Персона], 0, Text.Length([Персона]) - Text.Length([Должность]) - 1)),
    #"Removed Columns" = Table.RemoveColumns(addName,{"Персона", "lower"})
in
    #"Removed Columns"
На примере по ссылке отработало за 14 секунд.
Изменено: Андрей VG - 22 Июл 2019 22:15:42
Приведение содержания двух столбцов к одинаковому виду
 
Цитата
Judgin написал:
Я добавил рядом несколько артикулов. Посмотрите как должно быть
Каким образом во второй таблице в столбце Артикул2 появилось значение a025b, если в первой исходной таблице в столбце Артикул2 его нет?
Изменено: Андрей VG - 22 Июл 2019 20:56:59
Количество листов в книге Excel по условию.
 
Цитата
Юрий М написал:
Но никто не отменял посимвольную оплату ))
:D
QueryTable импорт формулы массива
 
Цитата
skais675 написал:
Единственная проблема может быть, если в формулах есть ссылки на соседние листы, но это тоже решается сменой ссылок. Все решается макросом.
Увы, коллега, тут есть ещё одна большая проблема - по условию, большая часть формул - это формулы массива, а ArrayFormula понимает только 255 символов. Тут питерский медвежатник пытался решить эту проблему.
Количество листов в книге Excel по условию.
 
Доброе время суток
Цитата
Юрий М написал:
For i = 1 To Sheets.Count
Юрий, а зачем же так сложно? Чем плох такой вариант?
Код
?ActiveWorkbook.Sheets("Свод").Index
Накопительный отчет в PQ с меняющимися строками, Объединение таблиц с разным кол-вом строк (товаров) в накопительный отчет по % точности
 
Доброе время суток
Цитата
OblivionR написал:
советом
Пожалуйста. Делаете полное слияние по ключевым столбцам
Изменено: Андрей VG - 22 Июл 2019 13:47:02 (Более понятный рисунок)
В диапазоне найти последнюю позицию минимального значения
 
Доброе время суток
Цитата
Rusarch333 написал:
первое минимальное число, но как найти последнее?
А в чём тогда разница между первым и последним? В положении в столбце/строке данных? Тогда причём тут функция Мин? Если из всего набора данных в столбце/строке - тогда последнее минимальное - это максимум :)  
Всё же может чуть-чуть подумать, прежде чем задавать вопрос?
Определить по шкале коэффициент, соответствующий фактическому значению.
 
GRIM, по идее должно быть, если линейно интерполировать 1,062202774.
Цитата
nafanek написал:
абсолютно точно
что на ваш взгляд? Если мой подход к решению, то Мин и Макс - это значения границ интервала, в котором находится искомое по "Значение" и соответствующие этим Мин Макс по "Значение" величины "Коэффициент". То есть используя =ПОИСКПОЗ(C2;A2:A4;1) находите номер в массиве ближайшего меньшего или равного по "Значение", соответственно, верхнее "Значение" будет иметь номер на 1 больше. Осталось по заданным номерам рассчитать расчётное значение Коэффициента :)
На форуме такая задача обсуждалась уже 100500 раз - стоит только поискать.
Изменено: Андрей VG - 22 Июл 2019 12:45:32
Определить по шкале коэффициент, соответствующий фактическому значению.
 
Доброе время суток
Цитата
Максим В. написал:
Объясните как считать.
Линейной интерполяцией. Находим между какими величинами в столбце "Значение" находится искомое, и вычисляем величину Коэффициента
Мин(Коэффициент) + (Искомое - Мин(Значение))*(Макс(Коэффициент) - Мин(Коэффициент)) / (Макс(Значение) - Мин(Значение))
Как-то так.
Учёт рабочего процесса. Программа для учёта времени работы активного приложения
 
Цитата
Alemox написал:
Спасибо за потраченное время
Да не за что. Успехов.
Ещё вариант - в третьем столбце имя exe файла, процесс которого является владельцем активного окна. Может так проще будет составлять отчёт. Если будете сохранять отчёт в c:\path\timeReport.txt, то в файл timeReport.xlsx прописан запрос Power Query, который составляет худо-бедно простой отчёт по времени активного окна каждого exe (опять же, если у вас есть power query). Конечно можно было бы и в проекте это сделать - но было лень, если честно :)
Сопоставить количество видов товара у первого поставщика и у остальных, перекрестный анализ
 
Цитата
Knight777 написал:
во второй раз выдает ошибку с источниками...
Где и что выдаёт? У SQL подхода есть жёсткие требования: файл должен находится по строго занному пути, книга должна называться одним и тем же именем, лист источник данных должен иметь одно и тоже имя, используемое в запросе, имена столбцов должны быть точно такими же, как в запросе.
Если что-то из этого поменяли, идёте в свойства подключения и изменяете строку подключения и собственно SQL запрос.
Как правильно использовать Range.Offset, если используемая ячейка объединена с другой?
 
Коллеги, огромное спасибо за исследования и предложения. Правда, пошёл через абсолютную адресацию - unmerge не приемлемо.
Суть более общей задачи. Есть набор карточек ввода, сформированный как листы, созданные из одного листа-шаблона. Естественно, в этом случае, если взять какую-то ячейку за основу (предположим, что это некоторая ячейка, в которой текст стабильно начинается с определённого текста), то требуемые данные относительно этой ячейки будут всё время находится на одном и том же смещении по строкам/столбцам. Тогда для универсализации выгрузки данных с таких карточек и требуется код, который будет собирать данные с листов некоторой книги, используя вспомогательную таблицу Позиции, в которой описаны такие смещения и номера столбцов нормализованной таблицы вывода. Попробовал два варианта с абсолютной адресацией на листе карточки и загрузкой данных в массив. Но, в качестве ячейки-основы может выступить и ячейка, которая объединена с другой ячейкой. Заранее же это не известно.
По скорости оказалось одинаково. 500 листов ввода обрабатываются почти 2 секунды.
Если кому будет интересно, то тестовый образец источник №1 10.07.19 стволовые.xlsx (просто размножил лист в книге до 500 штук.
Сопоставить количество видов товара у первого поставщика и у остальных, перекрестный анализ
 
Доброе время суток.
Цитата
Knight777 написал:
в экселе есть специальная функция под расчет который мне нужен
Есть такая штука - SQL называется, но тоже самое можно сделать и в Power Query.
Вариант на SQL. Файл сохранить в c:\Path. На листе Вывод ПКМ на синей таблице - Обновить.
Успехов.
Копирование не пустых значений и вставка в другую табицу, Необходимо из 1 таблицы скопировать только не пустые и вставить их в другую таблицы
 
Доброе время суток.
Вариант
Код
Public Sub addNewRowsFromTable()
    Dim whishodniy As Worksheet, whBD As Worksheet, lobjDB As ListObject, lngI As Long
    Dim arrData
    Set whishodniy = Worksheets("Таблица исходная"): Set whBD = Worksheets("Таблица для вставки"): Set lobjDB = whBD.ListObjects("ТаблицаЗначений")
    lngI = whishodniy.Cells(whishodniy.Rows.Count, 1).End(xlUp).Row
    arrData = whishodniy.Range(whishodniy.Cells(2, whishodniy.UsedRange.Column), whishodniy.Cells(lngI, whishodniy.UsedRange.Columns.Count + whishodniy.UsedRange.Column - 1)).Value
    If lobjDB.DataBodyRange Is Nothing Then
        lobjDB.HeaderRowRange(1).Offset(1, 0).Resize(UBound(arrData, 1), UBound(arrData, 2)).Value = arrData
    Else
        lobjDB.DataBodyRange.Cells(lobjDB.DataBodyRange.Rows.Count, 1).Offset(1, 0).Resize(UBound(arrData, 1), UBound(arrData, 2)).Value = arrData
    End If
End Sub

ОБъясните, пожалуйста,
Цитата
только не пустые
зачем это требование? Если вы добавляете данные в таблицу
Цитата
met.constr написал:
добавить их как новые строки ниже в "Умную таблицу"
То если в ячейки этих добавленных строк ничего не будет вставлено, то они будут пустые. Тогда если мы вставим пустые значения при копировании - что изменится в их состоянии?
Как правильно использовать Range.Offset, если используемая ячейка объединена с другой?
 
Цитата
RAN написал:
туды, сюды, обратно.
Видимо, да. Но тогда нет и разницы с абсолютной адресацией.
Спасибо, коллеги. Следующий будет про Find :)
Как правильно использовать Range.Offset, если используемая ячейка объединена с другой?
 
Доброе время суток, коллеги.
Столкнулся в задаче Трансформация форм-карточек в нормализованную построчную ведомость Excel с несколько неожиданным для себя поведением Range.Offset для случая, когда ячейка, относительно которой задаём смещение к нужной ячейке, объединена с другой.
В примере, ячейка А10 для которой вызываем Offset объединена с ячейкой A11.
Если задать смещение -2, 0 (то есть на ячейку А8), то получаем результат -2;0 - как и хотелось.
Но если задать смещение -2, 1 (на ячейку B8), то получаем результат -2;2 - то есть на ячейку С8. Получается, что используется неявно смещение с учётом объединения.
И как в этом случае сослаться на B8? В задаче перешёл к абсолютным ссылкам, но всё же любопытно как в общем случае получать значение по требуемому смещению?
P. S. Про объединённые ячейки - зло, знаю - но стоит ли об этом писать? :)
Дата последнего обновления в ячейке VBA
 
Цитата
Роман написал:
честно я не понимаю даже что там в нем прописано
Тогда зачем вы пишете
Цитата
Роман написал:
Помогите, пожалуйста, подправить код
?
Тогда так и пишите - Пожалуйста, подправьте код, чтобы он делал то и то. В чём помощь, если вы не участник решения?
Дата последнего обновления в ячейке VBA
 
Цитата
Роман написал:
При чем случайное число,
А вы по рассуждайте. Calculate срабатывает на любой пересчёт на листе. Вам же нужно определить был ли пересчёт в конкретной ячейке. Переделаем код. Теперь, если меняется случайное число в А3 - ничего не происходит. Но, вы получаете сообщение, если измените что-то в В3 - что приведёт к пересчёту в А1, которую мы отслеживаем.
Дата последнего обновления в ячейке VBA
 
Доброе время суток.
Вариант
создание word-документов при помощи excel
 
Цитата
RAN написал:
Прикрепление, извлечение файлов из книги Excel
Тёзка, а что так далеко отправили? :D  У нас тоже есть Хранение файлов и файловый менеджер в файле(листе) Excel
Учёт рабочего процесса. Программа для учёта времени работы активного приложения
 
Цитата
bedvit написал:
если вдруг возьмешься за С#
Привет, Виталий.
Скинь на email - посмотрю... Но ничего не обещаю.

По сабжу, в принципе, можно задействовать GetAncestor, чтобы получить указатель окна приложения. По нему и группировать локально диапазоны работы по времени.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 267 След.
Наверх