На основе значений в первых двух столбцах мне нужно заполнить третий столбец (отмечен желтым цветом).
Возможно ли что-то подобное без использования VB?
На основе значений в первых двух столбцах мне нужно заполнить третий столбец (отмечен желтым цветом).
Возможно ли что-то подобное без использования VB?
РЕДАКТИРОВАТЬ:
Если всегда есть четыре команды с двумя победителями и двумя проигравшими, есть относительно более простое решение:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1&",",LEFT(B1,FIND(",",B1)),""),MID(B1,FIND(",",B1)+1,LEN(B1))&",","")&",",",,","")
Да, это возможно только с помощью формулы массива. Хотя это не совсем просто.
Ниже приведено общее решение, которое работает с любым количеством участников и команд-победителей:
Массив введите (Ctrl+Shift+Enter) следующую формулу в C2
и скопируйте-вставьте / заполните в оставшуюся часть столбца таблицы (не забудьте удалить {
и }
):
{=
TEXTJOIN(
",",
TRUE,
IF(
MMULT(
--(
TRIM(MID(SUBSTITUTE(A2&",",",",REPT(" ",LEN(A2)+1)),(ROW(INDEX(C:C,1):INDEX(C:C,(LEN(A2)+1)/2))-1)*(LEN(A2)+1)+1,LEN(A2)+1))
=TRANSPOSE(TRIM(MID(SUBSTITUTE(B2&",",",",REPT(" ",LEN(B2)+1)),(ROW(INDEX(D:D,1):INDEX(D:D,(LEN(B2)+1)/2))-1)*(LEN(B2)+1)+1,LEN(B2)+1)))
),
ROW(INDEX(C:C,1):INDEX(C:C,1+LEN(B2)-LEN(SUBSTITUTE(B2,",",""))))
),
"",
TRIM(MID(SUBSTITUTE(A2&",",",",REPT(" ",LEN(A2)+1)),(ROW(INDEX(C:C,1):INDEX(C:C,(LEN(A2)+1)/2))-1)*(LEN(A2)+1)+1,LEN(A2)+1))
)
)}
Обратите внимание, что TEXTJOIN()
доступен только в Excel 2016. В более ранних версиях Excel требуется UDF с полизаполнением. (См. Этот пост для основного.)
Объяснение:
скоро будет
На данный момент, тем не менее, мы надеемся, что следующая частично оцененная версия формулы в C2
может помочь:
{=
TEXTJOIN(
",",
TRUE,
IF(
MMULT(
--(
{"A";"B";"C";"D"}
={"A","C"}
),
{1;2}
),
"",
{"A";"B";"C";"D"}
)
)}