Ordene elementos químicos como H, He, Li, Be por número atómico en Excel

Ordene elementos químicos como H, He, Li, Be por número atómico en Excel

Tengo una tabla larga con columnas para muestra, número de análisis, método de prueba, etc. y, lo más importante, el elemento químico que se analizó. Me gustaría ordenar mi tabla primero por muestra y luego por elemento químico. Los símbolos de los elementos deben estar en orden creciente de número atómico: H <He <Li <Be <B <C <N, etc. hasta Pb. ¿Se puede hacer esto en Excel?

Respuesta1

Ordena los datos por el número atómico. Aquí hay una consulta para devolver algunos datos de Wikipedia:

let
    Source = Web.Page(Web.Contents("https://en.wikipedia.org/wiki/List_of_elements_by_atomic_properties")),
    Data0 = Source{0}[Data],
    #"Changed Type" = Table.TransformColumnTypes(Data0,{{"Z", type text}, {"Name", type text}, {"Symbol", type text}, {"Average atomic mass", type text}, {"Electronegativity (Pauling)", type text}, {"First Ionization Energy (eV)", type text}, {"Radii (pm) Atomic", type text}, {"Radii (pm) Van der Waals", type text}, {"Radii (pm) Covalent", type text}, {"Valence electrons", type text}}),
    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([Z] <> "Z")),
    #"Changed Type1" = Table.TransformColumnTypes(#"Filtered Rows",{{"Z", Int64.Type}, {"Valence electrons", Int64.Type}}),
    #"Replaced Value" = Table.ReplaceValue(#"Changed Type1","—","",Replacer.ReplaceText,{"Radii (pm) Van der Waals"}),
    #"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","—","",Replacer.ReplaceText,{"Radii (pm) Covalent"}),
    #"Replaced Value2" = Table.ReplaceValue(#"Replaced Value1","—","",Replacer.ReplaceText,{"Radii (pm) Atomic"}),
    #"Changed Type2" = Table.TransformColumnTypes(#"Replaced Value2",{{"Radii (pm) Atomic", Int64.Type}, {"Radii (pm) Covalent", Int64.Type}, {"First Ionization Energy (eV)", type number}}),
    #"Replaced Value3" = Table.ReplaceValue(#"Changed Type2","—","",Replacer.ReplaceText,{"Electronegativity (Pauling)"}),
    #"Changed Type3" = Table.TransformColumnTypes(#"Replaced Value3",{{"Electronegativity (Pauling)", type number}}),
    #"Renamed Columns" = Table.RenameColumns(#"Changed Type3",{{"Z", "Atomic Number"}})
in
    #"Renamed Columns"

Puede usar Datos>Obtener datos>De otras fuentes>Consulta en blanco, luego, cuando se abra el Editor de Power Query, puede abrir el Editor avanzado y luego pegar la consulta anterior en la ventana del Editor avanzado. Cuando haga clic en "Cerrar y cargar", los datos volverán a colocarse en una nueva hoja de su libro de trabajo. Entonces puedes:

  1. Úselo XLOOKUPpara agregar el número atómico a sus datos, luego ordene por esa columna, o si desea ser un poco más complicado pero más poderoso,
  2. Cargue ambos conjuntos de datos en el modelo de datos de PowerPivot, cree una combinación en el nombre del elemento y luego establezca las propiedades de ordenación para la columna del elemento para usar el número atómico. Si hace eso, los elementos se ordenarán por número atómico en todas las tablas dinámicas creadas a partir del modelo de datos de Power Pivot.

Aparte, si carga esa consulta en Power Query, también puede seleccionar la columna "Nombre" y luego usar la opción Transformar>Crear tipo de datos, así:

ingrese la descripción de la imagen aquí

Lo que te permite hacer cosas interesantes como esta:

ingrese la descripción de la imagen aquí

Respuesta2

Sí, es posible. Por ejemplo si tienes esto.

ingrese la descripción de la imagen aquí

Puede hacer clic en la columna que desea ordenar y usar la herramienta Ordenar y filtrar desde la pestaña Inicio en Excel y ordenarla de menor a mayor como se muestra a continuación.

ingrese la descripción de la imagen aquí

Luego, cuando aparezca este mensaje, asegúrese de que esté en Ampliar la selección y haga clic en Ordenar.

ingrese la descripción de la imagen aquí

Respuesta3

(1) Cree una función personalizada de Excel VBA ATOMICNUMBER()

Presione Alt+ F11para abrir el Editor de Visual Basic (en Mac, presione FN+ ALT+ F11) y luego haga clic en Insertar > Módulo.

Copie y pegue el siguiente código en el nuevo módulo.

Function ATOMICNUMBER(arg1 as String) as Integer
    elementSymbols = Array("foo", "H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne", "Na", "Mg", "Al", "Si", "P", "S", "Cl", "Ar", "K", "Ca", "Sc", "Ti", "V", "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr", "Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh", "Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe", "Cs", "Ba", "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu", "Hf", "Ta", "W", "Re", "Os", "Ir", "Pt", "Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn", "Fr", "Ra", "Ac", "Th", "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Cf", "Es", "Fm", "Md", "No", "Lr", "Rf", "Db", "Sg", "Bh", "Hs", "Mt", "Ds", "Rg", "Cn", "Nh", "Fl", "Mc", "Lv", "Ts", "Og")
    ATOMICNUMBER = 0
    For i = 1 To UBound(elementSymbols)
        If elementSymbols(i) = arg1 Then
            ATOMICNUMBER = i
            Exit For
        End If
    Next
End Function

Cierre el editor de Visual Basic.

(2) Agregar columna auxiliar

Inserte una nueva columna al lado de los símbolos del elemento.

Llénalo con=ATOMICNUMBER(celda adyacente que contiene el símbolo del elemento).

(3) ordenar

Selecciona todos los datos.

Menú Datos > Ordenar...

Ordene primero por muestra y luego por número atómico.

información relacionada