Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выбор уникальных значений из колонки по множеству условий - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Выбор уникальных значений из колонки по множеству условий
braellin Дата: Суббота, 17.09.2022, 18:53 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Прошу помочь с написанием формулы для следующей задачи:
Есть таблица с данными по поставщикам, ответственным, наименованию товара, его количеству и статусу. Для каждой позиции товара я хочу в отдельную колонку вытащить всех поставщиков таким образом, чтобы они были перечислены через запятую по следующему условию: статус товара должен быть либо Ждет Оплаты, либо Принято.

Моя попытка реализовать данную задачу выглядела так:

[vba]
Код
TEXTJOIN(" , ",TRUE, (if(AND(OR('Запросы'!$F$2:$F$363 = "Ждет 0платы",'Запросы'!$F$2:$F$363 = "Принято"),'Запросы'!$D$2:$D$363=A2),'Запросы'!$B$2:$B$363,"")))
[/vba]

где В - колонка поставщики, F - статус, D - название позиции.
Однако функция возвращает пустую строку, а в чем дело - понять мне не хватает знаний. Буду признательнна за подсказку! Пример таблицы также прикладываю
К сообщению приложен файл: 9200568.xlsx (6.9 Kb)
 
Ответить
СообщениеПрошу помочь с написанием формулы для следующей задачи:
Есть таблица с данными по поставщикам, ответственным, наименованию товара, его количеству и статусу. Для каждой позиции товара я хочу в отдельную колонку вытащить всех поставщиков таким образом, чтобы они были перечислены через запятую по следующему условию: статус товара должен быть либо Ждет Оплаты, либо Принято.

Моя попытка реализовать данную задачу выглядела так:

[vba]
Код
TEXTJOIN(" , ",TRUE, (if(AND(OR('Запросы'!$F$2:$F$363 = "Ждет 0платы",'Запросы'!$F$2:$F$363 = "Принято"),'Запросы'!$D$2:$D$363=A2),'Запросы'!$B$2:$B$363,"")))
[/vba]

где В - колонка поставщики, F - статус, D - название позиции.
Однако функция возвращает пустую строку, а в чем дело - понять мне не хватает знаний. Буду признательнна за подсказку! Пример таблицы также прикладываю

Автор - braellin
Дата добавления - 17.09.2022 в 18:53
прохожий2019 Дата: Суббота, 17.09.2022, 23:54 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1298
Репутация: 327 ±
Замечаний: 0% ±

365 Beta Channel
Однако функция возвращает пустую строку
ну если нету подгузников с таким статусом - функция же не виновата )))
Код
=ЕСЛИОШИБКА(ОБЪЕДИНИТЬ(",";1;ФИЛЬТР(Запросы!$A$2:$A$16;(Запросы!$C$2:$C$16=A2)*((Запросы!$E$2:$E$16="Принято")+(Запросы!$E$2:$E$16="Ждет оплаты"))));"")
К сообщению приложен файл: 0226098.xlsx (10.7 Kb)
 
Ответить
Сообщение
Однако функция возвращает пустую строку
ну если нету подгузников с таким статусом - функция же не виновата )))
Код
=ЕСЛИОШИБКА(ОБЪЕДИНИТЬ(",";1;ФИЛЬТР(Запросы!$A$2:$A$16;(Запросы!$C$2:$C$16=A2)*((Запросы!$E$2:$E$16="Принято")+(Запросы!$E$2:$E$16="Ждет оплаты"))));"")

Автор - прохожий2019
Дата добавления - 17.09.2022 в 23:54
Gustav Дата: Воскресенье, 18.09.2022, 00:24 | Сообщение № 3
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Попробуйте условие для функции IF, составленное с использованием функций AND и OR:
[vba]
Код
AND(OR('Запросы'!$F$2:$F$363 = "Ждет оплаты",'Запросы'!$F$2:$F$363 = "Принято"),'Запросы'!$D$2:$D$363=A2)
[/vba]
переписать, заменив функцию AND простым умножением, а функцию OR - простым сложением:
[vba]
Код
(('Запросы'!$F$2:$F$363="Ждет оплаты")+('Запросы'!$F$2:$F$363="Принято"))*('Запросы'!$D$2:$D$363=A2)
[/vba]

Т.е. для ячейки Сводка!B2 ваша исходная формула:
[vba]
Код
=TEXTJOIN(" , ", TRUE, IF(AND(OR('Запросы'!$F$2:$F$363 = "Ждет оплаты",'Запросы'!$F$2:$F$363 = "Принято"),'Запросы'!$D$2:$D$363=A2),'Запросы'!$B$2:$B$363,""))
[/vba]
должна стать вот такой:
[vba]
Код
=TEXTJOIN(" , ", TRUE, IF((('Запросы'!$F$2:$F$363="Ждет оплаты")+('Запросы'!$F$2:$F$363="Принято"))*('Запросы'!$D$2:$D$363=A2),'Запросы'!$B$2:$B$363,""))
[/vba]

После ввода в ячейку Сводка!B2 протяните (скопируйте) формулу в ячейки ниже. Если финт сразу не сработает (т.е. значения не появятся нигде), то попробуйте ввести формулу в Сводка!B2 как формулу массива, т.е. нажав одновременно Ctrl+Shift+Enter (после чего также протяните в ячейки ниже).

Я не мог проверить свои предположения в Excel, так как в моей версии еще нет функции TEXTJOIN. Но я проверил их в таблицах Гугл и там у меня получилось с такой формулой массива (обращаю внимание, что у меня разделитель элементов формулы - точка с запятой, а не запятая!):
[vba]
Код
=ArrayFormula(TEXTJOIN(" , ";TRUE; IF((('Запросы'!$F$2:$F$363="Ждет оплаты")+('Запросы'!$F$2:$F$363="Принято"))*('Запросы'!$D$2:$D$363=A2);'Запросы'!$B$2:$B$363;"")))
[/vba]Я ее ввёл в ячейку Сводка!B2 и скопировал ниже в ячейки B3:B6, после чего диапазон Сводка!A1:B6 приобрел следующий вид:
[vba]
Код
Товар        Поставщики
Подгузники
Погремушка    АТЛАНТЕКС
Бутылочка    
Пеленки    
Беговел        АТЛАНТЕКС , КРИСТОБАЛЬ , АНТЕЙМ
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеПопробуйте условие для функции IF, составленное с использованием функций AND и OR:
[vba]
Код
AND(OR('Запросы'!$F$2:$F$363 = "Ждет оплаты",'Запросы'!$F$2:$F$363 = "Принято"),'Запросы'!$D$2:$D$363=A2)
[/vba]
переписать, заменив функцию AND простым умножением, а функцию OR - простым сложением:
[vba]
Код
(('Запросы'!$F$2:$F$363="Ждет оплаты")+('Запросы'!$F$2:$F$363="Принято"))*('Запросы'!$D$2:$D$363=A2)
[/vba]

Т.е. для ячейки Сводка!B2 ваша исходная формула:
[vba]
Код
=TEXTJOIN(" , ", TRUE, IF(AND(OR('Запросы'!$F$2:$F$363 = "Ждет оплаты",'Запросы'!$F$2:$F$363 = "Принято"),'Запросы'!$D$2:$D$363=A2),'Запросы'!$B$2:$B$363,""))
[/vba]
должна стать вот такой:
[vba]
Код
=TEXTJOIN(" , ", TRUE, IF((('Запросы'!$F$2:$F$363="Ждет оплаты")+('Запросы'!$F$2:$F$363="Принято"))*('Запросы'!$D$2:$D$363=A2),'Запросы'!$B$2:$B$363,""))
[/vba]

После ввода в ячейку Сводка!B2 протяните (скопируйте) формулу в ячейки ниже. Если финт сразу не сработает (т.е. значения не появятся нигде), то попробуйте ввести формулу в Сводка!B2 как формулу массива, т.е. нажав одновременно Ctrl+Shift+Enter (после чего также протяните в ячейки ниже).

Я не мог проверить свои предположения в Excel, так как в моей версии еще нет функции TEXTJOIN. Но я проверил их в таблицах Гугл и там у меня получилось с такой формулой массива (обращаю внимание, что у меня разделитель элементов формулы - точка с запятой, а не запятая!):
[vba]
Код
=ArrayFormula(TEXTJOIN(" , ";TRUE; IF((('Запросы'!$F$2:$F$363="Ждет оплаты")+('Запросы'!$F$2:$F$363="Принято"))*('Запросы'!$D$2:$D$363=A2);'Запросы'!$B$2:$B$363;"")))
[/vba]Я ее ввёл в ячейку Сводка!B2 и скопировал ниже в ячейки B3:B6, после чего диапазон Сводка!A1:B6 приобрел следующий вид:
[vba]
Код
Товар        Поставщики
Подгузники
Погремушка    АТЛАНТЕКС
Бутылочка    
Пеленки    
Беговел        АТЛАНТЕКС , КРИСТОБАЛЬ , АНТЕЙМ
[/vba]

Автор - Gustav
Дата добавления - 18.09.2022 в 00:24
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!