• ベストアンサー

エクセル/数式で表示された文字の一部のサイズ変更

Sheet1のA1セルの文字列(顧客名)に 御中 をつけて別のシートに表示したいのです。 =Sheet1!A1&" 御 中" で表示できるのは存じておりますが、文字のサイズを顧客名と御中で変えたいのです。御中を若干ちいさめにしたいのです。 文字でセルに直接 ABCD株式会社 御 中 と打ち込んだものならフォントサイズは文字ごとに変えられますが、数式で表示された文字の一部のフォントサイズを変える方法が判りません。たぶん書式をいじる関数はないのだと思います。 御中を別のセルにできればよいのですが、顧客名の長さが不明なので数式で &" 御中 としています。 良い方法があったらご教示ください。

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

  • ベストアンサー
  • masnoske
  • ベストアンサー率35% (67/190)
回答No.4

関数ではできません. VBAのCharactersでも =Sheet1!A1&" 御 中" のような数式の結果に対してはできないようです(Excel2013ではできません). なので,顧客名を入力すると自動的に" 御 中" を付加して文字サイズを調整するマクロを作ってみました. 仮に顧客名を入力するセルを$A$1としています. シートモジュールに以下のコードをコピペしてご利用ください. Private Const ONCHU = " 御 中" Private Const KOKYAKU_ADDRESS = "$A$1" Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> KOKYAKU_ADDRESS Then Exit Sub Dim lngLen As Long Application.EnableEvents = False With Target .Value = .Value & ONCHU lngLen = Len(.Value) .Characters(1, lngLen - Len(ONCHU)).Font.Size = 14 .Characters(lngLen - Len(ONCHU) + 1, Len(ONCHU)).Font.Size = 10 End With Application.EnableEvents = True End Sub

emaxemax
質問者

お礼

ありがとうございます。 やはりVBAでいくしかないようですね。すばらしいコードをありがとうございました。

その他の回答 (6)

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.7

No6 HohoPapa です。 ="御中" & REPT(" ",28-ROUNDUP(LENB(A1)*8/11,0)) とすれば顧客名に半角文字が含まれてもダイジョブです。

emaxemax
質問者

お礼

ありがとうございます。

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.6

VBAを使うのが順当な解と思います。 が、 今回は興味が湧き、VBAを使わない解を考えてみました。 顧客名、御中に使うフォント、フォントサイズが提示されておらず セル幅などレイアウトが未詳なので以下を前提にしています。 ・各列幅はデフォルトのまま ・顧客名のフォントサイズは18 ・御中のフォントサイズは11 添付画像のように A列のフォント:MS 明朝 サイズ18 かつ、左詰め F列のフォント:MS ゴシック サイズ11 (またはMS 明朝) かつ、右詰め F1="御中" & REPT(" ",28-ROUNDUP(LEN(A1)*16/11,0)) なお、 顧客名に半角文字が含まれないことが前提です。 更に、MS P明朝などプロポーショナルフォントには耐えられません。 フォント、フォントサイズと文字幅の関係は複雑ですので 厳密な制御が求められる場合は、 顧客名の文字数と 「28-ROUNDUP(LEN(A1)*16/11,0)」この部分で求めている文字数 (つまり、"御中"末尾に埋める全角スペースの数) の関係をテーブルにまとめ、 VLOOKUPで求める必要がありましょう。

emaxemax
質問者

お礼

ありがとうございます。 でもやはり関数では無理がありますね。VBAで行くしかないようです。

  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.5

面倒ですが セルに=Sheet1!A1として、テキストボックスをセルに重ねて配置して(塗りつぶし無しの線無し)で御中と記載して右寄せでセットしておきます。 顧客名の長さに合わせてテキストボックスのプロパティでサイズの幅をスピンボタンで調整して合わせます。 合わせ忘れたら悲惨ですが…。

emaxemax
質問者

お礼

ありがとうございます。

emaxemax
質問者

補足

ありがとうございます。

  • msMike
  • ベストアンサー率20% (363/1772)
回答No.3

ちょっと試みた限りでは、テキストなら可能だけど、実体がが数式の儘では無理みたいですね。

emaxemax
質問者

お礼

ありがとうございます。 やはりVBAでいくしかないようですね。

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

通常のエクセル関数で書式を左右することはできません。基本原則。 ーー VBAはやっていないかもしれず、参考程度に。 しかし、VBAならできます。Charactersというプロパティがあるから、文字列の一部を捉えられるからです。 標準モジュールに Sub test01() For i = 1 To 3 x = Cells(i, "G") 'G列にデータがあるとして、 MsgBox x p = InStr(x, "御中") MsgBox p Range("G" & i).Characters(Start:=1, Length:=(p - 1)).Font.Size = 23 Next i End Sub データはA列に 田中株式会社 田中伸株式会社 田中建設工業伸株式会社 とあるとして 関数で =A1&"御中" で御中をくっつける。 これをG列に「値のみ複写」しておく。 上記のVBAを実行。 御中以外の部分が、字が大きくなる。

emaxemax
質問者

お礼

ありがとうございます。やはりVBAでいくしかないですか。

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.1

> 御中を別のセルにできればよいのですが、顧客名の長さが不明なので数式で > &" 御中 としています。 顧客名の長さが不明なのは当たり前の話で,普通は別のセルにします. 顧客名は右詰,御中は左詰で御中にはインデントをつけるか,御中の前にスペースを入れておく...何が問題なのかもわかりません.

emaxemax
質問者

お礼

早速ありがとうございます。 顧客名は右詰?どのセルにでしょう? 通常は、横書きの場合、宛名は左側に来ますよね。たとえばC列に右詰で持ってくると、A、B、Cの3列ありますからたいていは収まりますが、収まらない場合は頭が切れてしまいます。そして怖いのは頭の切れたことに気づかないことです。もし自分の会社名の頭の切れた見積書をもらった顧客はどう思いますか? ABC3列を結合して、1つのセルにし、縮小して全体を表示にしたら、差出人名のフォントより小さくなる可能性があります。これも問題です。 では、一番長い名前を想定してE列あたりに持ってくる? すると通常の長さの宛名は、本来来てほしい位置に表示されなくなります。 これが別のセルにできない理由です。

関連するQ&A

  • excel 特定セルの数式表示

    通常A1セルに=1+1と数式を入力するとセル表示は2となります。 これを=1+1と数式を入力したときに、同じA1セルに文字列ではなく=1+1と表示だけしたいのです。 別セルにてA1セルの計算結果2を参照していますので・・・・ ツール→オプション→表示→数式でシートのすべての数式を表示できることは知っていますが、そうでなくて一部のセルだけ表示したいのです。 ご教授の程宜しくお願い致します。

  • Excelで数式内の文字色を一部だけ変更したい

    数式内の文字列の色を一部だけ変更したいのですが、どなたかご存知の方ご教授ください。 セルごと文字色を変更することは可能なのですが一部だけの変更ができません。 下記、例をあげます。 数式:="No"&A10&"を参照" 表示:No10を参照 上記のNo10の文字色を赤等に変更するにはどうしたらよろしいでしょうか。

  • Excelを開くと文字の表示がおかしい!

    タイトル通りなのですが、Excelファイルを開くとたまに入力された文字が セルに入りきらないぐらいのフォントサイズになってることがあります。 別のシートを選択してまたそのシートに戻ると表示は正常に戻っています。 これって何故そんなことになるんですか? どういった時になるんでしょうか? Excelのバグでしょうか…。

  • エクセルの数式について

    エクセル2007にて、企業用の住所録を作成しています。 何百件かある住所録の中から、検索して一つの住所録をラベルシートを使って住所を印刷したいと考えています。調べた結果、ワードの差し込み印刷機能を使うと便利のようですが、使い勝手など総合的に判断した結果、この方法は諦めました。 そのため、エクセルで全てを作ろうとしましたが、壁にぶち当たってしまいましたので、アドバイスを頂けると幸いです。 現在、sheet1にデータベース(住所録)。sheet2にデータ抽出ページ。sheet3を印刷用のページ。にそれぞれ設定しています。(sheet2で抽出と印刷が出来ればベストでしたが、印刷時に選択した部分の印刷にしたくないので諦めました) 質問ですが、sheet2のデータの関数に関してです。宛て名が企業名のみの一行のものと、企業名・担当者名の二行のものがあります。データベースのシートにあらかじめ「御中・様」を宛先と共に入力しておくのも一つの方法だと思いますが、データを他でも共有できるよう「御中・様」の付け足しをsheet2で行いたいと考えています。 企業名に関しては、 =VLOOKUP(C1,データベース!$A$2:$AB$1001,L1)&" 御中" の数式でうまくいきました。  C1…抽出するデータ(住所録)の番号  L1…抽出するデータ(住所録)のセルの位置 ただ、担当者に関しては、 すべての住所録において担当者までの記載がないため、上記と同じ式を用いると、当たり前ながら「様」のみが表示されてしまいます。 この「様」をデータ(住所録)がない場合は、表示しないようにするには、数式をどのように入力すればよいのでしょうか?IF関数を使ってみましたが、うまくできませんでした。 こちらが現在入力している、担当者名ようの数式です。 =VLOOKUP(C1,データベース!$A$2:$AB$1001,L2)  C1・L1のセルの意味は上記の企業名と同じ意味です。  ちなみに、ゼロ値のセルにゼロ表示するのチェックは外していますので、データがない場合は、空白になっています。 文章が長くなってしまいましたが、よろしくお願いします。

  • excelで、数式がそのまま文字として張り付いてしまう!

    Sheet2の1行目のセルに A1には=Sheet1!A1、B1には=Sheet1!C1、C1にはSheet1!E1 というSheet1の1列おきを引っ張ってくるわりと簡単な数式を入れました。 A~Cはうまく引っ張ってきたのですが、 D列を新しく作ろうと思い、A1のセルをコピペして、 =Sheet1!A1のAをGに変えたら、 D1のセルに数式が「=Sheet1!G1」というふうに そのまま文字として張り付いてしまいました。 これはイカンと思い、D1のセルに直接数式を打ち込んだりしましたが、 状況は変わりません。 ちょっと困っています。 よろしくお願いします。

  • エクセルの数式を教えてください。

    請求書内訳を作成しているんですが、 どの数式を使ったら、下記の操作ができるかがわからず、つまずいています。 ■Sheetの詳細 Sheetは2種類あります。 Sheet1:請求書内訳 (顧客名、契約金額、合計金額)*顧客へ送るもの。 Sheet2:顧客名のコード表 (顧客コード、顧客名、契約金額) ■したいこと 「顧客コードを入力すると、顧客名と契約金額が表示される仕組み」を作りたいのです。 VLOOKUPを使ってみたのですが… Sheet2のデータを参照し、Sheet1の顧客名欄に顧客名を表示することはできましたが、 Sheet1へのコードを入力により、Sheet1へデータ(顧客名)を表示させる(Sheet2より引き出す)ことができませんでした。 *Sheet1の顧客名欄で使用した式はこちらです。 =VLOOKUP(Sheet2!A4,Sheet2!$A$4:$C$44,2,FALSE) 説明が分かりにくくて申し訳ありませんが、Sheet1へのコード入力のみで、 Sheet2からSheet1へデータ(顧客名、契約金額)を抽出、表示することはできるのでしょうか?

  • Excel 文字サイズ変更

    Excel 文字サイズ変更です。 表示したいのは、例『No.4563』(No.から数字の下に下線を入れたもの)です。 数字は一つずつ変えたいので、セルA1『4563』、セルB1『=A1+1』、セルC1『=A1+2』と入れています。 セルA1の「セルの書式設定」の「ユーザー定義」に『"No."0』、「フォント設定」に「下線」指定をすれば、下線の引いてあるNo.4563が表示出来ました。 この時、No.と数字が同じ大きさになってしまいます。No.だけをユーザー定義から小さく表示する方法を教えてください。他に方法があれば、そちらもご教授くださいませ。 宜しくお願い致します。

  • エクセル文字サイズ変更を他のシートに参照させるには

    http://okwave.jp/qa/q6527922.html 過去にこのような質問からエクセルで顧客毎の単価一覧と、納品、納品(控)、請求、と、 シートをコピーして作りました。 で、シート2で納品書を作りその入力内容が納品(控){シート3} 請求{シート4}に 自動で入力するように参照させています。 顧客名の中に、名前が少し長くセルに収まらない時があるので シート2の納品書でそのセルの文字のサイズを小さく変更したんです。 しかし、納品(控){シート3}と請求{シート4}は、文字のサイズが変わらず そのままなんです。 シート3、シート4も同じように同時に文字のサイズが変わるようにするには どうすればいいのでしょうか? よろしくお願いします。

  • 数式が表示されてしまう/値が表示されない/エクセル/

    先人の知恵をお貸しください。 エクセルで、既存のシート(自分ではない別の誰かが作成、つまりエクセルのバージョンは異なる可能性はある)に数式が入っています。数式といっても、単に別のセルの参照(eg. "=A1")なんですが、この数式を編集して別のセルを参照しよう(eg. "=A1"を"=B2"に変更)とすると、なぜか変更後はセルの表示が数式そのままになってしまいます。つまり再計算後のセルは"=B2"と表示されてしまいます。 ただし表示がおかしいだけで、きちんとそのセル(B2)を参照しているようです、F2をおしてからF9を押すと望みどおりの値を表示するので。 恐らく、ツール>オプション>表示>”数式を表示する”の状態になっていると思うのですが、それにチェックを入れた覚えもないし、実際入っていません。 また、F2を押して再編集するのではなく、ほかのセルをコピーして貼り付けた結果は、数式が表示されず、きちんと計算結果(参照先のセルの値)が表示されます。 大変わかりにくい記述で申し訳ないのですが、もし同じような症状になったことがあられる方がおれば、解決策を教えていただけると助かります。

  • Excelでファイル参照を数式で表現したい

    Excel上で数式でファイル参照を表現し、 参照先のセルの値を表示させたいのですが、文字列として表示されてしまいます。 どのように記述すれば解決できますでしょうか。 現在、以下の方法を試みていますがうまくいきません。 ・A1セルに参照先のフォルダパスを記入 (例: D:\Application\ ) ・B1セルに参照先のファイル名を記入 (例: A.xlsx ) ・C1セルに参照先のシート名、セル番地を記入 (例 : Sheet1'!$A$1 ) ・D1セルにA1~C1セルを組み合わせた数式を記述 ="='" & A1 & "[" & B1 & "]" & $C$1 ※ 数式として次のようになります。 ='D:\Application\[A.xlsx]Sheet1'!$A$1 D:\Application\A.xlsx のSheet1のA1セルに test と記述されいる場合、 ここでD1セルに test と表示されてほしいのですが、 上記の数式が、そのまま文字列として表示されてしまいます。 A1~D1の書式は全て「標準」に設定しています。 また、このD1の値を他のセルに値として貼り付けて、Enterを押せば、test と表示されます。 数式に誤りはないはずなのですが、D1セルで直接 test と表示する方法はあるのでしょうか。

専門家に質問してみよう