
У меня есть список разграниченных пользователей и назначенных им уровней в иерархии. Я хотел бы иметь каждого пользователя в своей строке, но сохранить уровни, назначенные оригиналу.
Вот с чего я начну:
Пользователь | 1-й уровень |
---|---|
[email protected];[email protected];[email protected] | Регион 1 |
Вот чем я хотел бы закончить:
Пользователь | 1-й уровень |
---|---|
[email protected] | Регион 1 |
[email protected] | Регион 1 |
[email protected] | Регион 1 |
У меня сотни строк и несколько уровней иерархии, поэтому простое размещение текста в столбцах и c/p занимает слишком много времени.
Я бы предпочел решение без VBA, если это возможно.
решение1
С Office 365:
=LET(
us,A2:A201,
hr,B2:D201,
ttl,A1:D1,
VSTACK(ttl,DROP(REDUCE("",us&"|"&BYROW(hr,LAMBDA(z,TEXTJOIN("{",FALSE,z))),LAMBDA(a,b,LET(c,TEXTAFTER(b,"|"),VSTACK(a,HSTACK(TEXTSPLIT(TEXTBEFORE(b,"|"),,";"),DROP(TEXTSPLIT(REPT(c&"}",ROWS(TEXTSPLIT(b,,";"))),"{","}"),-1)))))),1)))
По сути, он разделит текст на ;
в us
диапазоне (Пользователь). Затем он повторит значения по строкам в hr
диапазоне (Иерархия). Затем он складывает их горизонтально.
Затем REDUCE складывает выходные данные каждой строки вертикально. Наконец, мы складываем ttl
диапазон (title).
решение2
- Выберите диапазон данных и перейдите в
INSERT
меню
- Выберите
TABLE
и отметьте/снимите отметкиMy Table Has Headers
по мере необходимости.
- Выберите диапазон данных, перейдите в
DATA
меню и нажмитеFrom Table/Range
- В
Power Query Editor
, выберитеcolumn1
, щелкните наSplit Column
, и щелкните наBy Delimiter
.
- Введите
;
свой собственный разделитель и нажмитеokay
.
- Выберите
Column2
, затем раскройте списокUnpivot Columns
и выберитеUnpivot Other Columns
.
- Выберите
Attribute
столбец.
- Щелкните правой кнопкой мыши по столбцу и выберите
Remove
- В
HOME
меню нажмитеClose and Load