• ベストアンサー

EXCEL2003で、セルに式で表示した文字の一部の文字の表示色を変更したい

EXCELでのセルの書式設定について、ご教授ください。 自分の職場で使用している、EXCEL2003で作成された自主警備点検表を、EXCEL2003のシートに移植しました。 元データは順ごとに1枚のシートで、1ヶ月分作成するには、日にちのところを全て書き換えなければならない、アナログ式のシートです。 月末はいろいろな表を作成するため、各表ともシンプルかつ簡単に作成できないかと思い、簡単な設定表で年と月、最初の日の曜日を指定すれば、各旬のシートが作成され、後は印刷するだけ、と言うようにしました。 改造したファイルは、旬ごと(10日毎)がA3サイズの用紙1枚で、1か月分が3枚のシートで印刷されます。 月はタイトルとして。「平成21年4月 上 旬分」というように表示され、日にちについては各シートとも「1の日(月)」といった書き方になっており、曜日だけ変更しなければなりません。これまではそのままセルに打ち込んでましたので、曜日は土曜日は曜日の文字の文字色を青に、日曜日と休日は曜日の文字の文字色を赤に変更し、他の曜日は黒文字にしていました。 年、月などは、専用の「設定」シートを作成し、ここで、年と月はリスト入力します。その月の初日である1日の曜日は、1を月曜日とし、数字でリスト入力します。 各日の曜日はこの設定シート内に旬ごとの1ヶ月のカレンダーを作り、ここに自動で日の対応する曜日が自動表示されるように設定し、自主点検表の日のところに、例えば =“1の日 ( ”&設定!B41$“ )” という式で取り込んでいます。 問題はこの自動表示にしたことで、曜日の「土」を青色印字にしたり、日曜日の「日」や祭日の曜日の文字を赤色印字にしたりできなくなったことです(これまでは、手作業で文字の一部を色指定していました)。 セルの書式設定で設定できないかと調べましたが、できそうにありません。 何か設定をする方法をご存知の方が居られましたら、ご教授ください。 現実にこのファイルを使用して印刷するのは、今月の月末になります。それまでに完全な物を作成し、できれば本格使用可能にしたいと思っています。

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

  • ベストアンサー
  • turuzou
  • ベストアンサー率33% (15/45)
回答No.4

No.3です、失礼しました、多分数式(関数)のみで、 文字列の中の一部の文字色を変更するのは、無理ではないかと? 別の列(補助列に)日付を入力(関数による表示)をしておけば、 条件付書式の設定で、対照のセル全てのフォント色を変更できますが? (条件付書式の設定 No.2さんの参照URLの下の方) 例えば (*) を別の列へ表示させ、そのセルには日付を入力、 書式の設定で、(*) と表示させ、さらに条件付書式で、フォント色を変更等 マクロなら希望の表示に変更できるので、マクロをお勧めしました。 マクロを使用したことがあるのなら、下記も参考になると思われます、 お時間のある時に、御覧になってみては? すぐに役立つエクセルVBAマクロ集 - Excel VBA Macro Collection http://www.asahi-net.or.jp/~zn3y-ngi/ の セル制御 http://www.asahi-net.or.jp/~zn3y-ngi/YNxv20005.html 等

noname#132927
質問者

お礼

有り難うございます。 やはりマクロでなければ出来ませんか。 私は20年以上前、まだソフトがMS-DOS(Windowsの前身)で操作していた頃、NEC製のN88 Disk-BASICを使っていたことがありました。 その後Visual BASICを経てWindowsで動くBASICも多少やりました。 Visual Basic For Windowsをかじった頃、自分で作っても効率が悪いだけであったことも有り、プログラミングをやめてしまいました。それから約10年。 もう覚えていません。ExcelのマクロがVisual Basic For Windowsから派生したVBAであることは知っていますが、さすがにもう私の知識が錆びていて、使えない状態です。 今はキー操作を覚えさせるキーボードマクロまでしかできません。 残念ですが、諦めるしか、なさそうですね。 ありがとうございました。

その他の回答 (4)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.5

関数では無理 マクロでよければ 詳細が掴めないので、取り敢えずサンプル Sub test() ActiveCell = "1の日 ( " & [設定!B41] & " )" If InStr(ActiveCell, "(日)") > 0 Then ActiveCell.Characters(Start:=InStr(ActiveCell, "(日)") + 1, Length:=1).Font.ColorIndex = 3 ElseIf InStr(ActiveCell, "(土)") > 0 Then ActiveCell.Characters(Start:=InStr(ActiveCell, "(土)") + 1, Length:=1).Font.ColorIndex = 5 End If End Sub 参考まで

noname#132927
質問者

お礼

やはり関数では無理ですか。 マクロは、No.4さんのお礼に書いたとおり、錆びてしまったVBの知識ではどうにもなりません。当時諦めたので、VBA血押しての拡張部分は覚えませんでしたので。 キーボードマクロではどうにもなりませんし。 書き込んで戴いたマクロは参考にさせて戴きます。 ありがとうございました。

  • turuzou
  • ベストアンサー率33% (15/45)
回答No.3

回答ではありませんが 雛形はこんな感じにしてみては? >月はタイトルとして。「平成21年4月 上 旬分」というように表示 上記セル(例えばA1)へ 2009/4/1 と入力 セルの書式設定のユーザー定義で ggge"年"m"月 上 旬分" として >「1の日(月)」といった書き方 上記セル(例えばB3)へ =DAY($A$1)&"の日 "&TEXT($A$1,"(aaa)") (2の日(*)は =DAY($A$1)+1&"の日 "&TEXT($A$1+1,"(aaa)") とか?) (2の日(*)は =DAY($A$1)+Row(A1)&"の日 "&TEXT($A$1+Row(A1),"(aaa)") を、オートフィルで下へとか?) 等として、Sheetをコピー→Sheet名の変更→ 「コピー→値の貼り付けで数式を消す→文字の色を変更」を手作業で 「」の中は(手作業全て)マクロにしてしまうとか? 手作業を分割してマクロの記録で記録し、記録したマクロを新たな質問に貼り付け、うまく動作しない内容を書き添えて質問すれば、マクロに詳しい方々から回答して頂けると思います。

noname#132927
質問者

補足

ご教授内容は、参考にさせて戴きます。 私の職場は私以外はPCは何とか動かせるだけと言う人2名でこのシートを使います。1名は過去所長クラスを経験した方ですが、既に定年退職、現在は再雇用制度で現職場にいます。 意図としては、今一人は現職ですが、あと半年で定年になります。二人とも、PC操作は超初心者です。 設定シートで年度、月、スタートの曜日を入力すると、既に作成され、式で日などを取り込むように作った上旬、中旬、下旬のシートに反映され、その後、設定以外のシートを印刷すればよい、と言う作りにしたいのです。 > Sheetをコピー→Sheet名の変更→ 「コピー→値の貼り付けで数式を消す→文字の色を変更」を手作業で 「」の中は(手作業全て)マクロにしてしまう と言った作業を、その人たちがするのはほとんど不可能です。 私自身も、ある程度は式を扱いますが、マクロはキーボードマクロがせいぜいで、属性をいじるなどまるで出来ません。 シートのコピー、表示データの値化、その一部の文字の属性変更を手で行なわず、簡単の式の設定、セルの書式設定で、全て自動で出来ないか、と言うのが今回の改造を始めた意図でした。

  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.2

直接の回答ではありませんが 次のサイトを参考にしてください。 月間予定表の作成例 http://www.eurus.dti.ne.jp/~yoneyama/Excel/jituyou/gekkan-n.htm

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

カレンダー一例です。 エクセルの日付機能(1900/1/1からのシリアル値で管理)を利用すると曜日、土日及び大小月が日付関数を利用すれば設定できますが如何でしょうか。 以下のURLを参考にして下さい。

参考URL:
http://www.eurus.dti.ne.jp/~yoneyama/Excel/ex-q-a/q_keisan_hiduke.html#seijinnohi
noname#132927
質問者

補足

お教え戴いたHPは、偶然にもNo.2さんと同じ物のようです(指定場所は異なるようですが)。 ただ、大変参考になるので、ブックマークに登録させて戴きました。 大小の月は、mod関数で4、100、400で割ったときの剰余を算出し、法則をIF文で作ってやれば、覚えにくい関数を使わないでも出ますので、私は大概この方式を使っています。 少し書き方が判りにくかったですね。 シリアル値を使えば、曜日がでるのも判るのですが、私は表示(印刷)時に一つのセル内に 「1の日 (土)」 と表示した時は、「土」という文字のみが青表示、 「2の日 (日)」 5月3日なら「3の日 (火)」 と表示して、「日」「火」と言う文字のみ赤表示、平日は全ての文字が黒表示、土休日も曜日を表わす文字のみ指定色(土曜日が青、休日が赤)で表示したいのです。 複数のセルを使って曜日の文字のところのみ、土休日などでセルの属性を変化させると言うことも考えましたが、出来ている(会社が配布した)ファイルを大きく改造するのも難しいこと、セルを分けても、表示内容によって自動的に属性を変化させるすべが判らないこと、私自身が関数やマクロに疎いこともあって、上手く表示を変化させられなくて困っています。 何か方法をご存じの方が居られたら、よろしくお願いします。

関連するQ&A