
Tengo una lista de usuarios delimitados y sus niveles asignados en una jerarquía. Me gustaría tener cada usuario en su propia fila, pero mantener los niveles asignados al original.
Esto es con lo que empiezo:
Usuario | Nivel 1 |
---|---|
[correo electrónico protegido];[correo electrónico protegido];[correo electrónico protegido] | Región 1 |
Esto es con lo que me gustaría terminar:
Usuario | Nivel 1 |
---|---|
[correo electrónico protegido] | Región 1 |
[correo electrónico protegido] | Región 1 |
[correo electrónico protegido] | Región 1 |
Tengo cientos de filas y múltiples niveles de jerarquía, por lo que solo un texto en columnas y c/p requiere demasiado tiempo.
Preferiría una solución sin vba si es posible.
Respuesta1
Con 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)))
Básicamente, dividirá el texto en el ;
rango us
(Usuario). Luego repite los valores por fila en el hr
rango (jerarquía). Luego los apila horizontalmente.
REDUCE luego apilará la salida de cada fila verticalmente. Finalmente apilamos en el ttl
rango (título).
Respuesta2
- Seleccione el rango de datos y vaya al
INSERT
menú
- Seleccione
TABLE
y marque/desmarqueMy Table Has Headers
según corresponda.
- Seleccione su rango de datos, vaya al
DATA
menú y haga clicFrom Table/Range
- En
Power Query Editor
, seleccionecolumn1
, haga clic enSplit Column
y haga clic enBy Delimiter
.
- Ingrese
;
como su delimitador personalizado y haga clic enokay
.
- Seleccione
Column2
luego el menú desplegableUnpivot Columns
y luego seleccioneUnpivot Other Columns
.
- Seleccione la
Attribute
columna.
- Haga clic derecho en la columna y seleccione
Remove
- Desde el
HOME
menú, haga clic enClose and Load