[[20181024103531]] 『化学式の数値を一括で下付きにしたいです。』(たなか) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『化学式の数値を一括で下付きにしたいです。』(たなか)

お世話になります。

投稿[[20050124160525]] を拝見しました。

化学式の数値を一括で下付にする場合、
「アルファベット・数値・『)』の後ろの数値は下付」 という動きを、
マクロで行うことは可能でしょうか。

  C16H8N2Na2O8S2・・・16、8、2、2、8、2が下付
  Mg(NO3)2・6H2O・・・3、2、2が下付で、6はそのまま

また、アルファベットだけれども、「pH」の後ろの数値はそのまま、
ということが実現できると、なお良いのですが…

  pH4.01・・・4.01はそのまま

よろしくお願いいたします。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


2文字づつ取り出して、Like演算子で整理すれば出来ると思いますよ。
AND条件でpHの場合み除外する場合も同様です。
ちょっとIF文が複雑になりそうなので、そこが腕の見せ所かもしれませんが。
(名無し) 2018/10/24(水) 11:04

とは言いつつ、面白そうだったので書いてみました。

処理速度は度外視の力技です。

    Sub 化学式作成()
        Dim MyRange As Range
        Dim strSearch As String
        Dim i As Integer, intPos As Integer, intLen As Integer
        Dim s2 As String, s3 As String
        Dim PHflg As Boolean

        For Each MyRange In Selection
            For i = 2 To Len(MyRange.Text)
                s2 = Mid(MyRange.Text, i - 1, 2)
                If i >= 3 Then s3 = Mid(MyRange.Text, i - 2, 2)
                If s2 Like "[A-z]?" Then PHflg = False
                If s3 = "pH" Then PHflg = True

                If (s2 Like "[A-z][0-9]" Or s2 Like "[0-9][0-9]" Or s2 Like ")[0-9]") And Not PHflg Then
                    MyRange.Characters(Start:=i, Length:=1).Font.Subscript = True
                End If
            Next i
        Next
    End Sub
(名無し) 2018/10/24(水) 11:26

 提示されたデータがA列にある場合

 Sub test()
    Dim r As Range, m As Object
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "([A-Za-z]+|\))\d+"
        For Each r In Range("a1", Range("a" & Rows.Count).End(xlUp))
            For Each m In .Execute(r.Value)
                If m.submatches(0) <> "pH" Then
                    r.Characters(m.firstindex + Len(m.submatches(0)) + 1, _
                    m.Length - Len(m.submatches(0))).Font.Subscript = True
                End If
            Next
        Next
    End With
 End Sub
(seiya) 2018/10/24(水) 11:27

名無しさん、seiyaさん、早速のご回答ありがとうございます!

このご回答は化学業界にとって大変貴重なものであるかと…!
早速使わせていただきます!!

(たなか) 2018/10/24(水) 11:55


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.