2017-08-17 7 views
-1

条件式、特に塗りつぶしの色を適用できる式またはVBAコードを、空白のセルに、 「P」で始まる特定のテキストを含むセル。私は達成しようとしているもののスクリーンショットを添付しました。特定のテキストを含むセルの左/右のセルの条件付き書式設定

Excel Screenshot

私は、テキストは「T」である場合、列Bにおけるそれの隣のセルが「P」とピンクで始まるテキストが含まれている場合は、列Aのセルの塗りつぶしの色を青に変更したいです、

これまで私が達成した方法は、マクロを使って列Fからデータをコピーし、それを列A、G、Mに貼り付け、条件付きの列に条件付き書式を適用することでした。 P "とし、塗りつぶしの色とテキストを同じ色に変更して、実線で表示します。

これはハッキーですが、残念ながら印刷すると、セルのテキストは塗りつぶしの背景色に対して表示されます。これは世界の終わりではありませんが、これを達成するためのより正しい方法があるかどうか疑問に思っています。書式設定に適用されるセルをオフセットする方法はありますか?どんな援助もありがとうございます!

答えて

0

選択列A、F及びMアクティブセルとしてF1を持ちます。次の数式を使用して新しいCFRを作成します。

=or(iferror(left(e1)="P", false), left(g1)="P") 

enter image description here

VBAでこれを作成に伴う問題は、次式です。列Aの左側には列がなく、3つの列のいずれかの共用体は、共用体の作成方法に関係なく、常に「アクティブなセル」としてA1を扱います。 .Range( "A:A、G:G、M:M")と同じです。 A1は「アクティブセル」です。一つの解決策は一時的にあなたが」に、セルのテキスト/値をしたい場合はRCは[-1]、列Aところで

Option Explicit 

Sub meh() 
    Dim refStyle As Long, xlR1C1formula As String 

    'store original reference style 
    refStyle = Application.ReferenceStyle 
    'make it xlR1C1 reference style 
    Application.ReferenceStyle = xlR1C1 

    With Worksheets("sheet1") 
     With .Range("A:A, G:G, M:M") 
      .FormatConditions.Delete 

      xlR1C1formula = "=or(iferror(left(rc[-1])=char(80), false), left(rc[1])=char(80))" 
      With .FormatConditions.Add(Type:=xlExpression, Formula1:=xlR1C1formula) 
       .Interior.ColorIndex = 5 
       .NumberFormat = ";;;" 
      End With 

      xlR1C1formula = "=or(iferror(left(rc[-1])=char(84), false), left(rc[1])=char(84))" 
      With .FormatConditions.Add(Type:=xlExpression, Formula1:=xlR1C1formula) 
       .Interior.ColorIndex = 22 
       .NumberFormat = ";;;" 
      End With 
     End With 

     'switch back 
     Application.ReferenceStyle = refStyle 
    End With 
End Sub 
+0

の左に存在しない列を参照するために使用することができxlR1C1に切り替えることであろう「消えて」フォントの色を設定しないでください。 ';;;'のカスタム番号書式を設定します。 – Jeeped

+0

これらの優れたソリューションの両方にお応えいただきありがとうございます。しかし、私はvbaでこれを実装するのに少し問題があります。私は手動でGIFであなたのソリューションに従うと完全に期待どおりに動作しますが、私はマクロを使用しようとすると、列Mはフォーマットされていません。ここ[コード](http://imgur.com/a/loQWj)私は使用しています。ここには[結果](http://imgur.com/a/8CEwo)があります。どんな助けでもいつも感謝しています! – jsweeney

+0

上記のVBAソリューションを参照してください。引用符で囲まれた文字列内で二重引用符を倍にすることは嫌いなので、char(80)とchar(84)を使ってPとTを判別しました。 – Jeeped

0

私はどうしたらまず最初に名前を定義>数式で定義名を作るです>次の式で、ここと呼ばれる、名前を定義します。

=INDIRECT(ADDRESS(ROW(),COLUMN(),4))

を次に、ホーム>スタイル下>条件付き書式を>新規ルール、あなたが影響を受けることにしたいセルに次の式を使用します。

=IF(AND(Here="",OR(LOWER(LEFT(OFFSET(Here,,1),1))="p",LOWER(LEFT(OFFSET(Here,,-1),1))="p")),TRUE,FALSE)

関連する問題