화학식에서 원자 수 세기 (Microsoft Excel)
Ruby는 일부 화학 구조의 분자식에서 원자 수를 쉽게 결정할 수있는 방법을 찾고 있습니다. 예를 들어 셀에는 C12H10N6F2와 같은 수식이 포함될 수 있습니다. 이 경우 원자의 수는 12 + 10 + 6 + 2 = 30입니다. 루비는 약 300 개의 이러한 공식을 가지고 있으며이를 위해 사용할 수있는 Excel 공식이 있는지 궁금합니다.
첫째, 나쁜 소식입니다. 이렇게하는 쉬운 방법은 없습니다.
그곳에; 그것으로 우리는 해결책을 찾을 수 있습니다. Ruby에서 제공하는 화학 공식의 예를 보면 원자를 세는 것은 숫자 만 평가할 수 있도록 알파벳 문자를 다른 것으로 대체하는 간단한 과정이라고 생각할 수 있습니다. 예를 들어, 다음은 Ruby의 화학 공식 예입니다.
C12H10N6F2
알파벳 문자를 더하기 기호로 바꾸면 다음과 같이 표시됩니다.
+12+10+6+2
이제 간단한 공식처럼 보이죠? 이 경우에는 작동하지만 Ruby의 다른 화학식에는 전혀 작동하지 않을 수 있기 때문에 이것은 속이는 것입니다. 많은 사람들에게 친숙 할 다음 화학식을 고려하십시오.
H2O
동일한 대체를 수행하면 다음과 같이 렌더링됩니다.
+2
문제는 단일 요소 (예 : 산소 요소)가있을 때마다 1의 암시 적 카운트가 있다는 것입니다. 따라서 H20은 실제로 3 개의 원자입니다.
이제 우리는 암시 된 1을 간단히 설명 할 수있는 방법을 찾을 수 있습니다. 그렇죠? 확실한; 이것은 할 수 있습니다. 다음 사용자 정의 함수와 같은 매크로를 사용하면 가장 쉽고 깔끔하게 수행 할 수 있습니다.
Function CountAtoms(ChemForm As String) Dim sNewNum As String Dim sTemp As String Dim iNewAtoms As Integer Dim iTotalAtoms As Integer Dim J As Integer sNewNum = "" iTotalAtoms = 0 For J = 2 To Len(ChemForm) sTemp = Mid(ChemForm, J, 1) If sTemp >= "0" And sTemp <= "9" Then sNewNum = sNewNum & sTemp ElseIf sTemp <= "Z" Then iNewAtoms = Val(sNewNum) If iNewAtoms = 0 Then iNewAtoms = 1 iTotalAtoms = iTotalAtoms + iNewAtoms sNewNum = "" End If Next J iNewAtoms = Val(sNewNum) If iNewAtoms = 0 Then iNewAtoms = 1 iTotalAtoms = iTotalAtoms + iNewAtoms CountAtoms = iTotalAtoms End Function
워크 시트에서이 함수를 사용하려면 다음 화학식을 참조하면됩니다.
=CountAtoms(A1)
화학식이 A1 셀에있는 경우이 함수는 원하는 개수를 반환합니다. 다음과 같은 수식에서도 작동합니다.
NaCl SbF6
이들은 두 문자 요소 이름에 의존하며 그 중 많은 수가 있습니다. 그러나 두 문자로 된 요소 이름의 두 번째 문자는 대문자가 아니어야합니다.
그렇다면이 접근 방식은 모든 화학 공식에서 작동할까요? 실제로는 아닙니다. 지금까지 다룬 간단한 것들에서만 작동합니다. 화학 공식은 상당히 복잡해질 수 있습니다. 다음 예를 고려하십시오.
2H2O
초기 숫자가 이와 같이 나타나면 공식에 해당 값을 곱해야합니다. 따라서 H2O의 일반적인 3 개 원자 대신이 공식은 6 개의 원자를 갖게됩니다.
더 나빠집니다. 다음 유효한 화학 공식을 고려하십시오.
Ca3(PO4)2 Al2(SO4)3(H2O)18
괄호와 숫자에 유의하십시오. 이 명명법에서 닫는 괄호 바로 뒤의 값은 괄호 안의 분자가 더 큰 분자에 몇 개 있는지를 나타냅니다. 따라서 두 번째 예에서는 전체 분자에 3 개의 SO4 분자와 18 개의 H2O 분자가 있습니다. 이것은 전체 공식의 원자 수에 분명히 영향을 미칩니다. 복잡성을 복합화하기 위해 괄호를 중첩 할 수도 있습니다.
CH3(C3H4(NH2)2)18CH3
재미 있죠?
이것은 여전히 더 복잡한 매크로로 해결할 수 있습니다. 하지만 여기에서 바퀴를 재발 명하는 대신 이와 같은 복잡한 화학 공식을 사용하는 경우이 사이트에서 제공하는 매크로를 사용하는 것이 좋습니다.
http://www.vbaexpress.com/kb/getarticle.php?kb_id=670
매크로는 사용자 정의 함수로 구현되지 않습니다. 이를 사용하려면 수식이있는 셀을 선택하고 매크로를 실행 한 다음 매크로가 선택한 화학식의 오른쪽에있는 열의 정보를 수정합니다. 위 웹 사이트의 코드에 전체 지침이 포함되어 있습니다.
또한 Visual Basic Editor에서 정규식을 사용하도록 설정해야합니다. 도구 | 참조한 다음 사용 가능한 참조를 스크롤하여 Microsoft VBScript 정규식 5.5 옵션을 찾습니다. 참조 왼쪽의 확인란이 선택되었는지 확인한 다음 확인을 클릭합니다.
_ 참고 : _
이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.
link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요]
.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (13707)은 Office 365의 Microsoft Excel 2007, 2010, 2013, 2016, 2019 및 Excel에 적용됩니다.