- ベストアンサー
エクセルでセルの色を条件に使いたい
エクセルの表のなかに、たくさん色分けをしているのですが、 その色分けの色を変更したいと思っています。 ・今赤で塗っているところを緑に、今黄色または黒で塗っているところを青にという ふうに、複数の変更をしたいのですが、どうしたらよいでしょうか。 教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Excelには色を置換する機能はありません。(多分) どうしても置換したかったら、マクロを組むしかないと思います。 ↓面白そうだったので、作ってみました。(テストに時間かけてないのでバグありかもしれません。) Public Sub SelectSameColorCells() Dim SrchColor As Long Dim ReplaceColor As Long Dim SearchArea As Range Dim V As Variant Dim Ret As String '検索する色を取得する Ret = InputBox("検索する色、もしくは、検索する色が設定されたセルのアドレスを指定してください。" & vbNewLine _ & "例:255 (10進数で指定する場合)" & vbNewLine _ & "例:&H0000FF (16進数で指定する場合)" & vbNewLine _ & "例:A1 (セルのアドレスで指定する場合)" & vbNewLine & vbNewLine _ & "注:色の並びはBGRの順。&H0000FF=赤, &HFF0000=青。") Ret = Trim$(Ret) If IsNumeric(Ret) Then SrchColor = Val(Ret) Else SrchColor = Range(Ret).Interior.Color End If '置換後の色を取得する Ret = InputBox("置換後の色、もしくは、置換後の色が設定されたセルのアドレスを指定してください。" & vbNewLine _ & "例:65536 (10進数で指定する場合)" & vbNewLine _ & "例:&H00FF00 (16進数で指定する場合)" & vbNewLine _ & "例:A1 (セルのアドレスで指定する場合)" & vbNewLine & vbNewLine _ & "注:色の並びはBGRの順。&H0000FF=赤, &HFF0000=青。") Ret = Trim$(Ret) If IsNumeric(Ret) Then ReplaceColor = Val(Ret) Else ReplaceColor = Range(Ret).Interior.Color End If '検索対象となる範囲を取得する Ret = InputBox("検索の対象となる範囲を指定してください。 例:A1:Z100") Ret = Trim$(Ret) Set SearchArea = Range(Ret) '同じ色のセルを検索し、色を変更する For Each V In SearchArea If V.Interior.Color = SrchColor Then V.Interior.Color = ReplaceColor End If Next End Sub
その他の回答 (2)
- Naka
- ベストアンサー率44% (527/1181)
◆それまで何によって色分けをしていたのか、というのはバラバラなのでしょうか?? 通常、何らかの条件(曜日、計算結果など)によって色分けしていると思うのですが、その数式や値によって、「条件付き書式」を用いてはどうでしょうか?? そんなところしか、思い浮かびませんが。m(_ _)m
- y45u
- ベストアンサー率27% (140/516)
私もこの回答が知りたい! こういう事を仕事でちょくちょくやるのですが、手作業でコントロールキーを押しながら同色を選んで一括変換しか思いつかなくて・・・膨大な量になるとしんどいんですよねえ。
お礼
どうもありがとうございました。 こんな難しいことをしなくてはいけないのですね。。 いろいろ考えた挙げ句、手でやっちゃいました。 でも、勉強になりました。ありがとうございました。