- ベストアンサー
エクセル オートフィルタ、文字色で抽出
エクセル_2000なのですが、オートフィルタ等で、テキストの色が違う部分(たとえば、文字色「赤」のみ)抽出するような方法はありませんでしょうか。 VBAはあまりわかりませんので、アドインでそのようなものがあると有難いのですが・・。ご存知のかた、教えてくださいませ。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
作業列を使う方法です。 A列に色分けされたデータが入力されてあるとします。 B1セルを選択して 「挿入」→「名前」→「定義」を選択し、「名前の定義」画面を表示します。 名前に「color」 参照に「=GET.CELL(24,sheet1!$A1)」 と入力し「OK」を押して「名前の定義」画面を閉じます。 ※sheet1!$A1のところにはデータが入力されているセル番地を入力します B1セルに =color と入力し、必要な件数分コピーします。 あとはオートフィルターで作業列が「0と等しくない」で抽出できるはずです。 因みに、赤なら3という数字が出るはずです。 これは「4.0マクロ関数」というものを使用した方法です。 一般的な関数などでは文字色による判定などはできません。 「4.0マクロ」を使ったブックを保存した場合、次に開いたときに 「このブックには Microsoft Excel 4.0 マクロが~」というメッセージが出ると 思います。 これが出ないようにするには 「=color」と入力したセルすべてを選択→コピー→値のみ貼り付け→ 「挿入」→「名前」→「定義」を選択し、「名前の定義」画面を表示→ 「color」を選択→削除→「OK」 として保存します。 この作業をした後に文字色を変更した場合はもう一度始めから設定しなおしてください。 メッセージが出てもかまわないのであれば、出る度に「はい」を選択してください。
その他の回答 (2)
- banker_U
- ベストアンサー率21% (17/78)
#2です。ちょっと補足。 #1さんの方法も、#2さんの方法も、リアルタイムには反応しません。式を入力したときの文字の色を読むだけです。 リアルタイムにしようとするとちょっと面倒。
- banker_U
- ベストアンサー率21% (17/78)
こういう質問多いですよねえ。 #1の方のおっしゃるように、特殊なやり方をしないとできません。 目的にもよりますが、一般的には、テキストの色が赤色になっていると言うことは、赤色にした理由(判断根拠)があるはずです。 その根拠を、数式化して補助列に入れ、オートフィルタ等使う方がいいと思います。 VBAが多少わかるなら、下記のユーザー定義関数を使ってみてもいいでしょう。 Function GetColor(gc As Range) As Integer GetColor = gc.Font.ColorIndex End Function