×
×
+ Ответить в теме
Показано с 1 по 12 из 12
  1. #1
    Клерк
    Регистрация
    26.06.2016
    Сообщений
    6

    Excel: выявить уникальные артикулы

    Добрый день, есть задача - выявить уникальные артикулы в таблице (диапазон - столбцы от С до G). Попыталась сделать условным форматированием, но в отдельный столбец приходится вносить их вручную. Какие еще есть варианты? Желательно без макроса, формулой. Заранее спасибо.
    Поделиться с друзьями

  2. #2
    Клерк Аватар для Старый ворчун
    Регистрация
    27.03.2002
    Сообщений
    12,462
    ... поскольку вышеизложенное в свете вышеуказанного влечет нижеследующее по отношению к поименованному...

  3. #3
    Клерк
    Регистрация
    26.06.2016
    Сообщений
    6
    Уже пробовала, почему то не все повторы удаляются.

  4. #4
    Клерк
    Регистрация
    17.12.2010
    Сообщений
    169
    пробовала, почему то не все повторы удаляются.
    Возможно, это разные данные. Например, 4<>"4" или "а"<>"а "

    Нужно показывать в файле-примере Ваши данные.
    Непонятно: уникальные каждого столбца отдельно или уникальные диапазона?
    Артикулы числовые или текстовые?

    Для самого сложного случая (уникальные диапазона столбцов, данные смешаны) решение в файле.
    Вряд ли оно Вам понравится )
    Формулы массива. Водятся тремя клавишами - Ctrl+Shift+Enter
    Сложны в вычислениях и при большом количестве таких формул возможны тормоза при пересчете формул.
    Такое лучше решать с помощью доп.вычислений или макросов, функций пользователя (UDF)

    Будет Ваш пример, попробуем упростить формулу.
    Вложения Вложения
    Последний раз редактировалось vikttur; 26.06.2016 в 22:47.

  5. #5
    Клерк
    Регистрация
    26.06.2016
    Сообщений
    6
    Добрый день, спасибо за ответ. Файл во вложении. Числовые артикулы, вроде бы одинаковые. Нужны те, которые больше не повторяются.Файл.xls

  6. #6
    Клерк
    Регистрация
    17.12.2010
    Сообщений
    169
    Еще больше запущено
    Уникальные нужны в каждом блоке данных (между желтыми строками) или уникальные во всем диапазоне?

    Еще раз: лучше написать макрос или функцию пользователя (тот же макрос, но вызов ее записывается как формула в ячейке).

  7. #7
    Клерк
    Регистрация
    26.06.2016
    Сообщений
    6
    Во всем диапазоне, но я уже поняла, что кроме как макросом, больше никак не решить проблему. Спасибо за участие.

  8. #8
    Клерк Аватар для Старый ворчун
    Регистрация
    27.03.2002
    Сообщений
    12,462
    Цитата Сообщение от Cherrybird Посмотреть сообщение
    Во всем диапазоне, но я уже поняла, что кроме как макросом, больше никак не решить проблему. Спасибо за участие.
    Excel 2007, условное форматирование: Файл2.xls
    ... поскольку вышеизложенное в свете вышеуказанного влечет нижеследующее по отношению к поименованному...

  9. #9
    Клерк
    Регистрация
    17.12.2010
    Сообщений
    169
    Цитата Сообщение от Старый ворчун Посмотреть сообщение
    Excel 2007, условное форматирование: Файл2.xls
    как я понял, автор использовала УФ, но нужно вытянуть в отдельный диапазон:
    Попыталась сделать условным форматированием, но в отдельный столбец приходится вносить их вручную.
    я уже поняла, что кроме как макросом, больше никак не решить
    Я об этом не писал. Можно и формулами, но такое решение слишком громоздкое для этой задачи.
    А макрос - чего его бояться? Делов-то - нажать кнопульку )

  10. #10
    Клерк
    Регистрация
    26.06.2016
    Сообщений
    6
    Да, действительно, уф уже использовала и все получилось ) буду изучать макросы, как оказалось, пользительная вещь )

  11. #11
    Клерк
    Регистрация
    17.12.2010
    Сообщений
    169
    Вот такой небольшой макрос выберет уникальные записи:
    Код:
    Sub UuniqueArticles()
    Dim ArrData(), ArrRes()
    Dim lRws As Long
    Dim i As Long, j As Long, k As Long
        Application.ScreenUpdating = False ' отключаем обновление экрана (чтобы не "моргал")
        
        With ActiveSheet
            lRws = .UsedRange.Row + .UsedRange.Rows.Count - 1 ' последняя строка с данными
            ArrData = .Range("A4:G" & lRws).Value ' данные листа в массив
            ' задаем размерность массива выгрузки по максимуму
            ReDim ArrRes(1 To lRws * 5, 1 To 1)
            
            For j = 3 To 7 ' по нужным "столбцам" массива
                For i = 1 To UBound(ArrData) ' по "строкам" массива
                    If ArrData(i, j) <> Empty Then ' данные есть
                        ' если в первом столбце число, то найденный код пишем в массив выгрузки
                        ' добавляем знак для преобразования чисел в текст
                        If Val(ArrData(i, 1)) Then k = k + 1: ArrRes(k, 1) = ArrData(i, j) & "_"
                    End If
                Next i
            Next j
        
            If k > 0 Then
                .Range("I2").Resize(k, 1).Value = ArrRes ' выгружаем все коды на лист
                lRws = .Cells(.Rows.Count, 9).End(xlUp).Row ' последняя строка с кодами
                ' удаляем дубли кодов
                .Range("I1:I" & lRws).RemoveDuplicates Columns:=1, Header:=xlYes
            End If
        End With
        
        Application.ScreenUpdating = True ' включаем обновление экрана
    End Sub
    Живет он в общем модуле проекта книги. Зайти на разведку в редактор VBA -Alt+F11.
    Вложения Вложения
    Последний раз редактировалось vikttur; 01.07.2016 в 02:08. Причина: замена вложения

  12. #12
    Клерк
    Регистрация
    26.06.2016
    Сообщений
    6
    Большое спасибо за помощь!

+ Ответить в теме

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы можете создавать новые темы
  • Вы можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •