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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 389 След.
C API Excel for VBA, Используем в VBA - C API функционал Excel
 
Добрый вечер, коллеги.
Цитата
bedvit написал:
Всего ячеек - 170 000
Найдено отдельно стоящих ячеек -127 450
Виталий, пожалуйста, поясните - как можно в диапазоне из 170000 ячеек сделать не смежных 12740 каких-то ячеек, определяемых по значениям? У меня лучше чем половина не выходит :(
Опять же не совсем, видимо, понимаю суть задачи. Сделал пример для 8 столбцов и 21250 строк (170000 ячеек). На шахматке сбор диапазонов для раскрашивания на моём ноуте 0,09 секунды в коллекцию. Ну, пусть ваш компьютер в два раза медленнее. 0,18. То есть выигрыш всего около порядка, что является обычным отношением в скорости между С++ и VBA, а не двух порядков.
Поиск дубликатов в Excel
 
Доброе время суток.
Цитата
Петр Harutyunyan написал:
Задача срочная
Не похоже, иначе бы соблюли
Цитата
2.3. Приложите файл(ы) с примером (общим весом не более 300Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.
POWER PIVOT. Обновление данных по расписанию
 
Аристарх Петров, я тестировал выполнение vbs-скрипта для подключения к базе данных MS SQL Server с пользователем базы данных и выполнял загрузку через Power Query (другими способами для внешних данных по отношению к книге не пользуюсь). Описываемых вами проблем не было.
POWER PIVOT. Обновление данных по расписанию
 
Доброе время суток.
В простейшем виде создаёте текстовый файл с расширением vbs с таким кодом (не забудьте прописать путь и имя своего файла для обновления модели Power Pivot).
Код
Option Explicit
RefreshPowerPivotModel
Public Sub RefreshPowerPivotModel()
    Const bookPath = "C:\Temp\powerPivotBook.xlsx"
    Dim xlApp, pBook
    Set xlApp = CreateObject("Excel.Application")
    xlApp.ScreenUpdating = False
    xlApp.Visible = True 'Можно удалить, если есть гарантия, что не будет проблем
    Set pBook = xlApp.Workbooks.Open(bookPath)
    pBook.Model.Refresh
    pBook.Close True
    xlApp.ScreenUpdating = True
    xlApp.Quit
End Sub
И в планировщике настраиваете его запуск.
PQ. Фильтрация списка без преобразования в таблицу., Есть список, необходимо отфильтровать названия полей, которые содержат слово "Date".
 
Доброе время суток.
ivanka, всё же может уже почитать спецификацию языка?
Код
    СписокПолейФильтр = List.Select(
                            СписокПолей,
                            (t) => Text.Contains(t, "Date")
                        )
Как поменять названия столбцов в PQ на названия соседних столбцов?
 
Доброе время суток
Владимир Колотиев, исходите из принципа - лучше выглядеть загадочным, чем пример результата делать?
Михаил Л, предположу, что ТС хотел нечто вроде...
Пользовательская иконка кнопки вызова макроса на ленте Excel 2016
 
Доброе время суток.МатросНаЗебре, может имело смысл в том числе для этих целей порекомендовать воспользоваться Ribbon XML Editor?
POWER PIVOT. Сводная таблица из нескольких запросов
 
Цитата
Аристарх Петров написал:
Но всё равно, скорость извлечения небольшая, порядка 20 тыс записей в секунду.
Объём записи таблицы можете оценить? Минимизируйте его, разбивая на справочники с целочисленными ключами и текстовыми значениями и таблицу фактов с целочисленными внешними ключами и собственно данными. В общем создавайте звезду вместо одной таблицы. Что ещё можно порекомендовать, не зная ничего о входе?
А по поводу сети, вас вполне могут и лимитировать по пропускаемой полосе - вы же не единственный пользователь сервера :)
Изменено: Андрей VG - 19 апр 2021 17:53:58
POWER PIVOT. Сводная таблица из нескольких запросов
 
Доброе время суток
Цитата
Vladimir Chebykin написал:
что запрос выгружает 1 млн. за 3 мин. или полчаса 30 млн. строк
Степан, это смотря что тащится из базы данных :)
Типовая сетка 1Гбит или предельная пропускная способность 119 мегабайт в секунду. А теперь представим, что у ТС 10 столбцов по 32 символа в каждом (UTF-16 - следовательно уже 64 байта). Итого запись где-то с числовыми данными 700 байт (мы же не знаем, что конкретно и в каких условиях тянет ТС). Тогда максимальная скорость загрузки 178 тысяч строк в секунду. Если их 30 миллионов, да выходим на ваши полторы минуты.

Но, а если сетка загружена или 100Мбитная?
Как не перебирать все условия, а выйти после первой ИСТИНЫ
 
Цитата
Jack Famous написал:
и получить массив максимально "укрупнённых" диапазонов)
Ну, так в принципе и делает по ходу выполнения. Для индекса формата миллионов получается в первое выполнение такая строка адреса, к которому применяется пользовательский формат миллионов
B2:B5,B7:B8,B10:B11,B14:B16,B20:B22,B25:B26,B28:B29,B31:B38,B40,B42,B45:B47,B49:B50,B54:B58,B60:B63,B67:B72,B76,B79:B81,B86,B89,B91:B93,B96:B97,B100,B103,B106:B110,B112,B114,B117:B118,B120,B122,B124:B125,B128:B130,B132,B134:B135,B137:B139,B142,B144:B149
Всего получается 11540 обращений на установку формата для 539999 случайных целых чисел от -2 миллиардов до 2 миллиардов.
Нужен аналог функции СчетЕсли в Power Query
 
buchlotnik, Михаил, может лучше будет, если ТС всё же соизволит ознакомиться с правилами и их соблюдёт? Или ему придётся ждать того, кто мыслит ровно в том же ключе и к тому же хорошо знает Power Query :)
Нахождение полной стоимости по количеству и цене отдельных операций
 
Доброе время суток.
Попробую свои телепатические способности. В AM4 формула
Код
=СУММ(D4:AH4)
:qstn:
Узнать дату первого и последнего обращения и построить сводную
 
Цитата
buchlotnik написал:
закономерно - это не дата
А зачем вообще использовать это поле, если вопрос прямо поставлен только про дату?
Вариант
Цитата
Богдан Звирко написал:
как отобразить для каждого телефона первую и последнюю дату?
Как не перебирать все условия, а выйти после первой ИСТИНЫ
 
Цитата
sokol92 написал:
Замечательно!
Ну, не совсем. Чуть ещё можно выиграть, до 14 секунд сократить. Уж больно слабо подходящий набор случайных чисел для слияния диапазонов получился.
Тут уже ваш подход с сортировкой форматированием и восстановлением результата даст заметный выигрыш. Запуск по отсортированным данным (без сохранения и восстановления результата) 4 секунды.
Скрытый текст
Power Qwery.Сортировка столбиков таблицы по отдельности
 
Доброе время суток
Цитата
Borrusale написал:
отсортировать столбики таблицы по убыванию
А почему в примере результата столбец "Рессора" этому не соответствует? Опять стиль - и так сойдёт? :)
Код
let
    transformMethod = (x as list) as list => List.Sort(List.RemoveNulls(x)),
    Source = Excel.CurrentWorkbook(){[Name="УнифицированныеДанные"]}[Content],
    columnNames = Table.ColumnNames(Source),
    columns = Table.ToColumns(Source),
    removeNulls = List.Transform(columns, transformMethod),
    result = Table.FromColumns(removeNulls, columnNames)
in
    result
Накопительное И для фильтра в power query
 
Цитата
Dmitry M написал:
в результат фильтра должны попасть корзинки, которые соответствуют составляющим
Как не перебирать все условия, а выйти после первой ИСТИНЫ
 
Цитата
sokol92 написал:
отличный стенд для  Алексея
Привет, Владимир.
Ну, в таком случае можно попаразитировать на подходе Алексея. Сократив выполнение #25 с 67 секунд до 18.
Скрытый текст
Накопительное И для фильтра в power query
 
Доброе время суток.
Вариант.
P. S. можете детализировать, что означает
Цитата
Dmitry M написал:
по накопительному И
В чём смысл использования выделенного слова?
Создание реестра папок с содержимым фалов и с гиперссылкой на папки и файлы.
 
Цитата
Алексей Панов написал:
А в целом, не мешало бы, как на Али экспресс
Вы уверены, что к форуму стоит подходить ровно также, как к торговой площадке? Всё для клиента, всё для потребителя. Не мало уже коллег прекратило отвечать на форуме именно из-за такого потребительского отношения ТСов.
Ну, и опять же, если вы хотите какого-то расширения форумного движка, то предложите Павлову некоторые средства для такой реализации :)
Как не перебирать все условия, а выйти после первой ИСТИНЫ
 
Цитата
Сергей Евдокимов написал:
Ни на какую истину не претендую
Ну и напрасно - это шаманский подход, а не инженерный :)
Вариант чуть пошустрее
Код
Public Sub FormatNumbers()
    Dim pFuncs As WorksheetFunction, vSign As Long
    Dim vData, i As Long, t As Single, vValue As Double
    Dim formats(0 To 3) As String, sFormat As String
    t = Timer
    formats(0) = "0"
    formats(1) = "0,К"
    formats(2) = "0,,М"
    formats(3) = "0,,,В"
    
    vData = Range("B2:B540000").Value
    Set pFuncs = Application.WorksheetFunction
    For i = 1 To UBound(vData)
        vValue = Abs(vData(i, 1))
        If vValue < 1 Then
            vSign = 0
        Else
            vSign = CLng(pFuncs.RoundDown(pFuncs.Log10(vValue), 0)) \ 3
        End If
        Cells(i + 1, 2).NumberFormat = formats(vSign)
    Next
    Debug.Print Timer - t
End Sub
Как не перебирать все условия, а выйти после первой ИСТИНЫ
 
Цитата
Сергей Евдокимов написал:
Уделали...
И не стремился, стар уже для этого. Просто настаиваю, чтобы если уж высказывается некоторое утверждение, то необходимо быть готовым его доказать или хотя бы обосновать.
Цитата
Сергей Евдокимов написал:
Макрос с "Case" - 5 минут 09 секундМакрос с "ElseIf" - 5 минут 14 секунд.
На данном примере - вы разницу между Case и множественным If не почувствуете - тут основное время съедает постоянное обращение к ячейкам, поэтому расхождение в 5 секунд - это в пределах погрешности. Ну, или нужно выполнить хотя бы 5-7 запусков, набрать статистику, реально показывающую, что в основной массе запусков If или Case проигрывает, не забыв оценить меру достоверности такой гипотезы.
Как не перебирать все условия, а выйти после первой ИСТИНЫ
 
Цитата
Сергей Евдокимов написал:
я, вроде, более-менее знаю работу циклов/условий.
Не льстите себе. Достаточно было бы прочитать, что прийти ElseIf конструкции
Код
Sub Макрос2()
 
    For Each Ячейка In Range("B1:B10")
        If Ячейка.Cells.Value < -1000000000 Then
            Ячейка.Cells.NumberFormat = "0,,,В"
        ElseIf Ячейка.Cells.Value < -1000000 Then
            Ячейка.Cells.NumberFormat = "0,,М"
        ElseIf Ячейка.Cells.Value < -1000 Then
            Ячейка.Cells.NumberFormat = "0,К"
        ElseIf Ячейка.Cells.Value > 1000000000 Then
            Ячейка.Cells.NumberFormat = "0,,,В"
        ElseIf Ячейка.Cells.Value > 1000000 Then
            Ячейка.Cells.NumberFormat = "0,,М"
        ElseIf Ячейка.Cells.Value > 1000 Then Я
            чейка.Cells.NumberFormat = "0,К"
        ElseIf Ячейка.Cells.Value < 0 Then
            Ячейка.Cells.NumberFormat = "0"
        End If
    Next
End Sub

Исходя из того, что в For VBA нет оператора Continue For, в отличие от For VB.Net. Всегда полезно начать со справочника, а не тратить кучу времени на ожидание.
Как не перебирать все условия, а выйти после первой ИСТИНЫ
 
Цитата
Сергей Евдокимов написал:
и что после ?  
А зачем? Просто, не сочтите за труд - почитайте, разберите пример.
Как импортировать из pdf в excel таблицу, которая имеет несколько картинок в своем составе?
 
Доброе время суток.
А что мешает прогнать pdf через Word и потом оттуда забрать в Excel? Да и в Excel каков смысл это держать?
Формула нарастающего итога на языке M
 
Доброе время суток
Цитата
Grantorino написал:
Возможно кто-то знает вариант с помощью DAX- формул?
Можно и в Power Query и вычисляемый столбец в модели, используя DAX. Только, пожалуйста, объясните, что вы будете делать с этим порно - смесь текста и чисел? Таблицы модели данных предполагают строгую типизацию данных в столбцах.
Power Query запрос из интернета с раскрытием List
 
Доброе время суток.
Ещё вариант
Код
let
    Source = Json.Document(Web.Contents("https://www.binance.com/fapi/v1/depth?symbol=BTCUSDT&limit=1000")),
    toTable = Table.FromRecords({Source}),
    merge = Table.CombineColumns(toTable, {"bids", "asks"}, (x) => Table.FromRows(List.Transform(List.Zip(x), List.Combine), {"bids.1", "bids.2", "asks.1", "asks.2"}), "temp"),
    result = Table.ExpandTableColumn(merge, "temp", {"bids.1", "bids.2", "asks.1", "asks.2"})
in
    result
Угол наклона линейного тренда. Как вычислить формулой ?, Входные данные: например, выручка по годам.
 
Доброе время суток
Цитата
Сергей Евдокимов написал:
функция "НАКЛОН" даст нам среднегодовой прирост в абсолютных значениях
Да, при условии доказанной линейной зависимости.
Цитата
Сергей Евдокимов написал:
средневзвешенный
Что в данном случае является весом? На мой взгляд, лучше нормализовать выручку/прибыль, если вы хотите сопоставлять разномасштабные данные.
Updated.
Хотя не, нормализация тут не поможет, пусть есть две модели роста строго y = k1 * x + c1, y = k2 * x + c2, тогда после нормализации они будут иметь равный k :)  Вообще не мешало бы чётче выполнить постановку задачи, а не как сейчас
Цитата
Угол наклона линейного тренда. Как вычислить формулой ?,
Ответ на неё уже дан Михаилом :)
Изменено: Андрей VG - 14 апр 2021 09:15:57
Вставка кода в Лист VBA при помощи макроса
 
Доброе время суток
Цитата
GorAnt написал:
Возможно ли такое реализовать?
Да, вполне. Начните изучение отсюда Objects (Visual Basic Add-In Model)
Расчет расстояния между регионами
 
Цитата
Re_ написал:
Прошу выслать на почту
Вам настолько лень было перед публикацией вопроса заглянуть в профиль Demetros
Цитата

Demetros
Пользователь
Сообщений: 42
Баллов: 0
Регистрация: 25 янв 2017
Последний визит: 15 июн 2017 21:11:00
:qstn:  8-0
Макрос сортировки и удаления дубликатов
 
Доброе время суток.
Если решение на Power Query сойдёт за макрос, то как-то где-то так
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 389 След.
Наверх