У меня есть два местоположения (комнаты) и несколько идентификаторов, которые находятся во многих отношениях; каждый идентификатор может встречаться один или несколько раз в одной или обеих комнатах. Вот небольшой пример:
ID: Location
1 Room_1
2 Room_2
3 Room_1
3 Room_2
4 Room_1
4 Room_1
Я хотел бы разделить идентификаторы на две группы в зависимости от местоположения. Если идентификатор появляется только в Room_1, я хочу, чтобы он входил в группу 1. Если идентификатор появляется только в Room_2, я хочу, чтобы он входил в группу 2. Если идентификатор появляется в более чем одном экземпляре (строке), например 3 и 4 выше, я хочу сгруппировать его в группу 2, если какой-либо из идентификаторов относится к комнате 2. Если имеется несколько экземпляров, но все они находятся в комнате 1, то идентификатор может остаться в группе 1.
Поэтому в этом примере я бы хотел, чтобы идентификаторы 1 и 4 были в первой группе, а идентификаторы 2 и 3 - во второй.
Идеальным решением было бы разделить их на отдельные листы, но любое разделение было бы хорошо.
Вот большая выборка данных:
ID: Расположение 1 комната_1 2 Комната_2 3 Room_1 3 Комната_2 4 Room_1 4 Room_1 5 Комната_2 6 Room_1 7 Комната_2 7 Комната_2
После группировки это должно выглядеть так:
Группа 1: ID: Расположение 1 комната_1 4 Room_1 4 Room_1 6 Room_1 Группа 2: ID: Расположение 2 Комната_2 3 Room_1 3 Комната_2 5 Комната_2 7 Комната_2 7 Комната_2
Возможно, более простой способ выразить это:
- Каждый идентификатор, который появляется только в Room_1, входит в группу 1.
Каждый идентификатор, который появляется в Room_2 (вообще), входит в группу 2.
Кроме того, я хочу сохранить каждую отдельную строку из ввода, даже те, которые идентичны.
Ответы:
Я думаю, что для решения, которое вы хотели, нужно 4 шага:
ШАГ 1 :
ШАГ 2 :
=IFNA(IF(AND(LOOKUP(A2,Table!$J$3:$AZ$3)=A2,LOOKUP(A2,Table!$J$4:$AZ$4)=A2),"Room_2",Table!B2),Table!B2)
ЭТАП 3 :
ШАГ 4 :
GIF изображение . Нажмите, чтобы увеличить и просмотреть каждый слой.
источник
Я надеюсь, что вы действительно точно описали свою проблему, и вы не собираетесь говорить что-то вроде: «О, по моим реальным данным, у меня больше двух комнат».
Я предполагаю, что у вас есть «ID» в столбце
A
и «Location» в столбцеB
, а все остальное доступно для производных значений. (Если это не так, просто выдвиньте это в первый неиспользуемый столбец.) Предполагая, что у вас есть заголовки («ID» и «Location») в строке 1,C2
вставьте=A2 & B2
D2
вставьте=ISERROR(MATCH(A2 & "Room_2", C$2:C$11, 0))
Replace
11
с номером последней строки, в которой у вас есть данные.C2
иD2
, и перетащите / заполните вниз до последней строки, где у вас есть данные.&
является оператором конкатенации строк в Excel Вы также можете сказатьCONCATENATE(A2, B2)
, ноA2 & B2
, очевидно, гораздо более кратким. Это дает значение , как1Room_1
,2Room_2
,3Room_1
,3Room_2
, ... и т.д., в колонкеC
. ФункцияMATCH(A2 & "Room_2", C$2:C$11, 0)
(в столбцеD
) ищет в столбцеC
идентификатор вхождения из этой строки, соединенной со строкойRoom_2
. Другими словами, есть ли строка, где этот идентификатор находится в комнате 2? Если он есть,MATCH
возвращает номер индекса иISERROR
возвращает FALSE. В противном случаеMATCH
возвращает ошибку иISERROR
возвращает TRUE.Таким образом, столбец
D
содержит значение ИСТИНА для каждого идентификатора, который появляется только в комнате 1, и значение ЛОЖЬ для любого идентификатора, который появляется (хотя бы один раз) в комнате 2:Затем
D
выполните сортировку по столбцу в порядке убывания от наибольшего к наименьшему (по убыванию), чтобы строки ИСТИНА располагались перед строками ЛОЖЬ:источник