2016-01-29 5 views
0

У меня есть формула excel, которая делает простой счет if. Тем не менее, я хочу добавить условие к этому, если встречный изменит цвет заливки ячейки. Пример: В листе 1 ячейки A1 У меня есть «XXX». В листе 1 ячейки A2 у меня есть логическое значение «True». В листе 2 ячейки B1, у меня естьExcel countIf + функция конкатенации

=COUNTIF(A1,"*XXX*") 

То, что я хочу сделать, это сказать, что если в листе 1 ячейку A1 У меня есть XXX и Лист 1 Ячейка А2 «True», то в листе 2 ячейки B1 я должен иметь «1» отображается в красной ячейке

Альтернативой цветовому кодированию было бы сказать, что если ячейка A1 листа 1 имеет логическое значение «True», а ячейка A1 1 имеет XXX, то на листе 2 ячейки B1, I должен отображаться «1R».

Любая помощь приветствуется

ответ

1

Если вы хотите сделать это с помощью VBA, этот код будет делать то, что вы хотите:

Option Explicit 
Sub test() 

Dim wb As Workbook 
Dim ws1 As Worksheet, ws2 As Worksheet 
Dim Lastrow As Long 
Dim i As Long 

Set wb = ThisWorkbook 
Set ws1 = wb.Sheets("Sheet1") 'Change the name of your sheet 
Set ws2 = wb.Sheets("Sheet2") 'Change the name of your sheet 

Lastrow = ws1.Cells(Rows.Count, 1).End(xlUp).Row 

For i = 1 To Lastrow Step 2 

    If ws1.Cells(i, "A") = "SEC" And ws1.Cells(i + 1, "A") = True Then 
     ws2.Cells(i, "B") = 1 
     ws2.Cells(i, "B").Interior.Color = RGB(255, 0, 0) 
'  ws2.Cells(i, "B") = "1R" ' Alternate to the color coding 
    End If 

Next i 

End Sub 

EDIT:

код основан на commnents ниже

Option Explicit 
Sub test() 

Dim wb As Workbook 
Dim ws1 As Worksheet, ws2 As Worksheet 
Dim Lastrow As Long 
Dim i As Long, c As Long 

Set wb = ThisWorkbook 
Set ws1 = wb.Sheets("Sheet1") 'Change the name of your sheet 
Set ws2 = wb.Sheets("Sheet2") 'Change the name of your sheet 

i = 3 
    For c = 7 To 25 


     If ws2.Cells(i, "K") > 0 And ws2.Cells(i, "L") = False Then 
      ws1.Cells(3, c).Interior.Color = RGB(255, 0, 0) 

     ElseIf ws2.Cells(i, "K") > 0 And ws2.Cells(i, "L") = True Then 
      ws1.Cells(3, c).Interior.Color = RGB(0, 255, 0) 
     End If 
i = i + 2 

Next c 


End Sub 
+0

@FatOwl Я не уверен, что понял. Что вы подразумеваете под «сопоставить соответствующие строки»? Это означает, что 'Sheets (1) .Range (" G3: Y12 ")' будет таким же, как 'Sheets (2) .Range (" G3: Y12 ")'? И на каком листе вы хотите изменить цвет, Sheet (1) или Still Sheet (2)? – manu

+0

@FatOwl сообщите мне, если это то, что вы задерживаете – manu

+0

это замечательно !!! Большое вам спасибо –

0

Я думаю, что самый простой способ заключается в использовании Условное форматирование, который можно найти в Start> Стили.

  1. Выберите ячейку, в которой вам нужно цвет, чтобы изменить
  2. Добавить новое правило
  3. Сделать формула зависит
  4. Используйте формулу =(Sheet1!A2=TRUE)
  5. Формат образец ячейки ниже, чтобы соответствовать вашим требованиям
  6. Добавить новое правило для каждого цвета, который вы хотите (в случае, если вы предпочитаете зеленый цвет для товаров типа FALSE, например)
+1

После того, как у вас есть набор правил, он работает как любая другая формула в этой ячейке. Вы можете перетащить его, если хотите. Просто убедитесь, что вы не исправите ссылку (нажатие ячеек из редактора правил автоматически добавит маркеры '$' к ссылке на ячейку). Код VBA, предложенный @manu, также является опцией, но тогда вы должны использовать .xlsm filetypes. –

0

В качестве альтернативы вы можете сказать: =if(and(a1="sec",a2="true"),1,"False Text") Это вернет только 1 или вы можете изменить на «1R», если оба a1 и A2 вернут тест, который вы положили в оператор и.

Смежные вопросы