• 締切済み

エクセルで、入力された言葉によって指定のセルの表示形式を変える方法教えて下さい。

現在、売り上げ表を作っているのですが、 制作途中で作り方がわからず困っています。 結合セル内に作った、リストの中から文字を選んだ後 指定のセルからセル内に入力した文字の表示形式を変えられるようにしたいのです。 (リスト内には、10の文字が入っています。故に、10の条件をつける必要があります。) こうしたいという形はあるのですが、それをどうすればよいのかが分かりません。 どなたか、詳しい方、教えていただけないでしょうか。 もう少し、具体的に言います。 【D1とE1を結合したセル】に空白を含んだリストがあります。 そこから、文字を選択します。 すると、【C4からC40】までのセル内に入力した文字の表示形式を 選ぶ項目によって自動的に変わるようにしたいです。 例えば、下記のようなリストがあります。 ” ” ”英語” ”日本語” ”中国語” ”ドイツ語” ”フランス語” このリスト内から”日本語”を選びます。 すると、指定したセルに数字を入力すると¥が頭につき、 ”英語”を選べば$と頭につくようにしたいです。 したいしたいと言うばかりで、すみませんが このような事をする方法はないでしょうか。 よろしくお願いします。 ちなみに、使用しているソフトは エクセル2003 WindowsとMac両方です。

みんなの回答

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

質問の文章が判りにくい (1)リストという言葉は、エクセルでは特有の術語です。 詳しくはWEBで勉強してください。 質問でいう、リストは、入力規則でリストを指定しているらしいが、そういうわけで、入力規則を添えるように。 (2)セル結合している、入力規則で選択できるようにしている・・ これはこの質問をするとき、書かなければならないことだろうか。 「あるセルに日本語と入れると」と同じではないですか。余分なことを書くと、文章が長くなり、質問のポイントがぼやけ、回答者は質問の主旨の読み取りに苦労する。実情の事項の中で、質問に関係ないことを「捨てて」表現する能力も、非常に大切です。 むしろ行・列・セルを具体化・特定し、模擬実例を挙げてもらったらはっきりする。 (1)この際日本語等を選択するセルは1セルか、A列各セルか もっと別か (2)書式を左右するセルは1セルか、(1)の同行の別列か もっと多数で分散的か?すなわち    (1)を1箇所選択すると、あちこちの複数セルの書式を     変えるのか。 ーーー (1)質問者の頭には関数での処理が、潜在的に頭にあるのではないかと思うが、関数は書式を左右できないという原則を自覚すること。 値(文字列)化して、TEXTなどで(それも別列になる)やると、その後(その先)の計算などがうまくいかず、困るのでは? (2)条件付書式でと考えても、表示形式の指定は対象から外れている (3)残るはVBAしかないが、質問者は>したいしたいと言うばかりで ・・と書いているところを推察すると、経験がないと見る。 そうすると本質問をほぼ満足な線で解決する方法はないと見る。 日本語等と入力するセルが、値が変わると、即座に書式を変えるのは VBAのイベントという考えに拠ら無いとできないが、その勉強が必要です。 WEBで、VBAに関し、 Worksheet_Change NumberFormat を検索語にして調べまくり、適当に拾って、コードが判ればできるかもしれない。 ーーー >したいしたいと言うばかりで とりあえずエクセルに限って、何かしたいと思ったとき、どういう勉強・知識が必要かは、それまで過去に、エクセルを相当勉強して無いと判りにくいという面がある。したいことも考えつつ、日ごろから手持ちのレパートリーも増やさないと、空回りする。 そして課題が基礎的になればなるほど、難しい手法や新しい考え方を 学ばなければならなくなることが多い。またMSはエクセルの仕組みの詳細情報は(当然ですが)一般には公表していない。

to-magoo
質問者

補足

お答えありがとうございます。 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

noname#46899
noname#46899
回答No.1

VBAを使えばできないことは無いでしょうが、プログラムしないで実現するなら、入力するセルと表示するセルを別にするしかないでしょう。表示セルにはTEXT関数を使用します。 A1に区分を入力し、B1に数値、C1に表示させるとして、C1に =text(B1,if(A1="日本語","\#,##0",if(A1="英語","$#,##0",if(・・・・・・・・))) と入力すればいいでしょう。

to-magoo
質問者

お礼

お答えありがとうございます。 質問が下手で、申し訳ございません。 VBAも頭にありましたが、できるなら使わずに何かないだろうかと思っていました。 text()という使い方は初めて知りました。 今回は条件が多くて、記述がややこしいですが条件が少ない時、使ってみたいと思います。

関連するQ&A

  • Excel2007で結合したセルの表示形式

    Excel2007を利用しています。 複数のセルを結合して、500字あまりの日本語を入力しました。 セルの書式設定で「折り返して全体を表示する」の設定をし、表示形式を「文字列」にすると、文字は折り返されず全て”#####・・・”で表示されてしまいます。 表示形式を「標準」のままだとちゃんと表示はされます。 以前のバージョンでは、「標準」でも「文字列」でもどちらでもちゃんと表示されていたのですが、なぜでしょうか? 本来であれば、「標準」のままでいいのですが、少し気になったもので。 ご存知の方、教えてください。

  • (MS-Excel)「入力規則」で「リスト」に空白セルを含めない方法

    (MS-Excel)「入力規則」で「リスト」に空白セルを含めない方法 たとえば、A1,B1,D1,G1は何らかの文字列が入力されていて、C1,E1,F1が空白セルだとします。 「入力規則」の「リスト」で、「元の値」にA1:G1を指定した場合は、空白もリストされてしまいます。 空白を表示させたくないのですが、作業セルに空白以外をリストさせて元の値とする、という方法は使いたくないです。 調べたところ、名前の定義方法で実現できるみたいですが、良く解りませんでした。

  • 【エクセル】指定したセルに入力することで、別の特定のセルに決まった文字を表示させるには?

    社用データを作る際の手間を省こうとしたのに、かえって難しくなってしまいました(-"-;) 分かりにくい質問で恐縮ですが、よろしくお願いします。 現在Excel2003を使っています。 「指定したセルに文字・数字問わず入力があった場合、特定のセルに特定の文字を表示させる数式(または方法)」は無いでしょうか。 (できれば指定したセルに入力が無い限り、特定文字を表示させるセルは非表示のままにしたいと思っています) ↓ 例えば、「A1のセルに『○田×男(人名など)』と入力した時、B1のセルに『様』と表記させる」と言った具合です。 (このとき、A1に入力が無ければB1も空白のままにしておきたいのです) 手動で入力した方が早そうな気もしますが、応用次第で他の表や作業もスッキリしそうなので、手があれば是非ご教授下さい。

  • EXCEL 行と列を指定して、範囲指定する方法

    EXCELの使い方を教えてください。 関数で試みているのですが、以下のような操作を行うことは可能でしょうか? (マクロ(VBA?)は使用したことがないため、抵抗があります。それでも、マクロを組むしかないというのであればその方法も教えてください。) 「表示シート」にて行と列を指定することで、 結合された5行×5列の表を表示させたいのです。 指定するセルも結合させており(「入力シート」)、 結合されたセル(行/列)を指定して、表示する範囲を決めてやりたいのです。 結合を解いて、たくさんの文字を指定する形にしてしまえば楽かもしれないのですが、この2文字だけで他にもたくさん処理させているため、 指定する文字はこの2文字のみで処理させたいです。 自分なりには、「表示シート」のD10セル(F10まで結合されている)に =INDEX(SUMPRODUCT((入力!B3:B27=表示!D4)*(入力!C2:Z2=表示!D3)),1,2) というような関数を組んでみたのですが、うまく表示されません。 なにか、うまく表示させる方法はあるのでしょうか? ちなみに、表内の犬など狐などは便宜的に書いているだけで、 数字が入るセルか、日付が入るセルか、文字列が入るセルかということだけが汲み取っていただければと思います。 入力するセルと表示させるセルの大きさも異なるようにしたいので、 良い方法があれば教えてください。 よろしくお願いいたします。

  • エクセルで入力した文字列を他のセルにも自動的に入力できるようにしたいです。

    エクセルで文字列を入力した場合、指定したセルにも同じ文字列が自動的に入力されるようにしたいと思っています。 調べたところ貼り付け時に形式を選択して貼り付ける「リンク貼り付け」というのがあるので試してみたんですが、 貼り付け先の空白のセルに強制的に0が入力されてしまいます。 リンク貼り付けを保持したまま空白セルを空白セルのままにすることはできないでしょうか。 よろしくお願いいたします。

  • エクセルで入力されているセルへジャンプ

    エクセルでリストを作成しています。 行数が8000行近くあります。 行には文字が入力されているところ入力されていないところがランダムに有ります。(入力されていないセルの方が多い。200、300行空白だったりする) 現在のカーソルの位置から、文字が入力されているセルまで(下方向)一気にジャンプすることは出来るのでしょうか? リストの編集するのに次にどの行に文字があるのか解らなく、その行を見つけるのに手間が掛かるので困っています。 宜しくお願いします。

  • エクセルのセルの表示形式について

    エクセル初心者です。宜しくお願いします。 とあるデータを入力しているのですが、数字や文字を入れるセルの表示形式が日付になってしまっていました。 例えば2156-6と入力したら、JUN-56となってしまうため セル表記を「標準」に変えました。 すると93656となっていまったので、改めて2156-6と入れなおしたら・・ またまたJUN-56になってしまいます(日付表記に戻っている)。 あと、セルに色を塗りたいのでツールバーより選択したのに色が変わらず 表示→セル→パターンからだと色が変わります。 どちらもセルのロックはされていません。 もともと他の人が作ったフォーマットなのですが 上記の解決策が分かる方、教えていただけませんでしょうか? 宜しくお願いします。

  • エクセル、VBAを使って指定セルの表示形式を変えたい

    「A1に、特定の文字を入力した時  指定のセル(C1~C10)の表示形式を変えたいのです。」 (例)  A1に特定の言葉を入れる。 ”日本””アメリカ””中国””ベトナム”""  指定したC1~C10の表示形式を各国のドメインを  頭につけて表示するようにします。 ”jp####””US####””CN####””VN####”"####" 一番下に、このようになると思うものを書いた意のですが、 思うように結果ができません。 問題としては、下記のように####の前に文字が来たら 結果が出ません。逆に####の後に文字を入れると結果は出ます。 ####の前に文字を入れて表示させたいのですが、 そうするにはどうすればよいでしょうか。 NumberFormatLocal = "us####" 自分なりに組み立てたものの全体を下記します。 問題がお分かりの方、詳しい方よろしくお願いします。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Select Case Target.Value Case "日本" Range("C1:C10").NumberFormatLocal = "jp####" Case "アメリカ" Range("C1:C10").NumberFormatLocal = "us####" Case "中国" Range("C1:C10").NumberFormatLocal = "cn####" Case "ベトナム" Range("C1:C10").NumberFormatLocal = "vn####" Case "" Range("C1:C10").NumberFormatLocal = "####" End Select End If End Sub スペックはWindows、 エクセル2003

  • Excelでの入力規則について

    Excel2000を使用しています。 Excelでの入力規則で「リスト」を選択し、範囲指定をしてリストを作成したいと考えているのですが、その範囲の中に空白セルが存在するとリストにもその空白が出てきます。 これを表示させないようにするにはどうしたらよいでしょうか? よろしくお願いします。

  • ドロップダウンリストで空白の数式セルの非表示化方法

    以下の数式を入力したセルを参照して、氏名をドロップダウンリストから選べるようにしたいと考えております。しかし、下記の方法ですと、空白のセル(参照セルに値が無かった場合に空白""が返されたセル)が空白のままドロップダウンリストに表示されてしまい、目的の氏名をリストから探す時に手間がかかってしまいます。 <想定しているシート>    A       B       C        D 1                           2 3 氏名     物品     帳票氏名  重複判定 4 A川B男   ○○     A川B男     1 5 A川B男   ××                0 6 C田D夫   ▽      C田D夫      1 7 C田D夫   ◆                 0 5 C田D夫   □                 0 ※C4の入力数式: =if(D4=1,A4,"") ※C1セルの入力規則の元の値に =offset(C4,0,0,counta(C4:C1000),1) 上記の方法でも、C1セルのドロップダウンリストには空白を伴って氏名が表示される形となってしまいます。 このように、数式が入力された結果空白になっているセルを、ドロップダウンリストで非表示にする方法はないでしょうか? どうぞよろしくお願い申し上げます。

専門家に質問してみよう