- ベストアンサー
エクセルのオートフィルタで色を選択できますか?
エクセルの2000を使っています。 オートフィルタで文字ではなく色を選択したいのですが可能でしょうか? あと2003でできるような降順にそろえたりはアドインなどを使ってできないでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
エクセルでは、セルの情報として、メモリに記憶される場所が、値と色属性(文字色、背景色)は別場所のようです。関数はもちろん、まだまだ、値(だけ)を問題にしている事項は多く、オートフィルタもその例のようです。しかしつまるところは、色を識別するコードという値で記憶されていると思いますが、場所が違い仕組みが違うということで、いつの日か、色も対象にフィルタが掛けられるよう、改定されるかも知れません。 さて、色のコードは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
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 オートフィルタで色を扱うには、色番号(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でできるような降順にそろえたりは 並べ替えのことでしょうか?もう少し詳しくお願いします。
- legacy_bp5_20r
- ベストアンサー率23% (400/1688)
マクロを書けば出来るよ。