1

Есть ли способ использовать условное форматирование в Excel следующим образом? (Для тех, кому интересно, я использую Excel 2010 для Mac)

Я хочу, чтобы ячейка В2 была зеленой, когда А2 говорит "Джон любит зеленые яблоки", а В2 также говорит "Джон любит зеленые яблоки", желтый - если А2 говорит "Джон любит зеленые яблоки", а В2 - "Билл любит синие яблоки", а красный - если А2 говорит: "Джон любит зеленые яблоки", а В2 говорит: "Билл ненавидит красные апельсины".

Мне просто интересно, есть ли способ что-то на этот счет.

Спасибо

3 ответа3

2

Конечно. Выберите ячейку B2 и перейдите на вкладку « Главная »> группа « Стили »> « Условное форматирование» > « Новое правило» > « Использовать формулу», чтобы определить ячейки для форматирования

Введите эту формулу:

=AND(A2="John likes green apples",B2="John likes green apples")

Установите формат для заливки зеленым.

Повторите для каждого дополнительного цвета и правила.

0

Твой вопрос тоже не совсем понятен. Имеет ли значение настоящее имя (Джон, Билл)? Будет ли плод иметь значение? Или около 3 условий

  1. Имена совпадают и чувства к фруктам совпадают
  2. Имена не совпадают, но чувства к фруктам совпадают
  3. Имена не совпадают, а чувства к фруктам не совпадают

Я предположил, что единственное, что имеет значение, это имена людей, и если у них есть то же чувство к чему-то. Поэтому имя человека может быть любым, и если Билл и Клэр ненавидят фрукт, я предположил, что это тоже апельсин. Теперь у вас есть код, поэтому его легко изменить!

Sub Button1_Click()

Dim row As Integer
row = 1
Do While (True)

If Range("A" & row).Value = "" Then
    Exit Do
End If

Dim score As Integer
score = 0

Dim wordsA() As String
wordsA = Split(Range("A" & row).Value, " ")

Dim wordsB() As String
wordsB = Split(Range("B" & row).Value, " ")

If wordsA(0) = wordsB(0) Then
    score = score + 1
End If

If wordsA(1) = wordsB(1) Then
    score = score + 1
Else
    score = score + 3
End If


'2 = both same name, both feel same way
'1 = different name, both feel same way
'3 = differet feelings

Select Case score
   Case 1
   Case 4
Range("B" & row).Interior.ColorIndex = 46

   Case 2
   Range("B" & row).Interior.ColorIndex = 43

   Case 3
Range("B" & row).Interior.ColorIndex = 30


End Select

row = row + 1

Loop

End Sub

0

Это определенно потребует VBA. Следующая функция вернет значение от 0 до 1 (то есть в процентах) от значений, которые совпадают в той же позиции. Используйте это так же, как если бы вы использовали встроенную функцию. Затем вы можете применить нормальное условное форматирование к этому значению.

Он имеет необязательное значение True/False (по умолчанию false), указывающее, нужно ли учитывать регистр символов.

"Боб ел ужин" против "Боб ел ужин". будет 0,66, так как он не игнорирует пунктуацию.

"Боб Боб Боб Боб" против "Боб Боб" = 2/4 = 0,5 - если в строках содержится разное количество слов, знаменатель имеет большее из двух значений, но числитель достигает максимума при меньшем из двух значений.

Function ScorePair(stringInput As String, stringTarget As String, Optional caseSensitive As Boolean = False) As Double

Dim scoreNum As Integer
Dim scoreDen As Integer
Dim splitInput As Variant
Dim splitTarget As Variant
Dim theScore As Double
Dim sizeTarget As Integer
Dim sizeInput As Integer
Dim loopSize As Integer

'Initialize
scoreNum = 0
i = 0

'Extract strings into arrays of words
splitInput = Split(stringInput, " ")
splitTarget = Split(stringTarget, " ")

'Get sizes of arrays to know how much to loop (smaller of two) and what to set denominator at (bigger of two)
sizeInput = UBound(splitInput, 1)
sizeTarget = UBound(splitTarget, 1)
scoreDen = WorksheetFunction.Max(sizeTarget, sizeInput) + 1
loopSize = WorksheetFunction.Min(sizeTarget, sizeInput)

'Loop through arrays comparing them by matching position
For i = i To loopSize
    If caseSensitive Then
        If splitInput(i) = splitTarget(i) Then
            scoreNum = scoreNum + 1
        End If
    ElseIf LCase(splitInput(i)) = LCase(splitTarget(i)) Then
        scoreNum = scoreNum + 1
    End If
Next

'Calculate the score as percentage
theScore = scoreNum / scoreDen
ScorePair = theScore

End Function

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .