Formatação condicional: 3 escala de cores mostrando a relevância do texto no Excel para Mac

1

Existe uma maneira de usar a formatação condicional da seguinte maneira no Excel? (Para aqueles que estão curiosos, estou usando o Excel 2010 para Mac)

Eu quero que o Cell B2 fique verde quando A2 diz "John gosta de maçãs verdes" e B2 também diz "John gosta de maçãs verdes", amarelo se A2 diz "John gosta de maçãs verdes" e B2 diz "Bill gosta de maçãs azuis" e vermelho se A2 disser "John gosta de maçãs verdes" e B2 disser "Bill odeia laranjas vermelhas".

Estou apenas imaginando se existe uma maneira de fazer algo para esse efeito.

Obrigado

    
por enano2054 14.05.2014 / 22:38

3 respostas

2

Claro. Selecione a célula B2 e vá para separador Página inicial > Estilos group > Formatação condicional > Nova regra > Use a fórmula para determinar quais células devem ser formatadas

Digite esta fórmula:

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

Defina o conjunto do formato para preencher verde.

Repita para cada cor e regra adicional.

    
por 15.05.2014 / 08:17
0

Isso definitivamente exigiria o VBA. A função a seguir retornará um valor de 0 a 1 (ou seja, uma porcentagem) de valores que correspondem a na mesma posição . Use isto da mesma forma que você usaria uma função interna. Você pode aplicar a formatação condicional normal a esse valor.

Ele tem um opcional True / False (padrão false) para saber se deve fazer distinção entre maiúsculas e minúsculas.

"Bob comeu o jantar" vs "Bob comeu o jantar". seria 0,66, pois não ignora a pontuação.

"Bob Bob Bob Bob" vs "Bob Bob" = 2/4 = 0,5 - quando as sequências contêm um número diferente de palavras, o maior dos dois é o denominador, mas o numerador atinge o máximo dos dois. .

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
    
por 15.05.2014 / 17:00
0

Sua pergunta também não está totalmente clara. O nome real importa (John, Bill)? A fruta importará? Ou é cerca de 3 condições

  1. Correspondência de nomes e sentimentos em relação ao jogo de frutas
  2. Nomes não combinam, mas sentimentos em relação ao jogo de frutas
  3. Os nomes não correspondem e os sentimentos em relação à fruta não correspondem

Eu assumi que a única coisa que importa é o nome da pessoa e se ela tem o mesmo sentimento em relação a alguma coisa. Portanto, o nome da pessoa pode ser qualquer coisa e, se Bill e Claire odeiam a fruta, eu assumi que também é uma laranja. Você tem o código agora, então deve ser fácil de corrigir!

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

    
por 15.05.2014 / 16:05