2013-11-16 4 views
2

Я новичок в VBA в Excel, и у меня проблемы. У меня есть 3 столбца A, C и F. Я хочу выделить только ячейки в этих столбцах, если они соответствуют одному из двух условий. Выделите все ячейки с повторяющимися значениями в столбце A, а затем выделите ячейки только в столбцах C и F, если столбец C имеет значение 99.99 и выше, а столбец F имеет ничего, кроме «Test» в ячейке.Excel VBA, сравнить несколько значений столбца, цветные ячейки

Sub Highlight() 
Dim index As Integer 
For index = 1 To 4 
'Checks if any cells in Column C has value greater than 99.99 when Column F isn't "Test" or checks if multiple values exist in Column A (which I don't know) 
If Range("C1") And Cell.Value > "99.99" And Range("F1") And Cell.Text <> "Current" Then 
'Highlighs both cell values Yellow (this is where I run into trouble) 
Cell.Interior.ColorIndex = vbYellow 
End If 
Next index 
End Sub 
+0

не в состоянии полностью понять вопрос, лучший способ обойти бы построить, если условия или аналогичные логика первенствует формулу и преобразовать ее в vba, используя листы («sheet1»). range («a1»). formula = «= ваша формула здесь» –

ответ

0

Вы только что указали на свой пробел. Cell не был установлен. Я не мог видеть, где вы ссылались на колонку А.

Кроме того, если вы используете встроенные цветовые константы, вы должны использовать .Color не ColorIndex.

Sub Highlight() 
Dim index As Integer 
Dim ws As Worksheet 

'set the sheet to use 
Set ws = Sheet1 

    For index = 1 To 4 

    'Checks if any cells in Column C has value greater than 99.99 when Column F isn't "Test" or checks if multiple values exist in Column A (which I don't know) 
     If ws.Range("C" & index).Value > "99.99" And ws.Range("F" & index).Text <> "Current" Then 
     'Highlighs both cell values Yellow (this is where I run into trouble) 
     ws.Range("C" & index).Interior.Color = vbYellow 
     ws.Range("F" & index).Interior.Color = vbYellow 
     End If 

    Next index 

End Sub 

На боковой ноте. Возможно, вам лучше использовать Условное форматирование для достижения желаемого, а не VBA.

Существует много учебных пособий о в Интернете:

http://chandoo.org/wp/2009/03/13/excel-conditional-formatting-basics/

http://spreadsheets.about.com/od/advancedexcel/tp/090822-excel-conditional-formatting-hub.htm

+0

Спасибо То же самое за ваш быстрый ответ! Если мне нужно было также выделить повторяющиеся значения в столбце A, что бы это было? Если ws.Range ("A" & index) .Value = ????? Кроме того, я хотел бы использовать условное форматирование, но, к сожалению, есть другое кодирование, которое проверяет, имеет ли строка какой-либо выделенный цвет ячейки, и если это так, он скрывает ее. При условном форматировании он игнорирует цвет. – user2999536

+0

повторяющиеся значения во всем столбце A? Если это так, вы можете посмотреть на «WorksheetFunction.CountIf», вот вопрос stackoverflow, который может помочь вам в правильном направлении. http://stackoverflow.com/questions/1492048/function-for-detecting-duplicates-in-excel-sheet – Sam

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