Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2019, 10:28   #1
dianakitty
Пользователь
 
Регистрация: 30.04.2019
Сообщений: 11
По умолчанию Список уникальных значений в Excel с учетом дополнительного условия

Добрый день!
Прошу оказать помощь в доработке следующей формулы:
формула массива
{=ИНДЕКС(Список3;ПОИСКПОЗ(СУММ(СЧЁТ ЕСЛИ(C4:C$52;Список3));СЧЁТЕСЛИ(Спи сок3;"<"&Список3);0))}
позволяет вывести список уникальных значений из массива столбца В в столбец С. Необходимо ввести в формулу дополнительное условие, в соответствии с которым в выборку уникальных значений будут попадать только те, напротив которых (в соответствующей строке) в столбце А нет значений (т.е. пусто). На этом этапе у меня ничего не получается.

Пример прилагаю. Для удобства непустые ячейки в столбце А и значения в столбце В (и в итоговом списке столбца С), которые НЕ ДОЛЖНЫ попасть в выборку, залиты желтым маркером.
Заранее благодарю за помощь!
Вложения
Тип файла: xlsx Пример для форума.xlsx (13.9 Кб, 12 просмотров)
dianakitty вне форума Ответить с цитированием
Старый 06.05.2019, 11:48   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

вопрос не моей компетенции (я такую формулу даже понять не могу, не то, чтобы написать или модифицировать), но хочу Вам сообщить, что у меня ваш файл пример выдаёт ошибку при открытии.
по всей видимости, Вы удалили часть строк и столбцов сверху и слева,
поэтому формулы больше не действуют.


p.s. я понимаю, что формулы это очень круто, но, честно говоря,
если бы у меня стояла подобная задача, то я бы её решал макросом.
не потому, что это лучше или эффективнее, для меня это было бы проще.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.05.2019, 14:56   #3
dianakitty
Пользователь
 
Регистрация: 30.04.2019
Сообщений: 11
По умолчанию

Добрый день
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
вопрос не моей компетенции (я такую формулу даже понять не могу, не то, чтобы написать или модифицировать), но хочу Вам сообщить, что у меня ваш файл пример выдаёт ошибку при открытии.
по всей видимости, Вы удалили часть строк и столбцов сверху и слева,
поэтому формулы больше не действуют.


p.s. я понимаю, что формулы это очень круто, но, честно говоря,
если бы у меня стояла подобная задача, то я бы её решал макросом.
не потому, что это лучше или эффективнее, для меня это было бы проще.
Добрый день! Спасибо за быстрый отклик, нашла решение сама (другая формула), прилагаю пример. Возникли другие сложности: не могу отсортировать уникальные наименования по алфавиту. Насчет макроса: к сожалению, не умею их писать, видимо, придется учиться)))
Вложения
Тип файла: xlsx Пример для форума.xlsx (13.5 Кб, 17 просмотров)
dianakitty вне форума Ответить с цитированием
Старый 06.05.2019, 15:47   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

просто в качестве варианта посмотрите пример с макросом:
Пример_макрос.xlsm.zip

p.s. макрос вызывается по кнопке.
Код:
Public Sub ReFillUnique()
    Dim j As Long, cell As Range
    Dim key As Variant, dict As Variant
    Set dict = CreateObject("Scripting.Dictionary")
    j = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row
'    For Each cell In ActiveSheet.Range("Список3")
    Application.ScreenUpdating = False
    For Each cell In ActiveSheet.Range("B5:B" & j)
        If Not IsEmpty(cell.Value) And (Trim(cell.Value) <> "") And (Trim(cell.Offset(0, -1).Value) = "") Then
            If Not dict.Exists(cell.Value) Then
                dict.Add cell.Value, ""
            End If
        End If
    Next
    
    j = ActiveSheet.Cells(Rows.Count, "C").End(xlUp).Row
    If j > 4 Then ActiveSheet.Range("C5:C" & j).Clear
    
    With dict
      ActiveSheet.Cells(5, "C").Resize(.Count) = Application.Transpose(.Keys)
    End With
    Set dict = Nothing
    
    j = ActiveSheet.Cells(Rows.Count, "C").End(xlUp).Row
    ActiveSheet.Range("C5:C" & j).Sort key1:=Range("C5:C" & j), _
        order1:=xlAscending, Header:=xlNo

    Application.ScreenUpdating = True
End Sub
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.05.2019, 10:34   #5
dianakitty
Пользователь
 
Регистрация: 30.04.2019
Сообщений: 11
По умолчанию

Добрый день
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
вопрос не моей компетенции (я такую формулу даже понять не могу, не то, чтобы написать или модифицировать), но хочу Вам сообщить, что у меня ваш файл пример выдаёт ошибку при открытии.
по всей видимости, Вы удалили часть строк и столбцов сверху и слева,
поэтому формулы больше не действуют.


p.s. я понимаю, что формулы это очень круто, но, честно говоря,
если бы у меня стояла подобная задача, то я бы её решал макросом.
не потому, что это лучше или эффективнее, для меня это было бы проще.
Добрый день! Спасибо за быстрый отклик, нашла решение сама (другая формула), прилагаю пример. Возникли другие сложности: не могу отсортировать уникальные наименования по алфавиту. Насчет макроса: к сожалению, не умею их писать, видимо, придется учиться)))
dianakitty вне форума Ответить с цитированием
Старый 07.05.2019, 10:37   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от dianakitty Посмотреть сообщение
Насчет макроса: к сожалению, не умею их писать, видимо, придется учиться)))
в сообщении выше я выложил ваш пример. Там внутри кнопка (и макрос).
Попробуйте.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.05.2019, 10:42   #7
dianakitty
Пользователь
 
Регистрация: 30.04.2019
Сообщений: 11
По умолчанию

Serge_Bliznykov, добрый день, и огромное спасибо!

Работает супер-круто, я в восторге!

Файл пишу для ОЧЕНЬ неопытных пользователей Excel и компа вообще (для понимания: на данный момент такие формы заполняются РУКОПИСНО, т.е. совсем ручкой и ручками), поэтому лишние кнопки в файле вызовут страх и ужос))).

Этот лист (в примере только его часть) будет заполняться данными совсем в автомате при заполнении другого листа, более того, лист, где будет использоваться этот список, намертво запаролен. Обновлять просто некому будет))) Вот и маюсь с формулами.

А макросы надо учиться писать, Вы абсолютно правы. И еще раз - огромная благодарность!
dianakitty вне форума Ответить с цитированием
Старый 07.05.2019, 10:46   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

не за что.

Успехов в поиске нужных формул.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.05.2019, 11:42   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

используя информацию из статьи https://www.planetaexcel.ru/techniques/2/80/

получил сортированный список в дополнительном столбце.
посмотрите, может Вас такой вариант устроит.
Вложения
Тип файла: zip Пример для форума2mod.zip (13.9 Кб, 12 просмотров)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.05.2019, 14:31   #10
dianakitty
Пользователь
 
Регистрация: 30.04.2019
Сообщений: 11
По умолчанию

Огромное спасибо! Попробую внедрить при очередном релизе файла. Вы мне очень-очень помогли.
dianakitty вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
sql выбор уникальных значений world12_tk Помощь студентам 3 28.09.2013 19:52
Как создать список значений в Excel 2007? Stem79 Microsoft Office Excel 8 29.01.2013 21:54
Access 2007 Объединение одного столбца с несколькими, в зависимости от дополнительного условия Икар Microsoft Office Access 2 09.12.2012 03:15
Список уникальных значений PARTOS Microsoft Office Excel 13 18.12.2009 11:14
Выборка уникальных значений Mary_star SQL, базы данных 9 11.02.2008 22:46