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

Страницы: 1
PQ - выделение части текста по условию и маске
 
Добрый день, коллеги!
Столкнулся со следующей проблемой: нужно разделить наименования, полученный ранее после Text.Combine и загруженный в таком виде в учетную программу, и перемешанный с обычными наименованиями. Пример в приложенном файле.
Условия разделения такие: для наименований, которые в столбце УИД имеют код типа "ОС2023-ХХХХХ" необходимо удалить окончание наименования, совпадающее с числом ХХХХХ. Для всех остальных наименований ничего не трогать.
К сожалению, не знаю функции обратной Text.Combine, поэтому обращаюсь к Вам.
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Power Query - сгруппировать данные с прочих строк в одну по идентификатору
 
Добрый день!
В процессе работы над автоматизацией подготовки данных, родил запрос. По большей части, его результат меня устраивает, но есть одно но - большое количество ненужных строк, которые надо объединить в одну по идентификатору "КомментарийКСтроке". В приложенном файле на листе "Шаблон" как получается сейчас, а на листе "Правильно" - вручную переделанный файл.
Прошу Вашей помощи в решении этого вопроса  
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
PQ - не работает склейка (&) в добавлении столбца
 
Добрый день!
Прошу помощи: никак не могу разобраться в причинах не работы склейки в новом столбце содержимого других столбцов - в результате работы получается значение NULL. В другой обработке похожая формула нормально работает. В приложенном архиве файл "Сбор БДР 23-25", Обработка "Шаблон общий", шаг "КомментарийКСтроке" (3-й с конца)
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
PQ. Преобразование одинаковых идентификаторов в разные
 
Добрый день!
Есть условная выгрузка выручки с разбивкой по договорам и контрагентам. При этом один и тот же номер договора (максимум 4 знака) может повторяться несколько раз (нумерация не повторяется только внутри года, договора могут быть старыми) по разным контрагентам (в приложенном файле - договор 1050). При этом в выгрузке нет никакой информации, за какой год договор - только номер и контрагент.
Ваша помощь нужна в следующем: с помощью инструментов PQ необходимо как-то проанализировать массив номеров договора, найти повторяющиеся и к первому добавить 0000, к последующим - с каждым разом на один 0 больше. Считать, что совпадение пары Договор-Контрагент невозможно. Если с помощью инструментов PQ это невозможно, буду крутить макрос или делать как раньше - руками.
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
PQ. Удаление задвоений введенных данных
 
Добрый день, коллеги!
Несколько сотрудников забивали вручную данные за прошедшие годы по реализации. Затем с помощью PQ эти данные объединялись как в примере. Как выяснилось, некоторые документы по той или иной причине занесены в таблицы дважды. Предполагается, что задвоенные данные внесены в разные таблицы. Подскажите, пожалуйста, как мне убрать эти задвоения? В прикрепленном примере это контрагент Эдельвейс (залит заливкой). Будут полностью совпадать следующие данные: номер, дата и список позиций. Написание контрагента может различаться. Сохранение именно такой же разбивки критично. Перебрать снова все введенные данные вручную - нереально: вносили почти месяц, объем большой.
UPD. Задвоение данных может быть и внутри одной таблицы. Нюансы те же.  
Изменено: Hypohelix - 20.11.2020 08:29:35
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
PQ. Преобразование переноса строки
 
Добрый день! Столкнулся с необходимостью преобразования ячейки с несколькими абзацами внутри в строковую внутри запроса PQ. На форуме я нашел вариант с макросом (https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=8&TID=16978&am...) , но это не то, что необходимо сейчас. Как я понимаю, по сути вопрос в том, как для PQ в рамках замены обозначить символ переноса строки. Прошу помощи у более знающих людей
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
PQ - ошибка #ЧИСЛО! при выводе значений
 
Добрый день!
В ходе вычислений в запросе PQ получаются бесконечно малые величины и бесконечно большие (из-за деления на ноль). Выглядит это как в приложении.
Естественно вылезает ошибка #ЧИСЛО! при выводе этих значений.
Подскажите, как такие ошибки обработать в PQ и приравнять их к нулю?
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
PQ-запрос. Нужен аналог функции СУММЕСЛИМН
 
Добрый день!
Чувствую, что снова туплю и не вижу очевидного. Есть файл, в котором PQ-запрос обрабатывает данные (упрощенно - в приложенном файле). Для дальнейшей работы мне нужны доли каждого вида, что я вынужден делать через использование СУММЕСЛИМН в результатах запроса. Так как в будущем на эти доли будут ссылаться другие формулы, хотелось бы избавиться от этой функции в пользу модификации запроса PQ для оптимизации скорости работы всего этого монстра Франкенштейна в 500к обрабатываемых строк.
В вариантах группировки варианта доли от группы не нашел.
Прошу помощи. Или поднять мне веки, чтоб я увидел, где это есть.
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
PQ. Объединение строк внутри запроса
 
Добрый день!
Есть проблема с группированием строк - банально не знаю метода.
Как я делал раньше: запрос на начальные данные, вычищаю ненужное (лист Запрос1), затем по этим данным сводная для группировки строк, затем копирование значений сводной, запрос второй с нее - и тогда получаю конечный результат.
Подскажите, как можно получить конечную таблицу внутри запроса PQ без этих плясок со сводной?!
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Добавление расчетного поля отклонений план-факт в сводную таблицу
 
Добрый день, форумчане!
Очень нуждаюсь в Вашей помощи. Есть две таблицы (план и корректировка плана), собираемые с помощью PQ в одну обобщенную таблицу, из которой строится сводная. Абсолютные цифры, естественно, собираются, но нужны и отклонения (чтобы не разлезалось после дальнейших группировок данных и сворачивания-разворачивания этих группировок). Как их сделать средствами Excel 2013 и PQ - не знаю, в чем и прошу помощи.
В приложенном файле как исходные таблицы, так и все запросы PQ, и сводная. Установка Power Pivot невозможна. Да и вообще с установкой стороннего софта все нелегко.
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Преобразование многоуровневого списка в одноуровневый для сводных
 
Добрый день, форумчане!
Есть насущная необходимость преобразовать многоуровневый список в что-то удобоваримое для сравнений и сводных. Основная задача - сохранить все уровни вложенностей. Пока я их вижу так, как в примере. Подскажите, какие инструменты можно использовать для такой работы? Может, есть уже готовое решение? Основной файл - 200к с лишним строк.
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Группировка элементов сводной таблицы, полученной из Power Pivot
 
Добрый день!
Только начинаю знакомиться с возможностями Query и Pivot, поэтому многого могу не знать, за что прошу заранее простить.
Тем не менее, удалось собрать по обучающему видео Николая Павлова про анализ план-факт в Pivot аналогичную таблицу. Теперь мне надо в ней, условно говоря, сгруппировать Яблоки и груши в Фрукты, а Вишню и Клубнику в ягоды, но при попытке ручной группировки вылетает ошибка "Выделенные объекты нельзя объединить в группы". Как мне поступить? Создать еще справочник видов товаров и как-то связать его с моделью данных?! Только как это сделать?!
Пока решением вижу только ввод в каждую таблицу данных столбца "Тип товара", в который через ВПР подтягивать тип с таблицы справочника. Можно ли это сделать элегантнее?
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Сумма каждых n элементов массива
 
Добрый день!
Есть условный массив в 120 элементов. Нужно из него создать новый в 10 элементов с суммами элементов первого с 1 по 12, с 13 по 24 и т.д.
К сожалению, не могу даже понять, как составить алгоритм разбиения первого массива на эти подмассивы для суммирования.
Прошу помощи.
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Поиск номера элемента массива
 
Добрый день, уважаемые коллеги!
К сожалению, не могу сам найти решения для следующей задачи:
Есть двумерный массив  Array (1 to i, 0 to 4), значения в котором не повторяются.
Нужен поиск определенного значения по всему полю массива от 1 до i по столбцу 0 без использования цикла. Результатом должно быть номер первой размерности массива (которая 1 to i).
Циклом это будет так:
Код
For i=1 to ubond(Array,1)
If Array(i,0)=ИскомоеЗначение then
НомерСтроки=i
end if
next i
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Перебор элементов массива массивов
 
Доброго дня, уважаемые коллеги!
В связи с моим плохим знанием матчасти по работе с массивами массивов прошу помощи. Есть двумерный массив ArrSummHProc (1 to 32, 0 to 1) типа Variant. В качестве элементов ArrSummHProc (i, 1) используются отдельные одномерные массивы. Как я понимаю, код по сбору этого массива будет примерно такой (в общих чертах):
Код
Dim ArrSummHProc (1 to 32, 0 to 1), Arr1 (6) as Variant
'заполнение элементов массива Arr1
ArrSummHProc (1, 1) =Arr1
В дальнейшем мне необходимо организовать перебор элементов массива типа Arr1 запросом из массива ArrSummHProc, но я не представляю, как это правильно сделать: использовать временный массив, который приравнивать к нужному элементу массива ArrSummHProc, или правильнее организовать это без временного массива.
Моя просьба заключается в следующем: приведите, пожалуйста, пример кода, который корректно вызовет для перебора циклом For-Next (или любым другим методом, который позволяет сравнить одно значение с элементом массива на наличие этого значения в массиве) массив типа Arr1 из массива ArrSummHProc. Если я неправильно написал пример кода, тоже прошу исправить, так как с массивами массивов еще не работал.
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Использование глобальных массивов для функций
 
Доброго дня, коллеги!
Пытаюсь оптимизировать один свой старый проект. В нем используются несколько самописных функций, в старом варианте которых каждый раз шло обращение к листу с базовыми данными. Для оптимизации решил загнать все эти массивы в блок, инициализирующийся при открытии книги. Код проверил, массив заполняется корректно, но при попытке посчитать функцию почему-то получается пустым, как будто при открытии книги инициализации и заполнения массива не было. В примере одна функция, основной код закомментирован, чтобы функция хоть как-то отрабатывала.
Прошу объяснить, что я делаю не так. Почему при подсчете функции массив пустой, хотя, как я понимаю, должен быть заполнен?  
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Некорректная запись в ячейки данных типа String с помощью метода Cells
 
Доброго дня, коллеги!
У меня возникла проблема в коде, пример которого приведен ниже:
Код
Sub Primer()
    Dim s_CFO As String
    s_CFO = "69."
    Cells(1, 12).Value = s_CFO
End Sub
В ячейку почему-то записывается только "69" без точки, что критично. Почему делается именно так, я не понимаю. Прошу помощи в решении данной проблемы. Крайне желательно это сделать именно через Cells, так как это просто кусок кода, вырванный из цикла для проверки.
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Настройка исключений в цикле For Each
 
Доброго дня!
У меня есть код, привязанный к щелчку ячейки, нарисованной на листе. Данный код берет значение последней строки с определенного листа и проводит замену на другом листе значения "123" на номер этой строки. Использую цикл For Each.
К сожалению, есть две строки, в которых не надо менять (строки 91 и 123). Пожалуйста, помогите переписать нижеследующий код, чтобы эти строки были исключены.
Код
Sub Кнопка5_Щелчок()
    Dim LastRow1 As Long, Arr1() As Variant
    LastRow1 = Worksheets("Data").Cells(Rows.Count, 2).End(xlUp).Row
    Worksheets("9.3").Activate
    Dim cell As Range
    For Each cell In [AD16:CG135]
        cell.Replace What:=123, Replacement:=LastRow1, SearchOrder:=xlByColumns, MatchCase:=True
    Next
End Sub
Заранее благодарен.
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Оптимизация кода высчитывания доли процента от общей суммы на заранее указанные данные
 
Здравствуйте, уважаемые коллеги!
Обращаюсь к Вам с просьбой оптимизировать код функции HProcentom в приложенном файле. К сожалению, моих знаний не хватает для этого.
Функция берет некую сумму, которую надо разбросать ежемесячными долям, пропорционально окладу в этом месяце, по указанным табельным номерам.
Основные комментарии по этапам функции я добавил.
Ориентировочное количество ячеек, которое будет использовать эту функцию - более 200 тысяч, поэтому любой выигрыш в скорости - важен.
Заранее благодарю за помощь.
Изменено: Hypohelix - 26.11.2017 19:04:09
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Сверка двух текстовых ячеек в коде
 
Доброго дня!
При создании пользовательской функции возникла проблема: эта функция сравнивает две ячейки с разных листов книги. При этом ячейки точно одинаковые (скопированы с сохранением формата). Но моя функция выдает ошибку #ЗНАЧ!, что характерно для случаев, когда ячейки не могут быть сравнены, например, из-за различий в формате. Добавил дополнительное преобразование в строковые величины (а строки должны сравниваться именно как строки) - ситуация не изменилась.
Прошу вас, помогите разобраться, в чем ошибка и как правильно написать код. Заранее благодарен за помощь. А если кто-то еще объяснит, почему именно так работает логика ВБА - буду благодарен вдвойне. Привожу собственно код ниже и файл примера.
Код
Public Function HProcentom(Tabnumber As String, Oklad As Currency, TypeDoplat As Long) As Currency
    Dim LastRow1 As Long, Arr1() As Variant, Summa As Currency, n As Long ', Arr2() As Variant
    
    Summa = Worksheets("DataAdd").Cells(2, TypeDoplat).Value 'Определяем сумму для разбивки
    
    LastRow1 = Worksheets("DataAdd").Cells(Rows.Count, TypeDoplat).End(xlUp).Row
    ReDim Arr1(0 To LastRow1 - 6)
    
    n = 5
    Do While n <= LastRow1 - 6
        Arr1(n - 5) = Str(Worksheets("AddTable").Cells(n + 1, TypeDoplat).Value) 'составляем массив табельных, на которые разбиваем
        n = n + 1
    Loop
    
    Dim i As Long, TN As String, Flag As Long, Arr2(0 To 11) As Currency
    TN = Str(Tabnumber)
    Flag = 0
    For i = 0 To UBound(Arr1) 'ищем совпадение табельного на входе с массивом разбивки
        If TN = Arr1(i) Then
            Flag = i
            i = UBound(Arr1)
            
        End If
    Next i
    
    ReDim Arr3(0 To LastRow1 - 6, 0 To 12)
    
    For n = 4 To LastRow1
        For i = 0 To 12
            If i = 0 Then
                Arr3(n - 4, i) = Worksheets("Data").Cells((n - 4) * 11 + n, 2).Value
            Else
                Arr3(n - 4, i) = Worksheets("Data").Cells(n, 14).Value
            End If
        Next i
    Next n
    
    Dim k As Long, SummaOkladov As Currency
    If Flag = 0 Then
        HerachProcentom = 0
    Else
        For n = 0 To UBound(Arr1)
            For i = 0 To UBound(Arr3, 1)
                If Arr1(n) = Arr3(i, 0) Then
                    For k = 1 To 12
                        SummaOkladov = SummaOkladov + Arr3(i, k)
                    Next k
                End If
            Next i
        Next n
    End If
    
    HProcentom = Summa / SummaOkladov * Oklad
    
End Function
Общая логика функции: из листа DataAdd берется сумма по виду доплаты , которую надо раскидать пропорционально окладу, рассчитанному на листе Data, и перечень табельных номеров, для которых используется эта доплата. При этом сумма должна раскидываться на все табельные, которые указаны по данной доплате.  
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
VBA. Как собрать строку, в которой есть служебные символы
 
Доброго дня, уважаемые форумчане!
Для  создания макроса, копирующего диапазон ячеек и вставляющего его во все ячейки ниже до последней строки, мне требуется сложить строковую величину, содержащую символ двоеточия, являющийся служебным. Указание его в кавычках, через функцию Chr вызывает ошибку Expected:End of Statement. Прошу помочь с правильным вариантом кода. Код исполняется по кнопке, файл примера приложен. Ошибка в коде:
Код
        g = "AG" & kk
        g1 = "BY" & kk
        g = g&Chr(58)&g1
        Range(g).Select
        ActiveSheet.Paste

Заранее благодарю за помощь.
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Проверка произвольно именнованных TextBox на форме
 
Здравствуйте!
В ходе работы над формой у меня получилось "рваная" нумерация текстбоксов (например, 1, 3, 4, 5, 8, 12). Подскажите, пожалуйста, как мне проверить все эти текстбоксы на значения и приравнять незаполненные к нулю. Пример в файле
К сожалению, собственных знаний хватает на посчитать количество текстбоксов.
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Не работает цикл For-next
 
Доброго дня!
У меня проблема - почему-то отказывается работать цикл For-next в приложенном файле. На мой взгляд, все оформлено правильно. Укажите, пожалуйста, на ошибку. А если еще и объясните конкретно в чем она была и как ее избежать - будет просто великолепно. Заранее благодарен
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Не работает макрос по заполнению массива данными с листа
 
Доброго дня!
Для заполнения массива данных по дифференцированному списку и дальнейшей работе с этим создал обработку. Почему-то не заполняется массив. Не могу понять, где ошибка в коде. Заранее благодарен!
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Компактное написание условия проверки дифференцированной ставки
 
Доброго дня! У меня есть код для проверки дифференцированной ставки. Код рабочий, но хочется узнать, можно ли его написать компактнее.
Код
If StazProzent > 0 Then
                If StazProzent > 0 And StazProzent < 5 Then
                    StazProzent = 3
                Else
                    If StazProzent > 4 And StazProzent < 10 Then
                    StazProzent = 6
                    Else
                        If StazProzent > 9 And StazProzent < 15 Then
                        StazProzent = 12
                        Else
                            If StazProzent > 14 And StazProzent < 20 Then
                            StazProzent = 18
                            Else
                                If StazProzent > 19 And StazProzent < 25 Then
                                StazProzent = 23
                                Else
                                    If StazProzent > 24 Then
                                        StazProzent = 33
                                    Else
                                        StazProzent = 0
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
        End If
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
ComboBox. Как перевести текстовые значения в цифры
 
Доброго дня!
На данный момент у меня есть на форме несколько комбобоксов, в которых указаны месяца от января до декабря. Для перевода их в цифры, которые нужны дальше в коде, использую не самую красивую конструкцию. Нельзя ли как-то упростить эту структуру?
Код
If ComboBox5.Value = ComboBox5.List(0) Then
            MonthNumb = 1
            
        Else
            If ComboBox5.Value = ComboBox5.List(1) Then
            MonthNumb = 2
            
            Else
                If ComboBox5.Value = ComboBox5.List(2) Then
                MonthNumb = 3
                
                Else
                    If ComboBox5.Value = ComboBox5.List(3) Then
                    MonthNumb = 4
                    
                    Else
                        If ComboBox5.Value = ComboBox5.List(4) Then
                        MonthNumb = 5
                        
                        Else
                            If ComboBox5.Value = ComboBox5.List(5) Then
                            MonthNumb = 6
                            
                            Else
                                If ComboBox5.Value = ComboBox5.List(6) Then
                                MonthNumb = 7
                                
                                Else
                                    If ComboBox5.Value = ComboBox5.List(7) Then
                                    MonthNumb = 8
                                    
                                    Else
                                        If ComboBox5.Value = ComboBox5.List(8) Then
                                        MonthNumb = 9
                                        
                                        Else
                                            If ComboBox5.Value = ComboBox5.List(9) Then
                                            MonthNumb = 10
                                            
                                            Else
                                                If ComboBox5.Value = ComboBox5.List(10) Then
                                                MonthNumb = 11
                                                
                                                Else
                                                    MonthNumb = 12
                                                    
                                                End If
                                            End If
                                        End If
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
    End If
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Изменяемый диапазон RowSource для Combobox
 
Доброго времени суток!
Я сейчас занимаюсь одним весьма занимательным для меня проектом и столкнулся с проблемой, которую не могу решить.
На созданной форме есть ComboBox1, который берет данные с листа Algo начиная с ячейки A3 по A10. При этом в ходе работы формы будут создаваться новые записи в этом столбце, которые также надо добавлять в диапазон RowSource при инициализации формы. К сожалению, моих знаний не хватает для решения этой задачи. В случае необходимости могу прикрепить файл с уже имеющимся кодом.
Очень надеюсь на помощь.
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Страницы: 1
Наверх