- 締切済み
エクセルで、入力された言葉によって指定のセルの表示形式を変える方法教えて下さい。
現在、売り上げ表を作っているのですが、 制作途中で作り方がわからず困っています。 結合セル内に作った、リストの中から文字を選んだ後 指定のセルからセル内に入力した文字の表示形式を変えられるようにしたいのです。 (リスト内には、10の文字が入っています。故に、10の条件をつける必要があります。) こうしたいという形はあるのですが、それをどうすればよいのかが分かりません。 どなたか、詳しい方、教えていただけないでしょうか。 もう少し、具体的に言います。 【D1とE1を結合したセル】に空白を含んだリストがあります。 そこから、文字を選択します。 すると、【C4からC40】までのセル内に入力した文字の表示形式を 選ぶ項目によって自動的に変わるようにしたいです。 例えば、下記のようなリストがあります。 ” ” ”英語” ”日本語” ”中国語” ”ドイツ語” ”フランス語” このリスト内から”日本語”を選びます。 すると、指定したセルに数字を入力すると¥が頭につき、 ”英語”を選べば$と頭につくようにしたいです。 したいしたいと言うばかりで、すみませんが このような事をする方法はないでしょうか。 よろしくお願いします。 ちなみに、使用しているソフトは エクセル2003 WindowsとMac両方です。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
質問の文章が判りにくい (1)リストという言葉は、エクセルでは特有の術語です。 詳しくはWEBで勉強してください。 質問でいう、リストは、入力規則でリストを指定しているらしいが、そういうわけで、入力規則を添えるように。 (2)セル結合している、入力規則で選択できるようにしている・・ これはこの質問をするとき、書かなければならないことだろうか。 「あるセルに日本語と入れると」と同じではないですか。余分なことを書くと、文章が長くなり、質問のポイントがぼやけ、回答者は質問の主旨の読み取りに苦労する。実情の事項の中で、質問に関係ないことを「捨てて」表現する能力も、非常に大切です。 むしろ行・列・セルを具体化・特定し、模擬実例を挙げてもらったらはっきりする。 (1)この際日本語等を選択するセルは1セルか、A列各セルか もっと別か (2)書式を左右するセルは1セルか、(1)の同行の別列か もっと多数で分散的か?すなわち (1)を1箇所選択すると、あちこちの複数セルの書式を 変えるのか。 ーーー (1)質問者の頭には関数での処理が、潜在的に頭にあるのではないかと思うが、関数は書式を左右できないという原則を自覚すること。 値(文字列)化して、TEXTなどで(それも別列になる)やると、その後(その先)の計算などがうまくいかず、困るのでは? (2)条件付書式でと考えても、表示形式の指定は対象から外れている (3)残るはVBAしかないが、質問者は>したいしたいと言うばかりで ・・と書いているところを推察すると、経験がないと見る。 そうすると本質問をほぼ満足な線で解決する方法はないと見る。 日本語等と入力するセルが、値が変わると、即座に書式を変えるのは VBAのイベントという考えに拠ら無いとできないが、その勉強が必要です。 WEBで、VBAに関し、 Worksheet_Change NumberFormat を検索語にして調べまくり、適当に拾って、コードが判ればできるかもしれない。 ーーー >したいしたいと言うばかりで とりあえずエクセルに限って、何かしたいと思ったとき、どういう勉強・知識が必要かは、それまで過去に、エクセルを相当勉強して無いと判りにくいという面がある。したいことも考えつつ、日ごろから手持ちのレパートリーも増やさないと、空回りする。 そして課題が基礎的になればなるほど、難しい手法や新しい考え方を 学ばなければならなくなることが多い。またMSはエクセルの仕組みの詳細情報は(当然ですが)一般には公表していない。
VBAを使えばできないことは無いでしょうが、プログラムしないで実現するなら、入力するセルと表示するセルを別にするしかないでしょう。表示セルにはTEXT関数を使用します。 A1に区分を入力し、B1に数値、C1に表示させるとして、C1に =text(B1,if(A1="日本語","\#,##0",if(A1="英語","$#,##0",if(・・・・・・・・))) と入力すればいいでしょう。
お礼
お答えありがとうございます。 質問が下手で、申し訳ございません。 VBAも頭にありましたが、できるなら使わずに何かないだろうかと思っていました。 text()という使い方は初めて知りました。 今回は条件が多くて、記述がややこしいですが条件が少ない時、使ってみたいと思います。
補足
お答えありがとうございます。 VBAには詳しくありません。 ですが、これをするに当たり下記のようなものを作りました。 何か間違った記述をしているでしょうか。 どうやっても、上手くいかず、WEBを探しても思っているようなことが探すことができませんでした。だから、具体的に書けさえすれば問題となっている点を汲み取って何か他の方法をくださるのではないかとこのようになってしまいました。申し訳ありません。 簡潔に質問をまとめてみます。 「A1とB1の結合したセル内に入力規則で作ったリスト内から、 文字を選ぶごとに、指定したC1からC10に入力した文字の表示形式を変えたいのです。」 結合セルをわざわざ書いたのは、結合したセルを指定した時判定してくれなかったのです。また、単体にしたセルで入力規則で作ったリストから選んでも同じように結果はでませんでした。 しかし、これらの問題はMACで制作した時だけしか起こらないことを知りました。Windowsで作った場合は、上手く判定できたのです。 だから、なぜMACでは上手く行かないのかが分からないので他に方法があるのかと思い質問しました。使用する者の多くがMACを使っているのでMACユーザー用に作りたかったのです。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Select Case Target.Value Case "英語" Range("C1:C10").NumberFormatLocal = "####ドル" Case "日本語" Range("C1:C10").NumberFormatLocal = "####円" Case "中国語" Range("C1:C10").NumberFormatLocal = "####元" Case "ドイツ語" Range("C1:C10").NumberFormatLocal = "####ユーロ" Case "フランス語" Range("C1:C10").NumberFormatLocal = "####ユーロ" Case "" Range("C1:C10").NumberFormatLocal = "####" End Select End If End Sub