샘플, 분석 번호, 테스트 방법 등에 대한 열과 가장 중요하게는 분석된 화학 원소가 포함된 긴 테이블이 있습니다. 먼저 샘플을 기준으로 테이블을 정렬한 다음 화학 원소를 기준으로 정렬하고 싶습니다. 원소 기호는 원자 번호가 증가하는 순서대로 표시되어야 합니다. H < He < Li < Be < B < C < N 등. Pb까지 이어집니다. Excel에서 이 작업을 수행할 수 있습니까?
답변1
원자 번호를 기준으로 데이터를 정렬합니다. 다음은 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"
데이터>데이터 가져오기>다른 원본에서>빈 쿼리를 사용할 수 있으며, 파워 쿼리 편집기가 열리면 고급 편집기를 연 다음 위의 쿼리를 고급 편집기 창에 붙여넣을 수 있습니다. "닫기 및 로드"를 클릭하면 데이터가 통합 문서의 새 시트에 다시 저장됩니다. 그런 다음 다음 중 하나를 수행할 수 있습니다.
- 데이터에 원자 번호를 추가한 다음 해당 열을 기준으로 정렬하는 데 사용하거나
XLOOKUP
, 좀 더 복잡하지만 더 강력한 기능을 원하는 경우 - 두 데이터 세트를 모두 PowerPivot 데이터 모델에 로드하고 요소 이름에 대한 조인을 만든 다음 원자 번호를 사용하도록 요소 열의 정렬 속성을 설정합니다. 그렇게 하면 Power Pivot 데이터 모델에서 생성된 모든 피벗 테이블의 요소가 원자 번호를 기준으로 정렬됩니다.
여담이지만, 해당 쿼리를 파워 쿼리에 로드하는 경우 "이름" 열을 선택한 다음 다음과 같이 변환>데이터 형식 만들기 옵션을 사용할 수도 있습니다.
이를 통해 다음과 같은 흥미로운 작업을 수행할 수 있습니다.
답변2
답변3
(1) 사용자 정의 Excel VBA 함수 ATOMICNUMBER() 만들기
Alt+를 눌러 F11Visual Basic Editor를 열고(Mac에서는 FN+ ALT+를 누름 F11) 삽입 > 모듈을 클릭합니다.
다음 코드를 복사하여 새 모듈에 붙여넣습니다.
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
Visual Basic Editor를 닫습니다.
(2) 도우미 열 추가
요소 기호 옆에 새 열을 삽입합니다.
그것을 채우다=ATOMICNUMBER(
요소 기호를 포함하는 인접한 셀)
.
(3) 정렬
모든 데이터를 선택합니다.
메뉴 데이터 > 정렬...
먼저 샘플을 기준으로 정렬한 다음 원자 번호를 기준으로 정렬합니다.