• ベストアンサー

[Excel] 同一セル内にて文字列を加工したい。

こんにちは。 Excel にて、入力された文字を同じセル内で加工したいと思っています。 ”休赤”と入力されたら”休”(赤文字になっていると思ってください)に変更したいんです。 条件付き書式にて、”休赤”であったら赤い文字にするところまではできたのですが、その後”休”にするところがわかりません。 セルも一カ所では無くて、縦横ある程度の範囲になります。 また、条件(深青→深(青文字),準緑→準(緑文字)など)も、複数あります。 条件が多いので、「置換」は使わずに済ませたいと思っています。 同じセル内での加工、どうしても行いたいのでよろしくお願いいたします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_Change(byval Target as excel.range)  dim h as range  application.enableevents = false  for each h in target   select case right(h, 1)   case "赤"    h.font.color = vbred    h = left(h, len(h) - 1)   case "青"    h.font.color = vbblue    h = left(h, len(h) - 1)   case "緑"    h.font.color = vbgreen    h = left(h, len(h) - 1)   case else    h.font.colorindex = xlautomatic   end select  next  application.enableevents = true end sub ファイルメニューから終了してエクセルに戻る セルに「休赤」など、所定の文言を記入する。 #補足 >セル内での加工、どうしても行いたい それ限定なら、実際に加工するしか方法はありません。 ご利用のエクセルのバージョンが不明なので詳細は割愛しますが、エクセル2007以降を使い、条件付き書式のユーザー設定の書式で「休赤と記入されたら赤文字の;;;"休"と表示する」(他の文言+色も重ね掛けする)などのように設定する方法でも可能です。

sukeken
質問者

お礼

keithin さん、こんにちは。 これは、特に範囲指定がありませんが、今現在データが入力されたセルだけを見ていると言うことでしょうか? だとしたら、こうやってやるんですね…。 条件付書式もいろいろ触っては見たのですが、表示方法を変える…というのは思いつきませんでした。 教えていただいたふたつの方法、早速試させていただきます。 ありがとうございました。

その他の回答 (5)

回答No.6

置換は色の種類が多いので大変だとのことですが、10 色であれば 10 回置換すればいいだけですね。何色あるか不明な場合でも、オートフィルタの絞り込みで変化を見ていると、置換するたびに文字数が減っていくので、何回くらい繰り返せばいいか、だいたい分かるかと思います。 他には、マクロとの声もありますが、「同じセル内で」という条件を考え直すという手もあります。他の列に数式を記入して加工後の文字列を表示させ、それを元の列に値複写するなどします。例えば「休赤」のように必ず 2 文字だと決まっている場合であれば、次式。 B1 =left(a1) C1 =right(a1) ※ C 列から数式を除いて値化した後、A 列に条件式「=c1="赤"」の条件付き書式を設定 こう言うと、「文書の書式の変更が許されないので、作業列は用意できない」とおっしゃる方も多くいらっしゃいますね。しかし実際には、印刷範囲の外側とか、新たに追加した他のシートに作業列を設けることなら可能というケースが多いのではないでしょうか。

sukeken
質問者

お礼

MarcoRossiItaly さん、こんにちは。 確かに、このような方法はシンプルでわかりやすいのかも知れません。 なんでもかんでも、VBAマクロだ~と言うわけではないでしょうから。 いくつかの方法を教えていただきましたので、いろいろ試して見たいと思います。 ありがとうございました。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.5

>セルも一カ所では無くて、縦横ある程度の範囲になります。 条件付き書式はシート全域に対しても選択範囲でも可能です。 >また、条件(深青→深(青文字),準緑→準(緑文字)など)も、複数あります。 同じ範囲に複数の条件付き書式を設定できますので試してください。 >同じセル内での加工、どうしても行いたいのでよろしくお願いいたします。 入力されたデータを加工しなくても表示形式をセルの値で変更できれば良いのではないのですか? 質問の内容では必ずしもデータの加工を伴わなくてもよさそうに感じます。

sukeken
質問者

お礼

bunjii さん、こんにちは。 表示のみを変える…、それは考えませんでした。 確かに、見た目だけだと割り切れば、それも十分ありですね。 いくつかの方法を教えていただきましたので、いろいろ試して見たいと思います。 ありがとうございました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

>[Excel] 同一セル内にて文字列を加工したい。 基本的に入力したセルの値を入力後に自動的に(勝手に)異なるデータに変更するような機能はありません。 >条件付き書式にて、”休赤”であったら赤い文字にするところまではできたのですが、その後”休”にするところがわかりません。 どうしても、入力した値と違う値を「置換」以外の方法で変換したいなら、オートコレクトの機能を利用することになります。 Alt+T,Oのショートカット操作でエクセルのオプション画面を出し、「文書校正」から「オートコレクトのオプション」をクリックし、修正文字列に「休赤」修正後の文字列に「休」と入力しOKします。

sukeken
質問者

お礼

MackyNo1 さん、こんにちは。 オートコレクト…! ”こんにちわ”を”こんにちは”に自動的に直してくれるあれですね。 なるほど…。 ”休赤”に赤色が付いた後ならいくらでも変わってくれて良いので、試して見たいと思います。 ありがとうございました。

  • Cupper-2
  • ベストアンサー率29% (1342/4565)
回答No.2

んと・・・質問者さんのやりかたでは絶対に無理です。 Excelではセル内の文字列を編集するには  ・手動  ・マクロ(VBA) の二つしか方法がありません。 そんなわけで、結果的に置換をすることになりますがマクロを作ってくださいな。 それで解決します。

sukeken
質問者

お礼

Cupper-2 さん、こんにちは。 はい、手動かVBA、それは理解しているつもりです。 でもすぐにそのVBAマクロが思いつかない…。 と言うことで、質問してみたところです。 ここに集う皆さんなら、きっと解決してくださるであろうと勝手に期待しながら。 ありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 同一セル内で処理したいというコトであればVBAで可能です。 一例です。 >セルも一カ所では無くて、縦横ある程度の範囲になります 具体的なセル範囲が分からないので とりあえず A1~D10 セルの範囲でやってみました。 >また、条件(深青→深(青文字),準緑→準(緑文字)など)も、複数あります とありますが、今回は上記の3条件だけとしています。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてA1~D10セルにデータを入力してみてください。 (入力規則の「リスト」でも可能) Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Range("A1:D10")) Is Nothing Or Target.Count <> 1 Then Exit Sub Application.EnableEvents = False With Target If .Value <> "" Then Select Case .Value Case "休赤" .Value = "休" .Font.ColorIndex = 3 Case "深青" .Value = "深" .Font.ColorIndex = 5 Case "準緑" .Value = "準" .Font.ColorIndex = 10 End Select Else .Font.ColorIndex = xlAutomatic End If End With Application.EnableEvents = True End Sub 'この行まで ※ 3条件だけですがもっとたくさんのケースがある場合は 別Sheetに表を作成しておいてそれを利用する方法もあるかと思います。 今回はこの程度で・・・m(_ _)m

sukeken
質問者

お礼

tom04 さん、こんにちは。 そうです、これがやりたかったんです。 そして、とてもわかりやすいVBAです。 たくさんの方に答えをいただいていますので、いろいろ試して見て、自分なりのやり方を見つけていきたいと思います。 ありがとうございました。

関連するQ&A