Как в Google Таблицах разделить значения, разделенные запятыми?

У меня есть столбец значений, разделенных запятыми, например:

              A
1   A, B, C, D, E
2   A, D, E, F, G
3   B, E, F, H
4   A, B, C, D, E, F, G, H
5   D
6   F, G
7   A, E, F, G
[...]

Я хочу получить все эти значения, но по отдельности, поэтому я получу список/массив со значениями типа ["A","B","C","D","E","A", «D», «E», «F», «G», «B», «E»…], которые я могу передать в ARRAYFORMULA(), вложенный в функцию.

Пункты домового:
Мне в конечном итоге нужно передать это в =MODE(). Если есть более простой/фактически возможный способ сделать это без =MODE(ARRAYFORMULA(SEPERATE(A1:A7))), SEPERATE — это гипотетическая функция, определенная выше, пожалуйста, дайте мне один. Благодарю вас!


person OldBunny2800    schedule 29.02.2016    source источник


Ответы (3)


Чтобы получить режим, поместите первую формулу в столбец B. Она добавляет запятую в конец каждого набора букв, чтобы разделение работало. Затем вторая формула найдет моду. Вы можете скрыть столбец B.

=transpose(split(join(" ",arrayformula(A1:A7&",")),", "))
=ArrayFormula(
   index(B1:B,
     match(
       max(if(B1:B="",iferror(1/0),countif(B1:B,B1:B))),
       countif(B1:B,B1:B),
       0
     )
   )
 )
person Ed Nelson    schedule 29.02.2016

Вы не можете использовать функцию разделения с формулой массива, но вы можете запустить функцию разделения во вспомогательном столбце справа от ваших значений:

=SPLIT(A1,",")

Также Mode не работает с текстовыми значениями — только с числами — вместо этого вы можете использовать countif.

person Aurielle Perlmann    schedule 29.02.2016
comment
О да, я спросил о режиме строк в другом вопросе. Это более сложная вещь с индексом (см. здесь) - person OldBunny2800; 29.02.2016
comment
да, формула массива великолепна, но есть несколько ключевых функций, с которыми она просто не будет работать (и, поверьте мне, я пытался вечно) split — одна из них, а также importxml, importdata и т. д. - person Aurielle Perlmann; 29.02.2016
comment
Есть ли способ сделать это без использования вспомогательного столбца? Кроме того, мне бы хотелось, чтобы запятые исчезли (я не знаю, делает ли это SPLIT()) - person OldBunny2800; 29.02.2016
comment
split делает это, вы можете использовать замену для удаления запятых: arrayformula(substitute(A1:A,,,)) или =REGEXEXTRACT(A1,rept((\w).*,len(regexreplace(A1,. ,) ))) работать аналогично раздельному - person Aurielle Perlmann; 29.02.2016

Чтобы получить таблицу с итоговыми значениями, используйте эту формулу:

=QUERY({TRANSPOSE(SPLIT(JOIN(", ",A1:A7),", ")),TRANSPOSE(SPLIT(JOIN(", ",A1:A7),", "))},"select Col1, count(Col2) group by Col1 order by count(Col2) desc label count(Col2) ''",0)

Это даст такой результат:

E   5
F   5
A   4
D   4
G   4
B   3
C   2
H   2

И если вы хотите получить букву «Е» (режим), используйте:

=QUERY(QUERY({TRANSPOSE(SPLIT(JOIN(", ",A1:A7),", ")),TRANSPOSE(SPLIT(JOIN(", ",A1:A7),", "))},"select Col1, count(Col2) group by Col1 order by count(Col2) desc label count(Col2) ''",0),"select Col1 limit 1")
person Max Makhrov    schedule 29.02.2016