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

Страницы: 1
Сравнение диапазона столбцов, Хочу финансово поучавствовать в расширении Плекса :)
 

Продублирую проблему из другого топика.  Вроде как абосютно тривиальный вопрос, но поиск не помог. Есть  дубликаты разбросанные по нескольким столбцам. Необходимо проверить  столбец 1 на дубли из 2и3.

Это только пример задачи. Таких  столбцов может быть 4-7 (а иногда до 40 и более) строк в столбцах  по-разному - 10к...1млн. Сводить их в один не вариант по причине размера.  5-40 раз прогонять ПЛЕКСОМ тоже муторно и часто ошибки: из-за рутины  допускаешь пропуски и повторы. Этим приходится заниматься ежедневно.  Плекс работает только по 2 столбцам, а если их больше, то игнорирует.

Самой близкой была реализация Sceptic.  т.е. указываешь столбец для проверки и диапазон столбцов с которыми  сравниваешь. Только в предложенном варианте необходимо точно указывать  конец списка, поскольку если кликнуть (как в плексе) весь столбец, то он  и отмечает весь столбец до конца цветом. К сожалению на таких больших  выборках любой из предложенных вариантов работает крайне медленно.

Меня интересует модификация самой надстройки плекс. Не являюсь филантропом, но если будет полезно еще кому-то, почему и нет.

В плексе уже есть даже похожая реализация в наборе Уникальные. Но  там удаляются повторы по строкам диапазона, а как напр сделать проверку  по столбцам?

Минимум: сравнение одного столбца с дианазоном столбцов.

Оптимально: сравнение одного диапазона столбцов с другим диапазоном столбцов.

Понятно ли я описал задачу? Сколько это будет стоить?

Сравнение диапазона столбцов, Хочу финансово поучавствовать в расширении Плекса :)
 
Никто не заинтересован? В самом плексе уже есть даже похожая реализация в наборе Уникальные. Но там удаляются повторы по строкам диапазона, а как напр сделать проверку по столбцам?
Выделение дубликатов из несколькоих столбцов
 
PooHkrd, Спасибо большое за вашу реализацию. Никогда риньше не пользовался этим интересным инструментом. Она действительно работает очень быстро (на моем лаптопе) списки в пару миллионов проверила не более чем за пару минут.  Единственное так это некоторое неудобство самого PQ, а так это супер вещь.

Проблему по вашему совету описал с предложениях. Может кто отзовется.
Совместимость PLEX и Excel 64 разрядный, Совместимость PLEX и Excel 64 разрядный
 
У меня работает. В свое время задолбался задавать вопросы на этом на этом форуме по совместмости с 64. Как-то раньше было неудачно описано что надстрйка не работает с 64 и долгое время сидел на 32. Потом с криком отчаяния попробовал на свой страх запустить в 64 и оказывается что все работает. И вот уже несколбько лет раотаем в 64 и все ок.
Сравнение диапазона столбцов, Хочу финансово поучавствовать в расширении Плекса :)
 

Продублирую проблему из другого топика. Вроде как абосютно тривиальный вопрос, но поиск не помог. Есть дубликаты разбросанные по нескольким столбцам. Необходимо проверить столбец 1 на дубли из 2и3.

Это только пример задачи. Таких столбцов может быть 4-7 (а иногда до 40 и более) строк в столбцах по-разному 10к -1млн. Сводить их в один не вариант по причине размера. 5-40 раз прогонять ПЛЕКСОМ тоже муторно и часто ошибки: из-за рутины допускаешь пропуски и повторы. Этим приходится заниматься ежедневно. Плекс работает только по 2 столбцам, а если их больше, то игнорирует.

Самой близкой была реализация Sceptic. т.е. указываешь столбец для проверки и диапазон столбцов с которыми сравниваешь. Только в предложенном варианте необходимо точно указывать конец списка, поскольку если кликнуть (как в плексе) весь столбец, то он и отмечает весь столбец до конца цветом. К сожалению на таких больших выборках любой предложенные варианты работают крайне медленно.

Меня интересует модификация самой надстройки плекс.Не являюсь филантропом, но если будет полезно еще кому-то, почему и нет.

Минимум: сравнение одного столбца с любым дианазоном других столбцов.

Оптимально: сравнение диапазона столбцов с другим диапазоном столбцов.

Понятно ли я описал задачу? Сколько это будет стоить?

Изменено: Lobster - 26.08.2019 17:36:52
Жестокая опция в сравнении диапазонов, Если неудачно поставишь курсор, лишишься данных.
 

Реализацию сравнения списков в плесе нахожу самой удачной - работает быстро и никогда не подводила. НО есть большите грабли - там поумолчанию результат не окрашивается, а выводится отдельным списком. Если эту опцию забыть убрать, а курсор оставить в неподходящем месте (напр в столбце с данными), то содержимое столбца замениться (читай удалиться) без возможности отмены. Если бы окрасилось по ошибке, то это не проблема, а вот удаление это жестоко. Если бы автор переключил эту опцию по умолчанию было бы замечательно.

Изменено: Lobster - 26.08.2019 16:55:25
Выделение дубликатов из несколькоих столбцов
 

Спасибо большое за участие. Какие лаконичные решения вы предлагаете, красотища.

К сожалению на таких больших выборках любой предложенный вариант работает крайне медленно - меряется как минимум десятками минут, не дождался просто прервал. На малых списках все отлично. Не знаю как это сделано в плексе, но там проверка двух списков по миллиону записей это дело секунд.

В любом случае, Sceptic, Hellmaster, спасибо за такие варианты. Они очень хорошо  пополнят мои знания.

Может кто может модифицировать плекс? Судя по декларациям, автор вроде как не против. Я даже готов поучавствовать финансово (в пределах моих возможностей).

Изменено: Lobster - 26.08.2019 16:25:34
Выделение дубликатов из несколькоих столбцов
 
Подгрузил файл пример того что мне надо. Если у кого есть мысли как организовать такую проверку очень прошу помочь.
Выделение дубликатов из несколькоих столбцов
 
Вроде как абосютно тривиальный вопрос. Поиск не помог.
Есть дубликаты разбросанные по нескольким столбцам. Необходимо проверить столбец 1 на дубли из 2и3.
Это только пример задачи. Таких столбцов может быть 4-7 (а иногда до 40 и более) строк в столбцах по-разному 10к -1млн. Сводить их в один не вариант по причине размера. 5-40 раз прогонять ПЛЕКСОМ тоже муторно и часто ошибки: пропуски и повторы. Этим приходится заниматься ежедневно. Макрос пробовал писать, но работает крайне медленно. Плекс работает только по 2 столбцам, а если их больше, то игнорирует. Подскажите плс куда рыть.
CPU для больших массивов данных в Excel., Компьютер для простых больших таблиц ecxel’a
 
XL тем вызодно отличается от всего вокруг, что он прост, логичен, предсказуем, понятен каждому и визуально адекватен. Это основные причины его популярности. Я работаю в Access но это не то... Комфорт использования любого другого инструмента ниже уровня который дает ексель.
Спасибо за столь развернутый ответ. Посмотрим что это за зверь и как его можно прикрутить, может и правда я его не дооценивал.
Когда ждать версии на 64 бита?
 
Действительно, работает на моих задачах и работает лучше чем на 32 битах :). На больших массивах раньше вылетало, а теперь как часы. Все ПО лицензионное.
Зачем народ пугать такими описаниями. Я привык читать и верить тому что пишет разработчик. Помягче сделайте описание и что имеенно не будет работать и думаю продажи увеличатся  ;).
Изменено: Lobster - 16.12.2016 18:40:12
CPU для больших массивов данных в Excel., Компьютер для простых больших таблиц ecxel’a
 
Добрый день!
Друзья у меня к Вам вопрос на который я так и не могу найти внятного ответа. Какой выбрать компьютер для простых но больших таблиц в excel? Может ктолибо поможет мне разобраться в вопросе железа для комфортной работы в в Экселе.
Я сортирую, копирую, фильтрую, сравниваю диапазоны и выполняю тому подобные операции на массивах ок 4-8 млн ячеек. В ячейке обычно 1-2 слова. Это плоские однотабличные БД.
На ноутбуке стоит W7, i7-3720QM, 16 GB RAM, SSD. Второй комп. i7 5820k, 16 GB, raid0 2xSSD. И работа с таким количеством данных выглядит весьма вяло. Но главное что процессоры зачастую загружены на 10-20%, бывает на некоторых операциях больше, но это редко. Это значит что для моих задач эти мощности просто деньги на ветер.
Формулы, если используются, только простые и для фрагмента макс. 500 тыс. ячеек.
Кокой проц загрузится моими задачами в экселе на 100% и можно будет выполнять операции не 5-7 мин, а 1 мин?
Другое ПО не предлагать. Excel критичен т.к. это только промежуточное звено в обработке, но все завязано на нем.
(это я тоже читал http://www.passmark.com/forum/showthread.php?3623-What-is-best-processor-for-complex-excel-workbook)
Бюджет до 2k$
Изменено: Lobster - 16.12.2016 18:43:45
Когда ждать версии на 64 бита?
 
Мдя...
Цитата
На каких версиях Microsoft Excel надстройка (не)будет работать?  
Надстройка полностью работоспособна в русском или английском Excel  2007, 2010, 2013, 2016 в обычном Microsoft Office или Office365 по  подписке.  Надстройка не будет работать: в версиях Office 97-2003, в  любых 64-битных версиях Office, в Office для Mac, Google Docs,  OpenOffice, LibreOffice.
Изменено: Lobster - 18.10.2016 17:28:14
Когда ждать версии на 64 бита?
 
В общем вопрос разработчику. Когда ожидать версии на 64 бита? А то данных  все больше и больше и работать на 2 компьютера не удобно.
Несколько столбцов в один, собрать по списку столбцы разной длины в один на новом листе
 
Цитата
Мотя: 1. Столбов на листе "1" может быть любое количество?
сейчас от 7 до 25

Цитата
2. Список столбов для сборки лучше указать списками в ячейках столбов А и В на листе "1"
это не сущессвенно. Я думаю что такое задание проще и понятнее. Тем более что данный вопрос уже реализован. :)
Несколько столбцов в один, собрать по списку столбцы разной длины в один на новом листе
 
Конечно же цветовое оформление меня не волнует. Оно там для наглядности. Еще для упрощения с первом примере не приводил названия колонок, хотя оно там должно быть. Т.е. первая строка должна быть зарезервирована для названий столбцов. Тут я уже добавил.
Несколько столбцов в один, собрать по списку столбцы разной длины в один на новом листе
 
Я просмотрел все темы сборки нескольких столбцов в один. Но все они мне не подходят.
Может кто подскажет есть ли где готовое решение.
Что требуется:
Есть столбцы на листе 1. Длина столбцов  разная. Мне нужно собрать в один столбец все из списка А1 и в другой из списка B1. Результирующие столбцы нужно собрать на листе 2 сотв. в A и B. Поскольку списки могут быть большие нужна проверка на длину результирущих и если она прешышает 1048576 начать новые две колонки напр. в С и D.

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


Сама задача в приложении

Код здесь,
Я честно старался во всем разобраться сам, но знаний не хватает.
Код
Sub kolonkiwodnu()
    
       Dim txt$, txt1$, txt2$
' ===========Colomn yellow===========================
    txt$ = Worksheets("1").Range("A1").Value
 
    
    arr = ParseColumnsStringEx(txt)
 
For i = LBound(arr) To UBound(arr): Debug.Print arr(i) & ",";: Next i: Debug.Print
    columnsListE$ = Join(arr)
    Worksheets(1).Cells(2, 3) = columnsListE$
'zapolnenie stolbca A
    Application.ScreenUpdating = False
    With Worksheets(1)
  
    For i = LBound(arr) To UBound(arr)
        ActiveColomn = CInt(arr(i)) 'prieobrazowanie I w integer potomu czto budet osibka w .Cells()
        LastRow = .Cells(Rows.Count, ActiveColomn).End(xlUp).Row
            For ActiveRaw = 2 To LastRow
                If .Cells(ActiveRaw, ActiveColomn) <> "" Then Worksheets(2).Cells(Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1, 1) = .Cells(ActiveRaw, ActiveColomn)
            Next
    Next
   ' .Range("A:A").RemoveDuplicates Columns:=1
    End With
    Application.ScreenUpdating = True
        
' ===========Colomn green===========================
    txt$ = Worksheets("1").Range("B1").Value
    arr2 = ParseColumnsStringEx(txt)
    
    For i = LBound(arr2) To UBound(arr2): Debug.Print arr(i) & ",";: Next i: Debug.Print
     columnsListD$ = Join(arr2)
     Worksheets(1).Cells(3, 3) = columnsListD$
        Application.ScreenUpdating = False
    'zapolnenie stolbca B
    Application.ScreenUpdating = False
    With Worksheets(1)
    
    For i = LBound(arr2) To UBound(arr2)
        ActiveColomn = CInt(arr2(i)) 'prieobrazowanie I w integer potomu cto budet osibka w .Cells()
        LastRow = .Cells(Rows.Count, ActiveColomn).End(xlUp).Row
            For ActiveRaw = 2 To LastRow
                If .Cells(ActiveRaw, ActiveColomn) <> "" Then Worksheets(2).Cells(Worksheets(2).Cells(Rows.Count, 2).End(xlUp).Row + 1, 2) = .Cells(ActiveRaw, ActiveColomn)
            Next
    Next
   ' .Range("A:A").RemoveDuplicates Columns:=1
    End With
    Application.ScreenUpdating = True

   
 End Sub
Function ParseColumnsStringEx(ByVal txt$, Optional ByRef norm1$, Optional ByRef norm2$) As Variant
    On Error Resume Next
    Const enARR$ = "ABCEHKMOPTX", ruARR$ = "???????????"
    Const cc& = 256
    For i = 1 To Len(enARR$): txt = Replace(txt, Mid(ruARR$, i, 1), Mid(enARR$, i, 1)): Next i
    txt = Replace(txt, " ", ""): txt = Replace(txt, ";", ",")
    txt = Replace(txt, ":", "-"): txt = Replace(txt, ".", ","): txt = UCase(txt)
    For i = 1 To Len(txt)
        If Not Mid(txt, i, 1) Like "[A-Z0-9,-]" Then Mid(txt, i, 1) = ","
    Next i
    While InStr(1, txt, ",,"): txt = Replace(txt, ",,", ","): Wend
    While InStr(1, txt, "--"): txt = Replace(txt, "--", "-"): Wend
    txt = Replace(txt, ",-", ","): txt = Replace(txt, "-,", ",")
    If Left(txt, 1) = "-" Or Left(txt, 1) = "," Then txt = Mid(txt, 2)
    If Right(txt, 1) = "-" Or Right(txt, 1) = "," Then txt = Left(txt, Len(txt) - 1)
    norm1$ = Replace(txt$, ",", ";")
    arr = Split(txt$, ","): Dim n As Long: ReDim tmpArr(0 To 0)
    For i = LBound(arr) To UBound(arr)
        spl = Split(arr(i), "-")
        For j = LBound(spl) To UBound(spl)
            cn& = 0: cn& = ColumnNameToColumnNumber(spl(j)): If cn& Then spl(j) = cn&
            If Not spl(j) Like String(Len(spl(j)), "#") Then spl(j) = ""
        Next j
        If Val(spl(0)) > cc& Then spl(0) = "": spl(UBound(spl)) = ""
        If Val(spl(UBound(spl))) > cc& Then spl(UBound(spl)) = cc&
        If UBound(spl) > 1 Then arr(i) = spl(0) & "-" & spl(UBound(spl)) Else arr(i) = Join(spl, "-")
        If UBound(spl) = 1 Then If spl(0) = spl(1) Then arr(i) = spl(0)
        If UBound(spl) = 1 Then If spl(0) = "" Then arr(i) = spl(1)
    Next i
    norm2$ = Join(arr, ","): norm2$ = Replace(norm2$, ",-", ","): norm2$ = Replace(norm2$, "-,", ",")
    While InStr(1, norm2$, ",,"): norm2$ = Replace(norm2$, ",,", ","): Wend
    If Left(norm2$, 1) = "," Then norm2$ = Mid(norm2$, 2)
    If Right(norm2$, 1) = "," Then norm2$ = Left(norm2$, Len(norm2$) - 1)
 
    For i = LBound(arr) To UBound(arr)
        Select Case True
            Case arr(i) = "", Val(arr(i)) < 0
            Case IsNumeric(arr(i))
                tmpArr(UBound(tmpArr)) = arr(i): ReDim Preserve tmpArr(0 To UBound(tmpArr) + 1)
            Case arr(i) Like "*#-#*"
                spl = Split(arr(i), "-")
                If UBound(spl) = 1 Then
                    If IsNumeric(spl(0)) And IsNumeric(spl(1)) Then
                        If spl(0) <= cc& Then
                            If spl(1) > cc& Then spl(1) = cc&
                            For j = Val(spl(0)) To Val(spl(1)) Step IIf(Val(spl(0)) > Val(spl(1)), -1, 1)
                                tmpArr(UBound(tmpArr)) = j: ReDim Preserve tmpArr(0 To UBound(tmpArr) + 1)
                            Next j
                        End If
                    End If
                End If
        End Select
    Next i
    If UBound(tmpArr) Then
        ReDim Preserve tmpArr(0 To UBound(tmpArr) - 1)
        ParseColumnsStringEx = tmpArr
    End If
End Function
 
Function ColumnNameToColumnNumber(ByVal txt$) As Long
    On Error Resume Next
    ColumnNameToColumnNumber = Split(Application.ConvertFormula(txt$ & "1", xlA1, xlR1C1, True), "C")(1)
End Function
Аналог PLEXA для MS office 64 Bit - сравнение диапазонов
 
Цитата
Игорь написал:
это всё и Excel умеет, - условное форматирование, и кнопка для удаления дубликатов на вкладке ДАННЫЕ
зачем тут какая-то надстройка?
да и сложно подсказать готовое решение, если необходимый вам функционал не ясен из описания (сравнение - не подразумевает каких-либо действий после, а остальное и Excel умеет)
В плексе это сделано более логично, удобно и понятно + уже привык. Только поэтому. Конечно я все могу сам пилить макросами и встроенными функциями, но ведь времени жалко. По этой причине ищется его аналог или будем ждать 64 битной версии.
Но в одном Вы правы конечно. Все что мне надо в данной теме есть в самом экселе. Просто привык уже так что встроенные фишки совсем пещерными кажутся. Придется привыкать к встроенным. Спасибо за подсказку что они там есть, а то уже и забыл чуток. :)
Цитата
хм... а лет 20-30 назад, на 16-битных системах и 1 МБ ОЗУ, десятки миллионов операций с легкостью производились)

Да что вы говорите! :), это наверно Вы сравнили Пень с 286.

1) Я не имею ввиду того что он не делает, а то что должен делать БЫСТРО.
2) Пока я не сменил 32 бита на 64 эксель без конца завешивался. Перепробовано было все... и чистые разные ОСы и памяти и процессоры.
=============
Изменено: Lobster - 07.10.2016 16:57:46
Удаление строк с повторяющемися значениями (по нескольким столбцам)
 
20 секунд... сделать еще один столбец и в нем конкатенацию всех анализируемых ячеек строки. удалять по повторам в том столбце.
Аналог PLEXA для MS office 64 Bit - сравнение диапазонов
 
Требуется в основном сравнивать огромные текстовые диапазоны - 1...10 млн ячеек, выделять или удалять дубликаты. Какой есть аналог plexa или другая надстройка в которой это таекже грамотно реализовано как и в PLEX'e. Office 64bit критичен - в 32 битах не хватает памяти.
КАК ОПЛАТИТЬ за надстройку, Друзья, помогите связаться с автором или посоветуйте как это сделать
 
У меня нет таких приятелей, иначе я не сталбы здесь мусорить своими сообщениями.
Если кто-то будет связываться в ближайшем времени с таинственным Павловым, спросите при случае, не сможет ли он сам мне помочь :).
КАК ОПЛАТИТЬ за надстройку, Друзья, помогите связаться с автором или посоветуйте как это сделать
 
Я признаюсь что не совсем понял ответ. Откуда я узнаю того кто перечислен у Павлова и у кого есть WesternUnion или PayPal?
КАК ОПЛАТИТЬ за надстройку, Друзья, помогите связаться с автором или посоветуйте как это сделать
 
Спасибо. Вы могли бы мне помочь в этом вопросе?
КАК ОПЛАТИТЬ за надстройку, Друзья, помогите связаться с автором или посоветуйте как это сделать
 
Вскоре закончится количество бесплатных запусков екселя.
Я проживаю вне досягаемости платежных систем перечисленных автором для оплаты за надстройку.
Могу перевести деньги через WesternUnion или PayPal.
Несколько раз пробовал явязаться с автором чтобы решить с ним этот вопрос... но в ответ тишина.
Помогите плс.
Страницы: 1
Наверх