セルのハイライト色に基づいて機能を実行するセルを取得しようとしています。
私が現在持っている機能は次のとおりです。
=IF(A6.Interior.ColorIndex=6,IF(ROUNDDOWN(IF(M6<3,0,IF(M6<5,1,IF(M6<10,3,(M6/5)+2))),0)=0,0,ROUNDDOWN(IF(M6<3,0,IF(M6<5,1,IF(M6<10,2,(M6/5)+2))),0)),IF(ROUNDDOWN(IF(M6<7,0,IF(M6<10,1,M6/5)),0)=0,0,ROUNDDOWN(IF(M6<7,0,IF(M6<10,1,M6/5)),0)))
そのすべてを読む必要はないので、ここにもっと簡単な例を示します
=IF(A6.Interior.ColorIndex=6,"True","False")
彼が返すのは#NAMEだけですか? 。セル内の関数としてこれを行う方法はありますか、VBAは絶対に必要ですか?
おかげで、
ヨルダン
VBA(Interior.ColorIndex
)数式でエラーが表示される理由。
VBAなしでこれを行うことはできません。
Function YellowIt(rng As Range) As Boolean
If rng.Interior.ColorIndex = 6 Then
YellowIt = True
Else
YellowIt = False
End If
End Function
ただし、これはお勧めしません。ユーザー定義のVBA関数(UDF)の使用方法ではありません。これらは、セルの色の書式設定を読み取れないExcel関数の動作を反映する必要があります。 (この関数は、Excelの将来のバージョンでは機能しない可能性があります。)
最初にセルを黄色にする元の条件(決定)に基づいて数式を作成することをお勧めします。または、Subプロシージャを実行してTrueまたはFalseの値を入力します(もちろん、これらの値は元のセルの書式設定にリンクされなくなります)。
数式からセルの色を取得する方法はないと思います。最も近いものはCELL
数式ですが、(少なくともExcel 2003の時点では)セルの色を返しません。
VBAを使用して実装するのは非常に簡単です。
Public Function myColor(r As Range) As Integer
myColor = r.Interior.ColorIndex
End Function
次に、ワークシートで:
=mycolor(A1)
これはあなたの質問に直接対処するものではありませんが、実際にはExcelでセルの色でデータを並べ替えることができます(これにより、同じ方法ですべてのレコードに特定の色のラベルを付けるのが非常に簡単になり、したがってこのラベルの条件が変わります)。
Excel 2010では、[データ]-> [並べ替え]-> [セルの色]で並べ替えを選択して、これを行うことができます。
フォントが黒の場合、別のExcelセルの値のみを表示する必要があるという同様の問題がありました。この関数を作成しました: `Option Explicit
関数blackFont(r As Range)As Boolean If r.Font.Color = 0 Then blackFont = True Else blackFont = False End If
終了関数 `
私のセルには次の式があります:=IF(blackFont(Y51),Y51," ")
これは、黒のフォントをテストし、黒のフォントがある場合にのみY51セルに値を表示するのにうまく機能しました。
私が適用した唯一の簡単な解決策は、IF
条件としてハイライトを行うプライマリ条件を再作成し、それをIF
式で使用することです。このようなもの。ハイライトの状態に応じて、式は変更されますが、再作成する必要があると思います(たとえば、20を超えるハイライト)。
=IF(B3>20,(B3)," ")