- 締切済み
エクセル2000です。
エクセル2000です。 A列に項目ナンバー、B列に項目a、C列に項目bがある表があります。 A列2行目から項目ナンバー入力で、例えば22-100-01から03、22-201-01から05等。 ナンバーの頭(ここでは22-100と22-201、22-202・・・)があり、そのあとに副番(-01から-02・・・-10等)を入れます。 行いたいのは項目ナンバー22-100の項目aで副番-01だけを黒文字色(表示)、-02以下を任意色(白で非表示等)、項目ナンバー22-201も同じようにしたいです。現在は副番-02以降を1文字づつ色変更しています。項目ナンバーの副番は項目aの行数によってまちまちです。 入力順序は項目ナンバー、項目a、項目bです。このようなことできますでしょうか? よろしくお願いします。 行 A B C 1 22-100-01 ああ はれ 2 22-100-02 ああを非表示 あめ 3 22-101-01 いい ゆき 4 22-101-02 いいを非表示 くもり 5 22-101-03 いいを非表示 おおあめ 6 22-110-01 うう ああゆき 7 22-111-01 ええ こさめ
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- keithin
- ベストアンサー率66% (5278/7941)
ではB列を列選択し, 書式メニューの条件付き書式を開始し, セルの値が → 数式が に変えて 右の空欄に =RIGHT($A1,3)<>"-01" で書式ボタンでフォントの色を白などに変えるようにしてみてはいかがでしょう。 同じ行のA列を見て右3文字が「-01」ではない場合に,フォントの色を白くします。 マクロの意味は, A列の右2文字が「01」では無いA列の各セルについて, そのセルの7文字目,8文字目,9文字目の3文字のフォントの色を白くしています。
- keithin
- ベストアンサー率66% (5278/7941)
補足のご質問: >マクロ実行すると 行 A B 2 22-100-01 111 3 22-100 222・・・非表示にならなっかた -02を表示したい 4 22-100 333・・・ 同上 -03を表示したい 5 22-101-01 444 6 22-101 555・・・非表示にならなかった -02を表示したい 7 22-101 666・・・同上 -03を表示したい >A列の-02以降でB列-02以降の文字を非表示はならず、A列の-02以降が非表示となりました・・・。 元のご質問: >…項目aで副番-01だけを黒文字色(表示)、 >-02以下を任意色(白で非表示等)、 : >現在は副番-02以降を1文字づつ色変更しています。 元のご質問でリクエストされている,全く問題なくその通りの結果が得られているように見えます。 「-02以降」を白で非表示にしたいのかしたくないのか,B列をいったい「どうしたい」のか,もう一度正しく目に見えるようにお話しください。 #もしかすると,こちらのご相談投稿は一度仕切り直しで解決して閉じる操作を行い,改めて正しい「変更前」『変更後」の姿を添えてご質問を投稿し直してみると,もっとよく目が見える他の皆さんのアドバイスが寄せられるかもしれません?
- MackyNo1
- ベストアンサー率53% (1521/2850)
B列のデータで上のセルと同じ値が入力されている場合に、そのセルのフォントの色を白くして見えなくしたいなら、以下のような条件付き書式で対応します。 B2セル以下を選択し「書式」「条件付き書式」で「数式が」にして「=B1=B2」と入力して「書式」からフォントの色を白にします。
- keithin
- ベストアンサー率66% (5278/7941)
セル内の文字列の一部だけに書式を施す,については残念ながら手動でしか行う手がありません。 #一応可能性として。 A列を列選択した上で Ctrl+Hで置換を開始し - を Ctrl+J- に全て置換 22Ctrl+J- を 22- に全て置換 Ctrl+J-01 を -01 に全て置換 列のセルの書式設定の配置タブで折り返して全体を表示するにチェック 上下の配置を上詰めに変えておく (手順でCtrl+Jはコントロールキーを押しながらJのキーを押す。ダイアログの中で。) のような見せ方はあるかもしれません。 でも,むしろ言えばマクロを使ってつるつるっとやらせてしまった方が,簡単は簡単かなと思います。 手順 ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける Sub macro1() Dim h As Range For Each h In Range("A2:A" & Range("A65536").End(xlUp).Row) If Right(h, 2) <> "01" Then h.Characters(7, 3).Font.ColorIndex = 2 End If Next End Sub ファイルメニューから終了してエクセルに戻る ツールのマクロのマクロで今登録したマクロを実行する 何度も使うならツールメニューのマクロのセキュリティを中にしておき,マクロを使いたいときはマクロを有効にしてブックを開いて使う。
補足
No.1さん。 早々にご返事ありがとうございます。 以下の件よくわかりませんでした。ネットでCtrl+Jの内容も確認しましたが・・・ >A列を列選択した上で Ctrl+Hで置換を開始し - を Ctrl+J- に全て置換 22Ctrl+J- を 22- に全て置換 Ctrl+J-01 を -01 に全て置換 列のセルの書式設定の配置タブで折り返して全体を表示するにチェック 上下の配置を上詰めに変えておく (手順でCtrl+Jはコントロールキーを押しながらJのキーを押す。ダイアログの中で。) のような見せ方はあるかもしれません。 ・・・以下のマクロ実行してみました。 Sub macro1() Dim h As Range For Each h In Range("A2:A" & Range("A65536").End(xlUp).Row) If Right(h, 2) <> "01" Then h.Characters(7, 3).Font.ColorIndex = 2 End If Next End Sub ・・・・結果として 行 A B 2 22-100-01 111 3 22-100-02 222 4 22-100-03 333 5 22-101-01 444 6 22-101-02 555 7 22-101-03 666 を入力し、マクロ実行すると 行 A B 2 22-100-01 111 3 22-100 222・・・非表示にならなっかた -02を表示したい 4 22-100 333・・・ 同上 -03を表示したい 5 22-101-01 444 6 22-101 555・・・非表示にならなかった -02を表示したい 7 22-101 666・・・同上 -03を表示したい A列の-02以降でB列-02以降の文字を非表示はならず、A列の-02以降が非表示となりました・・・。 よろしくお願いします。
お礼
アドバイスありがとうございます。 すいません、私の質問内容が間違っていました。 A列の副番は残し(ここが間違いでした。)、 B列の項目内容でA列副番の-02以降に該当する項目を非表示するようにしたかったです。 大変失礼しました。 一度仕切り直したいと思いますが、その前に、 もしよければ、アドバイス頂いたマクロの内容についての意味等を教えていただけないでしょうか? あるいは参考になるサイトを教えて頂ければ幸いです。