
【Excel2003で条件付き書式3つ以上の場合について】
似たような質問は多いのですが、知識がないためそれを応用できなかったので、質問させてください。
Excel2003では条件付き書式は3つが上限ですが、今回4種類書式を指定したいのです。
4つとなるとVBAになる、というのはいくつも過去の質問で見てきたのですが私が見たものはどれも入力した文字に対して色を変えるというものでした。
私のやりたいのは指定した文字が入力されると、同じ行の別の列のセルに着色というものなのです。
現在使用しているリストの状態を説明します。
A列はダブルクリックすると指定した文字が入るようなっています。それが入力されると同じ行のB~F列は条件付き書式で取り消し線がはいるようになっています。
また、G列に日付が入ると日付を入力したのと同じ行のB~F列セルが赤色に、H列に日付が入ると緑色に変わり、K列に日付が入ると色が消えます。
つまりB~F列には条件付き書式を3つ使用しているのですが、今回リストを作り替えるにあたって新たにG列に日付以外の特定の文字か記号(仮に○とします)が入力された場合は現状のようにB~F列セル色を赤にするのではなくB~F列に入力されている文字の色を赤くしたいのです。
そして特定の記号以外、通常は日付なのですが、それを入力した際は今まで通りB~F列のセルの色を赤くしたいのですが・・・
他についても今まで通りH列に入力すれば緑、K列に入力すればすべて色が戻るようにしておきたいです。
取り消し線だけはどの状態の時にもA列に入力がある限り残る形で、です。
もっとうまく説明できればいいのですが、Excelにあまり詳しくないためこのような説明しかできませんでした。
現在は条件付き書式でやっていますが上記したのと同じ動きさえできれば現在入力している関数などが変わっても問題ありません。
日付入力状況が色でわかるためのリストで、特にリスト上で計算しているものではありませんので。
このような場合はやはりVBAとかになるのでしょうか。またその場合はどういった形で入力すれば希望の形になるのでしょうか。。。
Excel初心者のため何もわかりません。
以上拙い説明で申し訳ありませんが、ご教授よろしくお願いします。
No.2ベストアンサー
- 回答日時:
>A列はダブルクリックすると指定した文字が入るようなっています。
これはVBAのWorksheet_BeforeDoubleClickイベントで設定されてるのでしょうか?
(そうであればシートモジュールって解かると思うんですが念のため)
該当シートのシートタブを右クリック、[コードの表示]でVBE(VisualBasicEditor)が起動し
無地のウィンドウが開きますからそこに以下コピーペーストしてください。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Set Target = Intersect(Target, Me.Columns("A"), Me.UsedRange)
If Not Target Is Nothing Then
For Each r In Target
r.Offset(, 1).Resize(, 5).Font.Strikethrough = (r.Value <> "")
Next
End If
End Sub
'↑ここまで
A列の値が変更される度に自動的に実行されるイベントマクロです。
A列に入力があると同じ行のB~F列に取り消し線を入れます。
条件付き書式の設定から取り消し線に関する条件を削除してください。
Me.Columns("A")...の部分でA列全体を指定してますから
A1:A100など、もっと限定的な範囲の場合は
':
Set Target = Intersect(Target, Me.Range("A1:A100"), Me.UsedRange)
':
のように修正してください。
既に入力してあるデータに反映させる為には、初回に1度だけ下記マクロを走らせます。
Sub test()
Dim Target As Range
Dim r As Range
Set Target = Intersect(Columns("A"), ActiveSheet.UsedRange)
If Not Target Is Nothing Then
For Each r In Target
r.Offset(, 1).Resize(, 5).Font.Strikethrough = (r.Value <> "")
Next
End If
Set Target = Nothing
End Sub
No.3
- 回答日時:
エクセル2003以前では条件は3つしか設定できないのは動かしようがありません。
ですからエクセルではそれ以上望む場合は、エクセルの条件付き書式ではありません。
ですから長々とそれに対する確認的記述はやめましょう。一応質問文章表現は、エクセルを判っているものに向かって、が基本ですから。
2007や2010に乗り換えれば条件の数では解決するでしょう。
そういうことで、2003ではVBAなどによらないとなりません。
>Excelにあまり詳しくないためこのような・・
エクセルと直接関係ないことで、エクセルに詳しくないと逃げ口上をせず、しっかり整理して質問してください。説明が長々していて文章が整理されてません。
現状はどうあれ、変更(改善)したいなら、変更後を中心にしたいことを記述するで済むのではないですか。
場合分けを適切に記述し、箇条書きで、この場合はこう(鳴るようにしたい)と記述してください。
>関数などが変わっても問題ありません
関数では、セルのパターン色や、セルのフォント色や取り消し線を左右することは出来ません。エクセルが良く判ってない一兆候です。関数はセルの1つの値を作り出すだけの機能です。
ーーー
VBAでは表が完成してから、条件に従って質問のように整える・する(バッチ処理)のは簡単ですが、そういうニーズの場合は少なく、動的に、操作に即時反応性が求められる場合でしょう。
だからエクセルVBAでいうイベントという考えを使ってコードを書くことになると思いますが、いま在る
シートのセルの
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
にコードを書くことになると思うが、これは余りお勧めできません。
普通の場合は思い通りになりますが、セル、行、列の削除、移動・貼り付けなどいろんなことがシートで行われる(間違っての場合を含む)のに、それに対処するようコードを書くのは、VBA熟達者でも難しいし、質問者の出来るレベルではありません。
ですからしばらくはあきらめざるを得ないでしょう。
すべきことは
(1)論理的に整理してわかりやすい運小を書く訓練
例示して説明する訓練
(2)上記ChangeイベントでSheet1のシートタブで右クリック、「コードの表示」をクリックして現れる画面に下記をコピペ
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then 'A列なら
MsgBox Target.Address & " Change"
End If
End Sub
シートのデータ(上記例ではA列データ限定)などを色々セルのデータなど触って見て、メッセージが出るかどうか、適切かどうか、徹底的に実験して、どうしたらどうなるを実感してください。
If Target.Column = 1 Then をいじくることで、セル限定、行限定などでイベントを捕まえることが出来ます。
それで上記が使えそうなら
(3)エクセルには、マクロの記録という仕組みがあります。
これを使って、下記などは、どういうコードになるか調べて勉強のこと
・フォントに取り消し線を入れる
・セルのパターン色を赤くする・フォント色を赤色にする(その他の色にお場合は)
・色をもどす(白色で良いのか、その変更前の状態なのか。これは難物)
・入力されたデータが日付なのかの判別(これはマクロの色区では作れない。WEB照会)
Googleで「vba 日付データ 判別」
http://officetanaka.net/excel/vba/cell/cell02.htm など
・同じ行をどう捉うか(Target.Rowがヒント)
・ダブルクリックされたかどうか(これが必要か質問では明確でない)捉える必要があるか
・その他前記でもれているものがあればそれを
ーー
あと基本的なことで
・シートの捉え方
・セルや行。列の捉え方
などの学習も必要です。
ーー
私見では、質問者のレベルは、講習でも行って勉強しないとだめ・無理なレベルではないかな。
No.1
- 回答日時:
残念ながらおっしゃる通り書式は3種類までです。
(条件は4種類以上可能です)数値の大小でそのセルなら書式設定でも可能ですが(代表例.文字を赤にする)
ご質問の場合は無理ですね。
VBAを扱うことになりますが、当方もあまり詳しくありません。
(エラー処理に追われていまいちだった)
代案です。
A列の前に1列挿入して、
=IF(G2="○","◆問題発生◆","")
としてA列のフォントを太字で赤くしておく
といった条件付き書式以外で目立ちやすい方法を使い、
発想を転換させることができないでしょうか?
参考まで
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 条件付き書式 別のシートで色付けされたセルデータの転記漏れを防ぐ書式を入れたい 4 2022/04/22 06:36
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) エクセルで条件付き書式を使わずにセルの文字の色を変える方法を教えて下さい 8 2023/07/28 01:15
- Excel(エクセル) 条件付書式 Sheet1からSheet2に転記した時の転記ミスを反映させたい 5 2022/05/21 09:52
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) Excelについて▶あるセルに文字を入力すると、別のセルに色がつく(条件付き書式) 1 2022/03/27 16:43
- Excel(エクセル) エクセルで文字列と数字が混在する列に書式設定したい。 3 2022/12/19 09:11
- Excel(エクセル) マクロ、条件付き書式のfont.color 1 2023/03/28 01:10
- Visual Basic(VBA) vbaで条件付き書式を設定したときの適用範囲について 1 2023/07/17 23:14
- Excel(エクセル) エクセルで隣(右or左)のセルと同じ文字色にしたい 2 2022/12/13 11:33
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SUMIFとCOUNTIFを合わせたよう...
-
ある一定時間を超えた場合の超...
-
エクセルでの複数条件下での標...
-
エクセル2003 MONTH関数で
-
エクセルで年月の合計の関数を...
-
【スプレッドシート】指定の日...
-
エクセルにて「週」から日付を...
-
エクセルで、一つのセルに二つ...
-
エクセルの時間入力を簡単にす...
-
エクセル くじ引きの口数が別々...
-
excelでの文字を隠す方法
-
複数連続した列幅や行高を一発...
-
エクセルで「ぶら下げ」書式を...
-
EXCEL 経過年数の平均を求めた...
-
時間帯ごとの集計をしたいがエ...
-
SUMPRODUCT関数 文字列を含ん...
-
1つのSUMIFSをSUMで括った数式...
-
隣のセルに入力したら自動的に...
-
SUMIF関数の結果が0になってし...
-
エクセルVBAで列のまとめ計算
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SUMIFとCOUNTIFを合わせたよう...
-
ある一定時間を超えた場合の超...
-
隣のセルに入力したら自動的に...
-
エクセルでの複数条件下での標...
-
【スプレッドシート】指定の日...
-
エクセルで年月の合計の関数を...
-
エクセルで、一つのセルに二つ...
-
EXCEL 経過年数の平均を求めた...
-
エクセルにて「週」から日付を...
-
エクセルで角度の計算できますか?
-
複数連続した列幅や行高を一発...
-
Excelの表以外が暗い?
-
エクセル指定日付の数値を別シ...
-
エクセルで「ぶら下げ」書式を...
-
Excel:月またぎを含む日数の差...
-
エクセル シフト表 6連続勤...
-
Excelのセルにカレンダーの月日...
-
ある数値から始まるものをカウ...
-
excelでの文字を隠す方法
-
時間帯ごとの集計をしたいがエ...
おすすめ情報