Hola a todos,
En realidad, estoy tratando de cambiar (automáticamente) los nombres en la columna de mi tabla [Autor] de una columna [Etiquetas], basada en una Lista de nombres (dinámica, que relleno en mi hoja de Excel): si el nombre en [Lista] aparece en [Etiquetas], entonces cambie [Autor] con ese nombre, de lo contrario mantenga [Autor].
Estoy lejos de ser un experto, así que intenté:
Personnalisé4 = Table.ReplaceValue(#"Personnalisé3",
each [Author],
each if Text.Contains(List,[Labels]=true)
then [Labels]
else [Author],
Replacer.ReplaceText, {"Author"}
Si alguien tiene la solución, ¡estaría agradecido!
Solved! Go to Solution.
¿Qué debe suceder cuando la etiqueta contiene más de un valor de la lista de reemplazo?
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("jc5BC8IgFAfwryKehU2D6GqbiGEqbIExPKyQCGSjtRH79r1Vtzp0eX/+78GP1zTY5xQTbJ0wEHKIl36YkeNVzTUs6CajNGM5y6F472EeY0r9gyAxXmPXRVQenDU1QdxUaqsFDmRB2YIaaZWRP931l3tKUyRIgaTGNs0fZwWXgptCaC3KP6Vde75N8Y4Ku3e2AvBNz6/HcQhP", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, State = _t, Author = _t, Creation = _t, Title = _t, Labels = _t]),
ReplaceList = {"Etienne DUPONT","Jacques COMPOST","Valérie DULORS"},
#"Replaced Value" = Table.ReplaceValue(Source,each [Author],each try List.Intersect({ReplaceList,Text.Split([Labels],", ")}){0} otherwise [Author],Replacer.ReplaceValue,{"Author"})
in
#"Replaced Value"
¿Las respuestas anteriores resuelven su problema? Si se ha resuelto, marque la respuesta correcta como la respuesta estándar para ayudar a los otros miembros a encontrarla más rápidamente. ¡Gracias de antemano por su amable cooperación!
Espero que ayude,
Equipo de soporte de la comunidad _ Caitlyn
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
Hola Ibendlin,
Gracias por su respuesta.
El objetivo es tener una lista dinámica en Excel (más fácil de agregar o eliminar personas de la lista) que ayudaría a transferir el nombre de [Etiquetas] (en realidad una etiqueta) a [Autor]
Aquí está el ejemplo:
El conjunto de datos:
IDENTIFICACIÓN | Estado | Autor | Creación | Título | Etiquetas |
X01 | ABRIR | Gregorio PASTAL | 18/11/2020 | XXX | Amarillo, Etienne DUPONT, ANSIBLE |
X02 | ACTUAL | Gregorio PASTAL | 16/11/2020 | XXX | azul, IT, Italia |
X03 | ANULADO | Gregorio PASTAL | 16/11/2020 | XXX | Jacques COMPOST, azul, amarillo |
let
Source = Excel.CurrentWorkbook(){[Name="Tableau2"]}[Content],
#"Type modifié" = Table.TransformColumnTypes(Source,{{"ID", type text}, {"State", type text}, {"Author", type text}, {"Creation", type datetime}, {"Title", type text}, {"Labels", type text}})
in
#"Type modifié"
La lista:
Lista |
Etienne DUPONT |
Jacques COMPOST |
Valérie DULORS |
let
Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
#"Type modifié" = Table.TransformColumnTypes(Source,{{"List", type text}}),
Liste = #"Type modifié"[List]
in
List
El resultado esperado sería el siguiente: (según la lista, la solicitud está buscando un nombre en [Etiquetas], y moverlo a [Autor] cuando sea verdadero) :
IDENTIFICACIÓN | Estado | Autor | Creación | Título | Etiquetas |
X01 | ABRIR | Etienne DUPONT | 18/11/2020 | XXX | Amarillo, Etienne DUPONT, ANSIBLE |
X02 | ACTUAL | Gregorio PASTAL | 16/11/2020 | XXX | azul, IT, Italia |
X03 | ANULADO | Jacques COMPOST | 16/11/2020 | XXX | Jacques COMPOST, azul, amarillo |
Gracias por su ayuda.
¿Qué debe suceder cuando la etiqueta contiene más de un valor de la lista de reemplazo?
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("jc5BC8IgFAfwryKehU2D6GqbiGEqbIExPKyQCGSjtRH79r1Vtzp0eX/+78GP1zTY5xQTbJ0wEHKIl36YkeNVzTUs6CajNGM5y6F472EeY0r9gyAxXmPXRVQenDU1QdxUaqsFDmRB2YIaaZWRP931l3tKUyRIgaTGNs0fZwWXgptCaC3KP6Vde75N8Y4Ku3e2AvBNz6/HcQhP", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, State = _t, Author = _t, Creation = _t, Title = _t, Labels = _t]),
ReplaceList = {"Etienne DUPONT","Jacques COMPOST","Valérie DULORS"},
#"Replaced Value" = Table.ReplaceValue(Source,each [Author],each try List.Intersect({ReplaceList,Text.Split([Labels],", ")}){0} otherwise [Author],Replacer.ReplaceValue,{"Author"})
in
#"Replaced Value"
Gracias por su respuesta.
¿Qué debe suceder cuando la etiqueta contiene más de un valor de la lista de reemplazo?
-> No debería suceder, pero si lo hace, tomar el primero de la lista sería suficiente.
Sin embargo, para ayudar a las personas que usan la herramienta (no se usa para Excel en absoluto), me gustaría dejar la lista en la hoja de Excel (y no directamente en el código M):
------>
También uso una Lista para filtrar [Autor] ya:
Table.SelectRows(#"Colonnes permutées2", each (List.Contains(Tableau3,[Author])=false)),
Así que estaba buscando algo similar. ¿Es posible?
Claro. Puede modificar mi código para usar diferentes fuentes tanto para la tabla como para la lista.
Eh
¡Lo adapté y funciona perfectamente!
¡Muchas gracias! 🙂
Parece que estás bastante cerca de tu intento. Sin embargo, debe usar Replacer.ReplaceValue.
Proporcione datos de muestra desinfectados que cubran completamente su problema. Pegue los datos en una tabla de su publicación o use uno de los servicios de archivos. Por favor, muestre el resultado esperado.
Join us for a free, hands-on Microsoft workshop led by women trainers for women where you will learn how to build a Dashboard in a Day!