У меня есть два столбца данных, A и B. Я хотел бы объединить эти столбцы так, чтобы в окончательный список попали только уникальные значения. В данный момент я использую формулу массива изhttps://www.get-digital-help.com/2009/06/16/извлечение-уникального-списка-из-двух-столбцов-с помощью-формулы-массива-excel-2007/:
{=IFERROR(IFERROR(INDEX($A$2:$A$20, MATCH(0, COUNTIF($C$1:C1, $A$2:$A$20), 0)), INDEX($B$2:$B$7, MATCH(0, COUNTIF($C$1:C1, $B$2:$B$7), 0))), "")}
Хотя это работает замечательно, я бы хотел избегать формул массива, если это вообще возможно, так как они значительно замедляют наши и без того паршивые ПК. Мы также не можем использовать VBA по ряду причин, так что это тоже не вариант.
Есть какой-либо способ сделать это?
решение1
Ну, я нашел способ сделать это, который, кажется, работает на данный момент, но он, черт возьми, некрасивый.
В столбце A содержится набор данных, скажем, 200 общих значений.
Столбец B содержит второй набор данных, скажем, 175 значений.
Столбец C проверяет, присутствует ли значение из столбца B в столбце A.
=IF(COUNTIF($A$2:$A$750,B2)>0,"Match","No Match")
В столбце E есть счетчик, который просто отслеживает, где мы находимся относительно конца набора данных в столбце A.
=IF(A2=0,MAX($E$1:E1)+1,"")
В столбце F есть счетчик, который увеличивается каждый раз, когда столбец C указывает уникальное значение.
=IF(C2="No Match",MAX($F$1:F1)+1,"")
Столбец G — это место, где объединяются два набора данных. Сначала он перечисляет значения в A. Как только он достигает конца списка и начинает находить нули, он использует индекс, созданный в столбце E, чтобы найти первое уникальное значение в B, и увеличивает его, пока не достигнет конечного значения.
=IF(A2=0,IF(E2>MAX(F:F),"",INDEX(B:B,MATCH(E2,F:F))),A2)
решение2
Есть хорошее обсуждение того, как извлекать уникальные и отличительные значения наэтот сайт с учебными пособиями по Excel.
И ответ на ваш вопрос — да, это просто подразумевает использование дополнительного INDEX() для каждой части. Вот модификация:
=IFERROR(INDEX($A$2:$A$20,MATCH(0,INDEX(COUNTIF($C$1:C1,$A$2:$A$20),0),0)),INDEX($B$2:$B$7,MATCH(0,INDEX(COUNTIF($C$1:C1,$B$2:$B$7),0),0)))
Я оставил самый внешний IFERROR(). Надеюсь, это поможет.