基本的には奥の細道さんのおっしゃる通りでVBAになるのですが、シート式でもMacro4を使うことによってColor Indexを取得できないわけではありません。(まあ、これもマクロですけど)
色が判別できればそれを利用して、後はなんとでもなるわけです。
ただし、Macro4は前時代の遺物ですので、何時廃止されるかわかりませんし、まともなドキュメントも入手できませんからお勧めしません。
単に参考情報とお考えください。
以下は2007年にMiyhanさんがニュースグループに投稿された記事です。
なお、カラーインデックスの取得の部分はExcel2010でもxlsmで保存すれば機能することを確認してあります。
「名前」機能を経由して Excel4Macro 関数を使う例です。
Excel2000 SP3/Excel2002 SP3 の場合、マクロのセキュリティオプションが
「高」でも機能します。
Excel2003 SP2 の場合は、セキュリティオプションは中以下でマクロを有効に
する必要があります。
Excel2007 は SP1 のリリース前ですし、当面確認する予定はありません。
「挿入」→「名前」→「定義」にて、以下の名前を定義します。
名前 参照範囲
Book =GET.CELL(66,INDIRECT("A1"))
Sheet =SUBSTITUTE(GET.CELL(32,INDIRECT("A1")),"["&Book&"]","")
Sheets =SUBSTITUTE(GET.WORKBOOK(1),"["&Book&"]","")
LeftCell =OFFSET(INDIRECT("RC",FALSE),,-1)
FillColor =GET.CELL(63,LeftCell)
CharColor =GET.CELL(24,LeftCell)
任意のセルに以下の数式を入力すると、各種情報が表示されます。
=Book :入力したセルのあるブック名
=Sheet :入力したセルのあるシート名
=Sheets :入力したセルのあるブック内のシート名配列
水平なセル範囲を選んで配列数式として入力のこと。
垂直なセル範囲の場合は、=TRANSPOSE(Sheets)。
=Index(Sheets,n) :n は整数として、n 番目のシート名
シート名変更/シート削除時には自動更新されますが、シート挿入時には
他セルに書式以外の変更があるか、手動再計算を実行しないと更新されません。
=FillColor :左隣セルの塗りつぶし色インデックス番号
=CharColor :左隣セルの(先頭の)文字色インデックス番号
A列に入力すると、左側のセルがないのでエラーになります。
書式の変更だけの場合は、再計算がトリガーされませんので更新されません。
上記数式を入力したセル範囲を別のシートへコピーしようとすると、
エラーメッセージが表示され、最悪の場合はクラッシュしますのでご注意。
--
Miyahn
Microsoft MVP for Microsoft Office - Excel(Jan 2004 - Dec 2007)
Miyahn's Archive: http://homepage2.nifty.com/miyahn/