• ベストアンサー

エクセルの活用に関して。[化学分野での使用]

エクセルを使っていて、こんなことできないかな?とおもったことです。 エクセルで、IMEの辞書を自作しており、エクセルで作ったあとで、必要な領域をコピーしてテキストにはると、タブ切りなので、そのまま使えます。 それをマクロでできないものでしょうか? (例)    A    B     C     D 1 物質名 べんぜん  benzene  名詞 2 物質名 とるえん  toluene  名詞 3 条件  しつおん  r.t.    名詞 4 操作  じょうはつ evaporate 名詞 というように、A系列には、自分ながらの分別、B系列、C系列、D系列には、辞書用に。 と書いて、その後、B,C,D列をコピーして(A系列を除外したい)テキストに出力ってできませんか? また、他に、水って、H2O(2は下付き文字)なので、H2Oという文字列を探し出して、その文字列の中の2を下付きにするということを、マクロでできませんか? 量をかいていると、いちいちやっていると時間がかかる以外に、下付きにし忘れたなどが、でてきてしまって、困っています… また、実際は水以外にもあるので… 以上二つなのですが、分かりにくいかもしれませんので、ガンガン補足いたしますので、どうぞよろしくお願いします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.5

○テキストに出力ってできませんか?   シートをコピーし、コピーしたシートのA列を削除してテキスト出力 で可能でしょう。 ○また、他に、水って、H2O(2は下付き文字)なので、H2Oという・・・   QNo.133017『化学式を簡単に入力する方法』     http://okweb.jp/kotaeru.php3?q=133017 かなり前ですがマクロを書いています。

参考URL:
http://okweb.jp/kotaeru.php3?q=133017
stone_wash
質問者

お礼

テキスト出力ですが、N,N-dimethyl formamideなど、長い化合物名ですと、ハイフンが入っていて、その文字の場合、””がテキストにすると”N,N-dimethyl formamide”のようになってしまうんです… 皆様が仰られていた方法を手でやってみたら、こんな問題が… 下付き文字のことですが、試したすごいですね♪ このマクロは、ワードでもできますか? 卒論で使いたいなぁ…とおもったので… 回答ありがとうございました。

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

#4です。 >上付き文字の場合⇒^1とか^n、^(-1)、^(-15) というような、TeX風に書いて、^の次の数字軍もしくは、()を上付きにする。 下付き文字の場合⇒_1、_n、_(-1)、_(-n) とあったら、下付き文字にする。 私が言いたかったのは、IME辞書に入れて、候補を出したとき、表示を下付きにする方法が判らならないでしょうと言うものでした。 エクセルシートの世界の中だけのためなら、#5のご回答のプログラムを使うか、H$2のように、下付き数字の前に特殊記号を入れることにすれば、下付きに変えるプログラムが簡単になります。数字だけだと、化学式では下付きにならない数字(2H2(下付き)Oのような)もあったと思うので、判別ができない。化学式で上付きはありましたかね。

stone_wash
質問者

お礼

これは…申し訳ありませんでした。 勝手に、IME辞書では困難かな?とおもって勝手な考えが先行しておりませんた。 そのため、WORDもWXCELも両方化学式を入れて使っていることもあり、マクロできれば両方という、質問文に入ってないことまで考えてしまっていたので… また、化学式では確かに一般的には上付き文字はありませんが、同位体を使っている場合もありまして、水素の同位体ですと、Dという記号やTという記号がありますが、Cの13(カーボンサーティーン)などがあるものでして… 質問の域から出てしまっていますね。 申し訳ありませんでした。 何度も回答ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

下記私の(疑問)をまず読んで、考えて見てください。 >A系列を除外したい (1)A列を除いて、コピーし、別シートへ貼りつけ。 (2)シートコピーをして、コピー(副)の方でA列削除 その後1シートだけにして、テキスト形式保存 >下付き文字 エクセル・ワード内で下付き文字にマクロでするのは簡単 と言うか1行。ただ数字の場所が不定。 (A)語句から数字桁を割り出す 科学式の場合は1桁で、上付きは原子(質量数、陽子数)のようには無かったですよね。 (B)下付き文字にするには With ActiveCell.Characters(Start:=2, Length:=1).Font のStartをプログラムでセット .Subscript = True End With でよい。 (C)数字桁の探索のプログラムを作るのに少し経験が要る。 (D)各行の処理をするためのロジックが分かっていること。別シートに書く書き方とか。これはVBAで何をするにも必要なことです。 これらをお望みなら書いて見ますが。 (疑問) 下付き・上付き文字表現は、表示するソフト(台紙に当たるものを提供するソフト)がそれに対応している必要があります。メモ帳で考えれば判ります。エクセル上でいくら 下付き表現に直しても、保存するのはテキスト形式なら、 下付き情報は捨てられます。 IME辞書ファイルに加わる時は、下付きの痕跡が無いでしょう。 (A)IME辞書を使って表示するIMEにおいて、下付き表現が可能か(多分m2(平方メートル、上付き)の例があるので、可能かと) (B)どのようにするのか (B)は、この点に特化した、もっとプロ級の知識(Inside知識)が必要と思われます。 そしてVBでは扱えないかも知れない。C++などでくむ必要 とか。 OKWEBを見ている人にいるかな(過去の回答振りからいないように思う)。

stone_wash
質問者

お礼

実は自分なりに、実験の合間に試していたのですが、確かに、シート1に書いてあるものを、シート2に写して、A列を削除したのち、テキストに出す。 というのは、いいなーとおもってやってみました。(マクロではなく、ただ手で…) そしたら、問題が出ました… #1の方の場所にも書かせていただきましたが、 例えば、N,N-dimethyl formamideなどの、ハイフンが入っている化学物だけなのか分からないのですが、””が入ってしまうんですよ… 初め書式設定のためかな?とおもったのですが、自分でやった分では、残ったままでした… よろしければ、よろしくお願いします。 下付き文字に関してですが、質問文を書いた後に考えたことなのですが、 上付き文字の場合⇒^1とか^n、^(-1)、^(-15) というような、TeX風に書いて、^の次の数字軍もしくは、()を上付きにする。 下付き文字の場合⇒_1、_n、_(-1)、_(-n) とあったら、下付き文字にする。 というアンです。 ただ、自力では???でした… もし、よろしければ、ご意見などいただけたら、幸いです。 回答ありがとうございます。

  • sim137
  • ベストアンサー率38% (108/283)
回答No.3

NO.1です。 補足です。 >また、他に、水って、H2O~~~ マクロでいけるかどうか不明ですが(試してください)一応楽な方法見つけました。 まずH2O(2が小さいの(作り方はわかりますよね?わからないなら言って下さい。))を1つ作ります。それをコピー(セルをすべて) 「編集→検索」検索でH2Oを検索H2OもH2O(2が小さいのも)すべてが検索にヒットします。検索した明細が下に出てきますので一番上をマウスでクリック、キーボードのShiftキーを押したままで一番下をクリック(これですべてのH2O(2が小さいのも)が選択されます。) 選択された後、検索の窓を閉じる。 その後貼り付け。これでセルの設定がH2Oすべてに反映されます。

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

テキスト出力は簡単だぞい。とりあえずちょちょっとサンプルを作ってみたので参考になれば。保存するファイル名や場所を指定できるようにしたり、エラーチェックを追加したり機能を充実させて欲しい。 Public Function writeToTSV() Dim row As Long Dim fnum As Integer fnum = FreeFile Open "c:\dictionaly.tsv" For Output Access Write Lock Write As #fnum row = 2 Do While Cells(row, 2) <> "" ' Bの列が空白になれば終了 Print #fnum, Cells(row, 2) & vbTab & Cells(row, 3) & vbTab & Cells(row, 4) row = row + 1 If row > 65536 Then Exit Do End If Loop Close #fnum End Function これを、VBAを開いて(エクセルの画面でALT+F11だ)、データを書き込んでいるシートの名前があるオブジェクトを選択してコードを表示させ、上のを貼り付けて実行すれば良い。 で、2番目の下付文字だが、どうだろうか・・・・下付にする場合の条件が、コンピュータに理解できる内容であれば、前述の関数と同じようにループをまわしてセルを一つずつ舐めていけばできそうな気はするが・・・・。

stone_wash
質問者

お礼

これは、ビジアルベーシックエディターを開いて、張るだけですか? マクロとかは、あまりやったことがないので… なんか、End subがどうとか吐かれて何がなんだか… 申し訳ありません… 回答ありがとうございます。

  • sim137
  • ベストアンサー率38% (108/283)
回答No.1

A列削除は簡単ですよ?というか??? ただAを選択(ABC・・・と並んでいるところのAをクリック)すればA列全部選択となります。右クリックで削除が出来ます。(データを消したくない場合は一度消してからテキスト出力して元に戻すと良いかな。一応保存したデータをコピーして試してくださいね~慣れるまでは。) >また、他に、水って、H2O~~~ こちらについてはセルの設定が入ってきますのでコピーしてペーストぐらいしか良い方法が思いつきませんでした。他の方に聞いてください。

stone_wash
質問者

お礼

試したことはあるんですよ、A列削除語後にテキスト出力。 ただ、ダブルクオートが入ってしまうんです。 例えば、N,N-dimethyl formamideみたいな、ハイフンが入っているものが主にです。 回答ありがとうございます。

関連するQ&A

  • エクセルマクロについて

    お世話になります。 エクセルのマクロについて不慣れなためご質問させてください。 下のような表がありこれを集計して新しく表にしなおしたいと思っています。 1列目 2列目 A    XXXX B    XXXX C    XXXX A    XXXX A    XXXX B    XXXX 1列目の同じ文字列を数えて表を作りなおしたいのです。 1列目  2列目 A     3   ←数えた回数を入れたいと思います B     2 C     1 初めの表はマクロで作成出来たのですが2つめの表を作成する エクセルマクロを作成したいと思っています。 サンプルを頂けると助かります。

  • エクセルの【区切りの位置】の活用について

    【結論】列に配置したい。 エクセル 2010使用です。 1セルにカンマで区切った文字列があります。 (例)A1のセル内に【みかん,りんご,いちご,なし】 区切りの位置でカンマ.........で行うと A1みかん B1りんご C1いちご D1なし になります。 行ではなく列にしたいです。 A1みかん B1りんご C1いちご D1なし いま私が行っているのは、行を一度コピーして 貼り付けのオプションで行と列を入れ替えてます。 最初から1セルに1文字列がよいのですが 他人が1セルにカンマで区切ったデータを編集します。 エクセル2010での関数や操作で実施したい。 ただしマクロや、外部からのソフトは使用しないで よろしくお願いします。 ※OKWaveより補足:「ひかりTVのサービスやISPぷらら」についての質問です。

  • エクセルのマクロで特定の文字があるときだけコピーできるようにしたい

    エクセルのマクロで特定の文字があるときだけコピーできるようにしたい エクセルでこういう表があるとします ココカラ 1 * 2 b 15 3 * 4 d 19 5 e 25 6 * 7 g 35 8 * 9 j 46 10 k 54 ココマデ このような表があるとき、マクロを使ってもしB列に「*」以外の文字(この場合アルファベットのb) があるときは左のセル(2)をずっと下のセルにコピー(仮にA50とします)した後、右のセル(15)をB51にコピー、 次は文字が「*」なのでコピーはせずにd列になったら4と19をC50,D51にコピー・・・ という作業をセルに「ココマデ」と書いているところまで繰り返す、というマクロを作りたいのですが、どうすれば いいのでしょうか?

  • エクセルでのマクロ:画像の貼り付け

    お世話になります。 まだマクロについて不勉強ですが、表記のことができるかどうか気になっています。 お教えください。 1 エクセルの列に A B Cと表記しておく 2 「A」「B」「C」という名前のフォルダから画像を取ってきてA BCの列の下に貼り付ける 3 新しく「D」というフォルダができた場合、エクセルの列にDを追記してさらに貼り付けていく   (クリックを押せば自動的に貼り付けれるでもよいです) できるできないでもいいのでお教えください。 よろしくお願いします。

  • エクセルのデータ結合について

    エクセルのB列に1~1000までの数字がランダムに500個入っています。 エクセルのC列にも1~1000までの数字がランダムに500個入っています。 同様の列が10行あります。 (B列以降には入っている数字と入っていない数字があります) A列には、1~1000までの数字が順番どおりに全て並んでいます。 次のような感じです。 (並べ替え前の文字列) A  B  C  D・・・  1  3   2  6 2  1   4  5 3  5   5  1 4  6   3 5        6       これを、下の列のように、B列以降の列の数字を並べ変えたいのですが、エクセルはこのような各行の並べ替えはできますでしょうか? 方法がありましたらご教示頂ければ幸いです。 よろしくお願いいたします。 (並べ替え後の文字列) A  B  C  D・・・  1  1     1 2     2 3  3   3 4     4 5  5   5  5 6  6     6

  • エクセルでカンマ区切り文字を各行に分解するマクロを書きたい

    WindowsXP Excel2003 エクセルで以下ができるマクロを書きたいです。 B列にはカンマ区切りで文字列が入っています。 カンマ区切りの数は行によって様々です。 この表をB列のカンマ区切り文字を各行に分解したいです。 その際、A列とC列は分解前の値と同様です。 このようなマクロは書けますかね? A列     B列     C列 あ     a,b,c    100 い     d,e     200 う     f      300 え     g,h     400     ↓ A列     B列     C列 あ     a      100 あ     b      100 あ     c      100 い     d      200 い     e      200 う     f      300 え     g      400 え     h      400

  • Excelで列の操作の自動化をしたいです

    列、C列、E列、G列・・・の1行目にはタイトルが入力されており、 B列、D列、F列、H列・・・には不特定の文字列が入力されており、それぞれ行数も不特定です。 A列、C列、E列、G列・・・の1行目のタイトルはA列にまとめ、B列、D列、F列、H列・・・の文字列はB列にまとめたいです。 下の例の場合だと、C列の1行目のタイトルをB列の下端の左下にあたる(A7)に移動させ、 D列の2行目から入力された文字列を右となりの(B7)に移動させたいです。これの繰り返しをマクロで自動化したいです。     A列     B列     C列     D列 1    あ       A       い       2             B                a   3            C                b 4              D               c 5             E                6              F                            ↓     A列     B列     C列     D列 1    あ       A              2             B                   3            C                 4              D                5             E                6              F      7      い      a 8             b 9             c よろしくお願いします。

  • エクセルで順列の列挙

    例えば 1 と 2 という2個の数字(文字)がある場合,  A列 B列   1   2   2   1 1 2 3 という3個の数字(文字)がある場合,  A列 B列 C列   1   2   3   1   3   2   2   1   3   2   3   1   3   1   2   3   2   1 1 2 3 4 という4個の数字(文字)がある場合,  A列 B列 C列 D列   1   2   3   4   1   2   4   3    ~ 省略 ~   4   3   2   1 という具合に n 個の数字(文字)がある場合,過不足無く列挙させるマクロ(VBA)を教えてください。 Excelの仕様上65,536行までしかないので,「8個の場合」とかいう限定された個数でもかまいません。 また,123,132,213,…,321 という具合に数値として1列に並べる方法でもかまいません。 また昇り順でなくてもかまいません。 よろしくおねがいします。

  • エクセルマクロ、空白行(セル)の挿入

    データがA、B、C、D、E列100行まであります。 このうちD、E列を除き、エクセルのマクロで1行ごとに空白で10行挿入したいです。 (A、B、C、D列のデータに空白セルを10行分挿入し、下にシフトするイメージ。D、E列はそのまま。) ご教授頂きたく、お願いします。

  • エクセルについて質問です。

    エクセルについて質問です。 例えば 「a」「b」「c」「d」という文字が4つありまして、この文字をランダムに並び替えたいとします。 エクセルの最初のページをひらいて「B2」に「a」、「B3」に「b」、「B4」に「c」、「B5」に「d」と文字を並べてある状態です。 それから、何を、どこにプログラミングをするのか、おしえてください。 よろしくお願いいたします。 ※ ただ、ランダムに並び替えるだけです。そして、できれば、自分が気に入ったならびになるまで何度もできるようにしたいのですが、その方法も、もしあったら、加えて教えてください。 ちなみに、 C2 =RAND() 下方向にコピー この列で並び替え ただしこのRAND関数(乱数発生)は セル新規入力やセル編集の毎に変化します またC列の式はそのまま更に D2 =RANK(C2,$C$2:$C$5) D5まで下方向にコピー という手順までは、ふんでみましたが、ここからどうしたら動くのかが分りません。 また、他の方法でもいいので、教えてください。 よろしくお願いします。

専門家に質問してみよう