OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

化学式を簡単に入力する方法

  • 困ってます
  • 質問No.133017
  • 閲覧数5439
  • ありがとう数9
  • 気になる数0
  • 回答数5
  • コメント数0

エクセル2000で化学式を大量に入力したいのですが、
現在はH2Oなどの数字部分をいちいち下付きに変更しています。
(かなり面倒です)
これをもっと簡単に入力する方法はないでしょうか?

出来れば「水」と入力して「H2O」と表示させたいのですが、
単語登録、VLOOKUP関数、入力規則(リスト)、オートコレクト
以上のものは全部試してみたのですが、
いずれも一部分だけの下付きは出来ませんでした。

セルをコピーすると出来るんでしょうけど、
他に方法があったら教えて下さい。
よろしくお願いします。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.5
レベル13

ベストアンサー率 68% (791/1163)

指摘のあったパターンと『小文字、2桁以上の数値』を可能にしました。
少し書き方を変えています。次を下付きにする文字と解除する文字を分けていますので、追加・修正は容易かと思います。標準モジュールに貼り付けます。

Public Sub ShitaTukiMoji()
  Dim rg As Range '選択した範囲
  Dim L As Integer '文字カウンタ
  Dim Shiki As String '化学式
  Dim maeKigo As String '数値の前の文字は元素記号?
  Dim sitatukiFlg As Boolean '下付にする、しない

  For Each rg In Selection
    Shiki = rg
    For L = 2 To Len(Shiki)
      '全角入力を考慮
      maeKigo = StrConv(Mid(Shiki, L - 1, 1), vbNarrow)

      Select Case maeKigo
        Case "A" To "Z", "a" To "z", ")"
          'この文字の次の数字は下付きにする
          sitatukiFlg = True
        Case "・", "(", "+", "-", "=", " "
          'この文字の次の数字は下付きにしない
          sitatukiFlg = False
      End Select

      If sitatukiFlg Then
        If IsNumeric(Mid(Shiki, L, 1)) Then
          '数字なら下付文字にする
          rg.Characters(L, 1).Font.Subscript = True
        End If
      End If
    Next
  Next
End Sub
お礼コメント
noname#8940

お礼が遅れて申し訳ありません。
何度もわがままな質問に回答いただきありがとうございます。
姉が大変喜んでおりました。
マクロっておもしろいですね♪
投稿日時 - 2001-09-17 12:53:22
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル14

ベストアンサー率 51% (1179/2272)

IME2000の単語登録は出来ますよ。 Windows2000の場合、スタートメニュー→プログラム→アクセサリ→システムツールの中に「文字コード表」があります。 その中に上付きと下付きの数字や+-などの記号があります。(少なくともゴシックと明朝には) で、例えば下付きの"2"を、コピーする文字のところで選択して、その前後に"H"と"O"を付 ...続きを読む
IME2000の単語登録は出来ますよ。
Windows2000の場合、スタートメニュー→プログラム→アクセサリ→システムツールの中に「文字コード表」があります。
その中に上付きと下付きの数字や+-などの記号があります。(少なくともゴシックと明朝には)
で、例えば下付きの"2"を、コピーする文字のところで選択して、その前後に"H"と"O"を付けてコピーし、IMEの単語登録を呼び出せば語句の欄に"H下付き2O"が入るので、読みに"みず"とでも入れて登録すればOKです。
上付きもあるのでイオン式もOKです。
あとは、必要なものを片っ端から登録していきます。
ちなみに、ExcelはOKですが、アプリケーションによっては文字化けします。
とりあえず、こんな力技しか思いつきません。
ひょっとすると、IME対応の化学式辞書のようなものがあるかも知れません。
Vectorなどのダウンロードサイトをのぞいてみては?
では。
お礼コメント
noname#8940

アドバイスどうもありがとうございます。
教えて下さった文字コード表から下付きの数字を探したのですが、
見つけられませんでした。(^^;)
Windows2000じゃないからでしょうか・・・
投稿日時 - 2001-09-10 16:41:47

  • 回答No.2
レベル13

ベストアンサー率 68% (791/1163)

マクロを作ってみました。 最初は普通に入力し、下付文字にしたいセル(複数可)を選択して実行します。ショートカットキーに割り当てると早いと思います。 H2Oなら2文字目の2を、H2O+H2O=2H2O (?) は2H2Oの最初の2は下付きにはしないはずです。対応できない式があったら補足して下さい。化学式も忘れてしまいました・・・ ツール→マクロ→Visual Basic Editor でVBE ...続きを読む
マクロを作ってみました。

最初は普通に入力し、下付文字にしたいセル(複数可)を選択して実行します。ショートカットキーに割り当てると早いと思います。
H2Oなら2文字目の2を、H2O+H2O=2H2O (?) は2H2Oの最初の2は下付きにはしないはずです。対応できない式があったら補足して下さい。化学式も忘れてしまいました・・・

ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入し、そこに貼り付けます。
'(Public Sub ~ End Sub の範囲です)

Public Sub ShitaTukiMoji()
  Dim rg As Range '選択した範囲
  Dim L As Integer '文字カウンタ
  Dim Shiki As String '化学式
  Dim maeKigo As String '数値の前の文字は元素記号?

  For Each rg In Selection
    Shiki = rg
    For L = 2 To Len(Shiki)
      maeKigo = StrConv(Mid(Shiki, L - 1, 1), vbNarrow) '全角入力を考慮
      '分子の数、元素のみの数の場合は下付にしない。(例)2H2Oの最初の2など
      If 65 <= Asc(maeKigo) And Asc(maeKigo) <= 90 Then
        If IsNumeric(Mid(Shiki, L, 1)) Then
          '数字なら下付文字にする
          rg.Characters(L, 1).Font.Subscript = True
        End If
      End If
    Next
  Next
End Sub
補足コメント
noname#8940

感激です!痛快です!どうもありがとうござました。
実はこれを必要としているのは私の姉なので、
すべての化学式に対応出来るかどうか、試してもらいます。
もしダメだったら、またよろしくお願いします。
もう一つ質問なんですが、「ショートカットキーに割り当てる」
とはどのようにしたらいいんでしょうか??
投稿日時 - 2001-09-10 16:44:42
  • 回答No.3
レベル14

ベストアンサー率 51% (1179/2272)

No.1のmaruru01です。 Vectorで検索したら、下記のURLのソフトがありました。 ただし、シェアウェアソフトなので私は試してません。 mimi1504さんの使用意図に沿うかどうかもわかりませんが、 参考までに。 ...続きを読む
No.1のmaruru01です。
Vectorで検索したら、下記のURLのソフトがありました。
ただし、シェアウェアソフトなので私は試してません。
mimi1504さんの使用意図に沿うかどうかもわかりませんが、
参考までに。
お礼コメント
noname#8940

こんな便利なものがあったんですね(*^0^*)
実はこれを必要としているのは姉なんです。
さっそく報告します!
ありがとうございました。
投稿日時 - 2001-09-10 17:13:34
  • 回答No.4
レベル13

ベストアンサー率 68% (791/1163)

>もう一つ質問なんですが、「ショートカットキーに割り当てる」 >とはどのようにしたらいいんでしょうか?? マクロを登録したらシートに戻って、ツール→マクロ→マクロ で出てくるダイアログボックスでマクロを選択し、オプションボタンを押すとマクロオプションダイアログボックスが出てきます。Ctrl+の右のテキストボックスに半角アルファベット(例えばZ)を入力します。 これでこのマクロは Ctrl+Sh ...続きを読む
>もう一つ質問なんですが、「ショートカットキーに割り当てる」
>とはどのようにしたらいいんでしょうか??

マクロを登録したらシートに戻って、ツール→マクロ→マクロ で出てくるダイアログボックスでマクロを選択し、オプションボタンを押すとマクロオプションダイアログボックスが出てきます。Ctrl+の右のテキストボックスに半角アルファベット(例えばZ)を入力します。
これでこのマクロは Ctrl+Shifh+Z キーで起動します。
CtrlとShifhキーを押しておいてZキーを押す要領です。
補足コメント
noname#8940

対応出来ない化学式があったので補足させてください。

Mg(NO3)2・6H2O  
    ↑    ↑
この数字は下付きに変換されるのですが、
( )の後ろの2が変換されません。
こういう形式の化学式は他にもたくさんありますので、
マクロで一度に変換できれば、、、と思いまして。。。
可能であればお願いできないでしょうか?

ショートカットキーの解説ありがとうございました♪


 
投稿日時 - 2001-09-14 08:52:16
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ