メートル法とインチ法のどちらからでも入出力するには?

Question 10.1   Previous Next
エクセルはほとんど初心者なのですが、どうしても知りたいことがあって送らせていただきました。さっそくですが教えて下さい。
日米併用の表の作成を依頼されたのですが、その折、センチとインチを変換して使用したいと指定されました。
2つの表にそれぞれ同じ値のセンチ表記のものとインチ表記のものをつくり、それを英語版と日本語版とリンクさせてワードに貼り付けたいらしいのです。
そして、どちらからでもエクセルで修正すれば同じ値の箇所が修正されるようなものとのことでしたが、可能でしょうか。
いろいろ本を調べてもよくわかりませんでした。CONVERTとも違うし、マクロを使えばできるかも、ぐらいしか検討がつかず困っています。
Answer   Copyright (C) 1998.9.15 永井善王
【留意事項】メートルとインチを換算するために、端数誤差が発生する場合があります。以下の回答は「どちらからでも修正」可能に組みましたが、この問題を念頭におき、入力はいつも、どちらか一方の単位を使うことにした方が良いかもしれません。

あまり難しく考えないで、パズルを解くように順番に、組み立てると良いのではないでしょうか。
「どちらからでも修正可能に」とありますが、まず1番に、中心にするデータベース(エクセルシート)をどちらか一方に決めます。この回答例ではメートル法にしました。(下図(1))
2番目は、メートル法からインチ法に換算したシートを作ることを考えます(下図(3))。これで両方の単位のシートが持てます。
3番目は、ユーザーがどちらのシートで作業したいか選択できるように考えます。
4番目は、選択されたシートの内容を入出力用のシートに写してから、それを画面に映し出します(下図(5))。
       この画面でユーザーは、自由に修正します。
5番目として、ユーザーは修正作業が終ったら、エクセルの普通の操作方法で、ブックを閉じることにします。
6番目は、修正結果をデータベースに反映するかどうか、ユーザーに確認する方法を考えます。
7番目は、反映する場合、メートル法で作業したときは、入出力シートの内容をそのままデータベースに写して、上書き保存。 インチ法で作業したならメートル法に換算したシート(下図(4))の内容をデータベースに写して、上書き保存する。

ほかにも色々な方法があると思いますが、エクセルのブック機能を有効に活用する方法が、一番楽で確実ではないかと思います。

それでは一つ一つ、具体的に考えていきましょう。
あらかじめ1つのブックに下図のシートを作っておきます。
なお、各シートのレイアウトは回答に必要な最小限のサンプルです。実務に合せて修正してください。留意点は(2)以外の各シートの行数を一致させておく。

(1) 「DB」シート 単位はmm
DBシート
ユーザーがこのシートを直接いじらないように、隠しておくと安全かも。
(2) 「換算率」シート
換算率シート

1インチが25.2ミリであることを定義
(尺貫法などに変更可能)

CONVERT関数を使う方法がありますが、分析ツールをセットアップするなどの準備が必要のため、ここでは使いませんでした。
(3) 「MtoI」シート 単位はin
MtoIシート
式を埋め込んでおく
B2セル以下に、 =IF(DB!A2="","",DB!B2/換算率!$A$2)
C2セル以下に、 =IF(DB!A2="","",DB!C2/換算率!$A$2)

(4) 「ItoM」シート
ItoMシート
式を埋め込んでおく
B2セル以下に、 =IF(入出力!A2="","",入出力!B2*換算率!$A$2)
C2セル以下に、 =IF(入出力!A2="","",入出力!C2*換算率!$A$2)
(5) 「入出力」シート
入出力シート
ユーザーがわかりやすいように、D1セルに現在の環境を、「メートル法」「インチ法」で表示する。



【注】

(3)のシートはインチ表示するために、(1)のシートを元にして換算

(4)のシートはインチ入力したときに、(5)のシートを元にして換算

選択 マクロ・プログラムのあらすじは次のようになると思います。

1. ユーザーがブックを開くと自動的に質問画面を映し、メートルかインチかを選択してもらう…右図

2. メートルかインチか、選択された方のシートを映し出す

確認 3. ユーザーが作業終了してブックを閉じたら、データベースに反映するかどうかの確認画面を映す…右図

4. 「はい」が選択された場合は、メートルかインチかに合せてデータベースに反映する

マクロの詳細はこちら
単位選択入力 を見てください。
サンプルマクロ
単位選択入力」をダウンロード すれば実際に動かしながら見れます。

Excel VBA Macro