2017-07-21 15 views
0

条件付きでセルをフォーマットすることはできますか?フォーマット一致する式がある場合はセルの列が一致し、隣接するセルが空白の場合

MYシートは次のとおりです。 列Bはセルを日付形式で保持し、列Pも日付形式を保持します。

私は条件付きで列Bのセルを整形しています。

=NOW()-30は(彼らは30日以上経過している場合には、細胞を記入)

これはうまく動作します、しかし、私はそれと並んで入力別の条件をしたいと思いますので、とき列Pのセルの書式設定にのみに、適用されます同じ行は空白です。

私はこれがこのように見えることを望んでいましたが、うまくいきません。

=AND((ISBLANK($P)),((NOW()-30))) 

ご協力いただきありがとうございます。

+0

VBAを使用してこれらの数式を追加するか、セルに直接入力していますか? – Chawin

+0

'= AND(NOT(ISBLANK($ P))、((NOW() - 30)))' - '$ P'を使うことは無効です。 'OFFSET'関数を見たり、R1C1スタイルのリファレンスを検討したりすることができます。 –

+0

リボンの条件付き書式設定ボタンを使用しています。ありがとうございます。 – Uhujkill

答えて

0

私はVBAマクロを作成することをお勧めします(私の意見でははるかに簡単で明確です)。 forループを作成し、cell.valueを使用して値を比較するか、cell.formulaを使用して列全体をループして式を取得します。 variantテーブルに値をコピーすることで処理速度を向上させることができます。これにより、時間のロスを最小限に抑えてすべての操作を実行できるようになります(大きなデータベースを処理するのに最適)。あなたのコードから欠落していますそのすべてが行数である

if(range(cells(2,1), cells(2,bottomrow)).formula = "formulahere" AND range(cells(16,1), cells(16,bottomrow)).value = "") Then 
'--your actions-- 
end if 
+0

こんにちはDiveye、このコードは、ファイルを開くたびに実行されますか?私はマクロを実行しているユーザーを排除しようとしています。気にして申し訳ありません。 – Uhujkill

+1

こんにちはUhujkill、もちろんこれは毎回起動することができます。 VBAプロジェクトファイル内のMicrosoft Excelオブジェクトに移動し、 "ThisWorkbook"コンポーネントを探して、 "Private Sub Workbook_Open()"サブを作成するだけです。このSubは、ワークブックが開かれるたびに実行され(したがって、いつでも誰かがあなたのExcelファイルを開く)、あなたのサブコマンド内に挿入されたコマンドを実行します。こうすることで、あなたが望むすべてのアクションを簡単に設定し、起動時に実行させることができます。 VBA for Excelの使用方法の詳細については、このチュートリアルをご覧ください:http://www.excel-easy.com/vba.html – Diveye

0

: ダブル条件条件付き整形用として、それはこのような何かを与えるだろう!

あなたの条件付き書式は、最初の行で開始すると仮定すると:

=AND(NOT(ISBLANK($P1)),($B1 <= (NOW()-30))) 

$文字が条件付き書式が上で実行されるにかかわらずセルの列(又は行)が同じままであることを確実にします。

行番号の前に$を含めないと、各行に対して条件付き書式が動的に変更されます。

+0

これは問題ではありません。問題は '(NOW() - 30)'は**常に**真であると言います。ブール型にキャストされた場合は '2017-06-21 13:42'のようなものを返します。詳細については、[my answer](https://stackoverflow.com/a/45236764/3219613)を参照してください。 –

+0

@Peh ahはい、感謝します。式の他の半分は条件付き書式を式ベースに変更するときに処理する必要があることを完全に忘れています – Chawin

1

条件付き書式設定の式を使用する場合、式の結果がtrueの場合、セルが書式設定されます。

ここでの問題はある2017-06-21 13:31 のようなもので=NOW()-30結果が常にtrueかのブールにキャストということです。

したがって、日付が30日より古い場合にのみセルを書式設定する場合は、そのセルに対してチェックする必要があります。例えば。セルB1用:=(B1<=NOW()-30)

セルには=AND(ISBLANK($P1), ($B1<=NOW()-30))のようなものを入れてから、他のセルにコピーしてください。

0

条件付き書式設定ウィンドウの次の数式を列Bに適用すると、それが機能するようになりました。

=($B1<=NOW()-365)*($P1="") 

この式は唯一の365日以上である...セルB1に、日付を確認した後、細胞をフォーマットし、列Pに隣接するセルは空白になっています。 これで必要なパラメータを満たしています。

関連する問題