みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルのオートフィルタで色を選択できますか?

エクセルの2000を使っています。
オートフィルタで文字ではなく色を選択したいのですが可能でしょうか?
あと2003でできるような降順にそろえたりはアドインなどを使ってできないでしょうか?

投稿日時 - 2006-01-20 21:28:05

QNo.1909735

すぐに回答ほしいです

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

エクセルでは、セルの情報として、メモリに記憶される場所が、値と色属性(文字色、背景色)は別場所のようです。関数はもちろん、まだまだ、値(だけ)を問題にしている事項は多く、オートフィルタもその例のようです。しかしつまるところは、色を識別するコードという値で記憶されていると思いますが、場所が違い仕組みが違うということで、いつの日か、色も対象にフィルタが掛けられるよう、改定されるかも知れません。
さて、色のコードはColorIndexでは下記Test01を実行すると、第1行から第56行に色が出ますので、どの色かコードをしってください。
test02では、
If Cells(i, "A").Interior.ColorIndex = 6 Then
の6を自分の場合の色コードに変えてください(現在の下記の6は黄色を対象です)。
あとSheet1(対象のシート)、Sheet2(結果を出すシート)を計2箇所自分の場合に合わせて変更してください。
実質データは第2行目から始まると仮定してます。
セルの文字色を条件・対象にする場合はFont.ColorIndexに変えないとなりません。
結果で直したい点は、補足してみてください。
'---色コード見本
Sub test01()
For i = 1 To 56
Cells(i, "A").Select
With Selection.Interior
.ColorIndex = i
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Next i
End Sub
'---色識別抽出
Sub test02()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
d = sh1.Range("A65536").End(xlUp).Row
r = sh1.Range("IV2").End(xlToLeft).Column
K = 2
For i = 2 To d
If Cells(i, "A").Interior.ColorIndex = 6 Then
For j = 1 To r
sh2.Cells(K, j) = sh1.Cells(i, j)
sh2.Cells(K, j).Interior.ColorIndex = sh1.Cells(i, j) _
.Interior.ColorIndex
Next j
K = K + 1
End If
Next i
End Sub

投稿日時 - 2006-01-22 09:52:15

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

こんにちは。

オートフィルタで色を扱うには、色番号(ColorIndex )が必要です。

その場合は、Excel Ver4 マクロ関数を使う方法は、ここのカテゴリを検索すれば出てきます。[検索語:GET.CELL] ただ、今回の場合は、その相対距離がはっきりしていません。この場合、ユーザー定義関数を用いたほうがよいような気がします。


取り付け方

Alt +  F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。
次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、以下のコードを貼り付けて、

Alt + Q で、画面を閉じます。

'---------------------------------------------------
Function myColor(cell As Range, Optional パターン As Boolean = True) As Integer
'色番号を取るユーザー定義関数
'MYCOLOR(セル,[default TRUE パターン/FALSE 文字の色])
  Dim num As Integer
  Application.Volatile
  If パターン Then
   num = cell.Cells(1, 1).Interior.ColorIndex
   Else
   num = cell.Cells(1, 1).Font.ColorIndex
  End If
  If num = xlColorIndexNone Then
   num = 0
  End If
  myColor = num
End Function

'---------------------------------------------------
ワークシート上では、以下のようにして、引数に、パターンや文字の色を取りたいセル番地を入れます。

=MYCOLOR(A1) ....パターン

=MYCOLOR(A1,FALSE) ....文字の色

これをフィルターに掛ければよいです。
色を換えた場合は、F9を押して、再計算してください。

>2003でできるような降順にそろえたりは
並べ替えのことでしょうか?もう少し詳しくお願いします。

投稿日時 - 2006-01-21 10:12:25

マクロを書けば出来るよ。

投稿日時 - 2006-01-20 21:53:41

あなたにオススメの質問