• ベストアンサー

エクセルのセルの色を指定

エクセルにて、セルを指定して色をつけることは可能でしょうか。 (例) あるセルで、"×××(A2,赤)"としたら、A2のセルを赤くできる。 あるデータの中で、別のシートで計算した条件にマッチする部分をデータ中のセルを赤くすることで表現したいのですが。。。 よろしくお願いします。

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

  • ベストアンサー
noname#52504
noname#52504
回答No.7

とりあえず、#4さんに対する補足にある 「sheet1のあるセルにA2という文字列があり、この文字列から、sheet2のA2というセルに色をつけたい」 という部分については、 1.“sheet1のあるセル”に名前(例えば"name")をつける。 (nameセルには、色を変えたいセルのセル番地が、A1形式、相対参照の文字列として入力されるものとします。) 2.sheet2の全てのセルを選択する (自動的にsheet2!A1セルがアクティブになる…ハズ) 3.2の状態で、sheet2の全てのセルに対して条件付書式を設定する。 条件:(数式が)=SUBSTITUTE(CELL("address",A1),"$",)=name (cell関数で自セルのセル番地を絶対参照で取得 ⇒substitute関数で"$"を取って相対参照に変換 ⇒nameセルの文字列と比較) とすることで実現できます。 ※質問文にある(例)のように、セル番地がそのまま入っていない場合、文字列操作でセル番地や色を抽出しておく必要があります。 ※条件付書式を使う場合は、色の選択肢は3色までです。 Excel2003で動作確認。

neotong
質問者

お礼

ありがとうございました! エクセルって奥が深いですね。 無事解決しました。

すると、全ての回答が全文表示されます。

その他の回答 (7)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.8

こんばんは。どうやら一般処理では、ご満足いただけないようですね。 私は、#4 さんまでの話で、設定でほぼ問題が解決したかのように思えました。 しかし、もう、VBAで処理したほうが手っ取り早いような気がします。 >(例) >あるセルで、"×××(A2,赤)"としたら、A2のセルを赤くできる。 この×××と、() が、何を意味するのかわかりませんが、 まず、Setting_Button で、ボタンを設定してください。ボタンの設定場所に、以下では、Sheet1 に、J1セルが設定されるようになっていますから、任意で、その部分を書き換えてください。 次に、FindCell で、検索シートは、ボタンの付けたシートで、とデータ・ソースは、データのある場所のシートです。検索の入力セルとは、最初のご説明の「あるセル」のことです。 入力の仕方は、「A2,赤」とひとつのセルにいれてください。 (色の文字は、「文字を色インデックスに変える関数」にあるもののみに限ります。) なお、このマクロは、標準モジュールに貼り付けされることを予定していますから、Alt + F11 で、Visual Basic Editor 画面を開けて、次に、[挿入]-[標準モジュール] をクリックして、モジュール画面を開けたら、以下、点線内をすべて貼り付けて、上記のように、設定場所を好きなように書き込み、 Setting_Button のマウスカーソルをコードの中もってきて、F5 を押せば、該当するシートに、ボタンが出来上がっています。そうでない場合は、元のシート画面(Alt + F11)に戻って、ツール-マクロ-マクロ で、Setting_Button を選択してクリックしてください。 ボタンを二重には作らないでください。削除する場合は、ボタンを選んで、右クリック-切り取りです。 '--------------------------------------------------------- Sub Setting_Button() 'フォームボタン設定用のマクロ '改めてボタンを作る場合は、前のは削除してください。 Dim Sh1 As Worksheet Dim Lp As Double, Tp As Double, Wd As Double, Ht As Double Set Sh1 = Worksheets("Sheet1") With Sh1  With .Range("J1") 'ボタンの設定場所   Lp = .Left: Tp = .Top: Wd = .Width: Ht = .Height  End With  With .Buttons.Add(Lp, Tp, Wd, Ht * 2)    .Caption = "検索"    .OnAction = "FindCell"    .Visible = True  End With End With End Sub '-------------------------------------------------------- Sub FindCell()  'セルの色づけ  Dim Sh1 As Worksheet, Sh2 As Worksheet  Dim myFind As String, myAdd As String, myColor As String  Dim myCI As Integer  Set Sh1 = Worksheets("Sheet1") '検索シート  Set Sh2 = Worksheets("Sheet2") 'データ・ソース  With Sh1   myFind = .Range("D1").Value  '検索の入力セル   '例: A2, 赤   If InStr(myFind, ",") Then    myAdd = Mid$(myFind, 1, InStr(myFind, ",") - 1)    myColor = Mid(myFind, InStr(myFind, ",") + 1)    myCI = Color2CIndex(myColor)    Else    myAdd = myFind   End If   If myFind = "" Then    MsgBox "検索値を入力してください。"    Exit Sub   End If  End With  With Sh2   '前に設定した色を消す↓   .UsedRange.Interior.ColorIndex = 0   'パターンの色づけ   .Range(myAdd).Interior.ColorIndex = myCI   'Application.Goto .Range(myFind) '「'」を外すと、その場所に飛ぶ  End With  Beep End Sub Private Function Color2CIndex(ByVal myColor As String) As Integer '文字を色インデックスに変える関数 Dim myColors() As Variant, u As Long Dim Rtn As Variant myColors = Array("黒", "白", "赤", "黄緑", "青", "黄色", "ピンク", _ "水色", "茶", "緑", "藍", "黄土", "紫", "濃緑", "灰") u = UBound(myColors()) Rtn = Application.Match(myColor, myColors, 0) If Not IsError(Rtn) Then   Color2CIndex = Rtn Else   Color2CIndex = 1 End If End Function '----------------------------------------------------

neotong
質問者

お礼

丁寧なご説明ありがとうございます。 今回は、下記の方法で解決しましたが、そろそろVBAを身につけねばと思っています。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.6

下記はどういう意味ですか。 >あるデータの中で、 あるデータとは。 指定したセル範囲のこと? >別のシートで計算した条件にマッチする部分 どんな計算で、どんな条件ですか。 条件にマッチとはどんな状態ですか。大である・等しい・小さいなどのこと。 >データ中のセルを赤 データの中とは。範囲A1:H10で10より大であれば、セルの色を赤にするとか。 条件付き書式は勉強しましたか。 別シートの条件は指定できないが=Sheet2!A2のようにSheet1の値に持ってこれないですか。

すると、全ての回答が全文表示されます。
  • gutugutu
  • ベストアンサー率14% (184/1234)
回答No.5

たいした知識もないくせに度々でしゃばってm(__)mです。 VBAですね。私はまだ勉強中なのでGOODな回答が出来ませんが、プログラミング Visual Basic のカテゴリーでご質問されるのもよいかと思います。

neotong
質問者

お礼

何度もありがとうございました。

すると、全ての回答が全文表示されます。
  • gutugutu
  • ベストアンサー率14% (184/1234)
回答No.4

No.3さんありがとうございました。また一つ利口になりました。このやり方は以前計算式を生かしたままその隣のセルに結果を表示したい場合で回答があった時に確か見ました。こういう質問と関係のない回答をしてはいけないので 質問者さん [書式タブ]-[フォント・タブ]-色「赤」とありますが [フォント・タブ]でなくて[パターン・タブ]から赤を選ぶとセルが赤くなります。フォントだと文字が赤くなります。

neotong
質問者

補足

何度もありがとうございます。 端的に言えば、 「sheet1のあるセルにA2という文字列があり、この文字列から、sheet2のA2というセルに色をつけたい」ということです。 非常に大きなデータのため、データひとつひとつが条件に合うか否かというのを別のシートに保存しているわけではなく、そのデータの中でマッチするデータのセルを抽出しています。

すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

#2 のgutugutu さんの >よく読むと別のシートで計算した条件とありますね!条件付書式では出来ません。 それは、別シートを直接には指定できませんが、一旦、 別のシートを開いて、名前で指定してあげれば、条件付き書式で使えるようになります。 例: [挿入]-[名前]-[定義] で、 名前(W) 「KENSAKU」(任意) 参照範囲 「Sheet2!A1」 「OK」をクリック 後は、色を変える場所をひとつ選んで、 [書式]-[条件付書式] 「数式が  =B2=KENSAKU」 ←ここは、任意で作ってください。 [書式タブ]-[フォント・タブ]-色「赤」 などとすれば、色は変えられます。

neotong
質問者

お礼

ありがとうございます。 質問の仕方が悪くて申し訳ありません。 色を変える場所を自分が選ぶのではなく、計算の結果得られた”A2(2行A列)”というセル名から自動的に、色をつけたいのですが。。。

すると、全ての回答が全文表示されます。
  • gutugutu
  • ベストアンサー率14% (184/1234)
回答No.2

すみませんよく読むと別のシートで計算した条件とありますね!条件付書式では出来ません。失礼しました。

neotong
質問者

お礼

わざわざありがとうございます。 なかなか難しいですね。

すると、全ての回答が全文表示されます。
  • gutugutu
  • ベストアンサー率14% (184/1234)
回答No.1

条件付書式で出来るとおもいます。

すると、全ての回答が全文表示されます。

関連するQ&A